Difference between revisions of "Modifying the Init Image"

From FOG Project
Jump to: navigation, search
(By Hand)
 
Line 1: Line 1:
 
==Modifying the Boot Image==
 
==Modifying the Boot Image==
If you wish to modify the way that the pxe/tftp works files in the /tftpboot directory can be edited.
+
If you wish to modify the way that the pxe/tftp works init files can be edited - run '''as root''' to be able to loop mount:
===Using scripts===
 
Modifying the boot image is easy to do. FOG comes with a script that enables you to easily modify the init image.
 
  
The script mounts the image and decompress it so you can view its files to modify them, however it tries to open nautilus to show you the files. Bear in mind that if you have no GUI (or your connected via ssh) you will have to browse the files manually in
 
 
/tmp/tmpMnt/
 
 
To run the script execute the file in here
 
 
/opt/fog/utils/Boot Image Editor/FOGMountBootImage.sh
 
 
That will execute the script, when your done modifying the Init image hit Enter and the file will be re compress and set ready to use.
 
 
===By Hand===
 
Or, to do it by hand:
 
==== Version 0.32 and below ====
 
 
<pre>
 
<pre>
cd /tftpboot/fog/images
+
cd ~
gunzip init.gz
+
cp /var/www/html/fog/service/ipxe/init.xz .
mkdir initmountdir
+
xz -d init.xz
 +
mkdir -p initmountdir
 
mount -o loop init initmountdir
 
mount -o loop init initmountdir
 
</pre>
 
</pre>
  
After you're done making changes, you have to clean up and unmount the init image:
+
Now you find the uncompressed content of the initrd in <tt>~/initmountdir</tt> and can make adjustments as needed. After you're done making changes, you have to unmount, re-compress and copy back the init image:
<pre>
 
cd /tftpboot/fog/images
 
umount initmountdir/
 
rmdir initmountdir
 
gzip init
 
</pre>
 
  
==== Version 1.0.0 and up ====
 
 
<pre>
 
<pre>
cd /var/www/{html,}/fog/service/ipxe/
+
cd ~
xz -d init{,_32}.xz
+
umount initmountdir
mkdir initmountdir
+
xz -C crc32 -9 init
mount -o loop init{,_32} initmountdir
+
cp init.xz /var/www/html/fog/service/ipxe/
 
</pre>
 
</pre>
  
After you're done making changes, you have to clean up and unmount the init image:
+
You want to apply the same changes to the 32-bit init file as well! Follow the same steps outlined above but using the filename <tt>init_32.xz</tt> instead.
<pre>
 
cd /var/www/{html,}/fog/service/ipxe/
 
umount initmountdir
 
rmdir initmountdir
 
xz -C crc32 -9 init{,_32}
 
</pre>
 
  
 
==Examples==
 
==Examples==

Latest revision as of 10:45, 18 December 2020

Modifying the Boot Image

If you wish to modify the way that the pxe/tftp works init files can be edited - run as root to be able to loop mount:

cd ~
cp /var/www/html/fog/service/ipxe/init.xz .
xz -d init.xz
mkdir -p initmountdir
mount -o loop init initmountdir

Now you find the uncompressed content of the initrd in ~/initmountdir and can make adjustments as needed. After you're done making changes, you have to unmount, re-compress and copy back the init image:

cd ~
umount initmountdir
xz -C crc32 -9 init
cp init.xz /var/www/html/fog/service/ipxe/

You want to apply the same changes to the 32-bit init file as well! Follow the same steps outlined above but using the filename init_32.xz instead.

Examples

Adding sfdisk to the /sbin directory

This will add the sfdisk program into the boot environment:

cd /tftpboot/fog/images
gunzip init.gz
mkdir initmountdir
mount -o loop init initmountdir
init is now ready for modification. Make your changes:
cp /sbin/sfdisk /tftpboot/fog/images/initmountdir/sbin
Modifications Complete. Unmount and re-gzip it:
umount initmountdir
rmdir initmountdir
gzip init
Now you can use the sfdisk program from the PXE environment.

Remove Authentication from Quick Image

This example will show how to automatically authenticate users when they select Quick Image. If you are happy to allow anybody to deploy an image to a hardrive this is for you.

cd /tftpboot/fog/images
gunzip init.gz
mkdir initmountdir
mount -o loop init initmountdir
cd /tftpboot/fog/images/initmountdir/bin/

Edit fog.quickimage
Comment out the followig lines by putting a # in front

 #echo "  Enter a valid FOG username and password.";
 #echo "";
 #echo -n "      Username: ";
 #read username;
 #echo ""
 #echo -n "      Password: ";
 #stty -echo
 #read password;
 #stty echo;
 #echo "";
 #echo ""

Replace with:

 username="a valid username"
 password="a valid password";
Save the modification
cd ../..
umount initmountdir/
rmdir initmountdir
gzip init

You are done and now users can image without the need for a username and a password.