Create Custom Fog Registration menu

From FOG Project
Jump to: navigation, search

In this example we will be using the Fog manual (Full Host Registration) process as a template, but slightly customizing it so that it only prompts for PC name Image ID and also automatically assigns the PC to the Windows 7 OS ID.


Firstly we will need to edit the Init.gz image (Modifying_the_Init_Image)

open a terminal and enter the following

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

Navigate to /tftboot/fog/images/initmountdir/bin

Make a copy fog.man.reg

Rename the copy to fog.custom.reg

Open fog.custom.reg

Make the following changes (Red = Remove code, Blue = Add code)

Lines 73-81

host="";
ip="";
imageid="";
osid="NQ==";   
primaryuser="";
other1="";
other2="";
blImage="";
blDoAD="";

(note "NQ==" is the number 5 'Windows 7' encoded in base64)

Delete the following code to remove the prompt for IP address

Lines 88-91

 echo
 echo -n "    Enter the ip for this computer: ";
 read ip;
 ip=`echo $ip | base64`;

Delete the following code to remove the prompt for OS ID

Lines 109-123

 while [ "$osid" = "" ] 
 do
 echo
 echo -n "    Enter the OS ID for this computer (? for listing): ";
 ....
 ....
 osid=`echo $osid | base64`;		
 fi
 done

Delete the following code to remove the prompt for adding to Active directory

Lines 125-140

 if [ "$blDoAD" = "" ] 
 then
 echo
 ....
 ....
 esac
 fi

Delete the following code to remove the prompts for Primary User, Tag 1 and Tag 2

Lines 142-155

 echo
 echo -n "    Enter the primary user for this computer: ";
 read primaryuser;		
 primaryuser=`echo $primaryuser | base64`;		
		
 echo
 echo -n "    Enter the other tag #1 for this computer: ";
 read other1;	
 other1=`echo $other1 | base64`;
		
 echo
 echo -n "    Enter the other tag #2 for this computer: ";
 read other2;		
 other2=`echo $other2 | base64`;

Make the following changes to so only the fields we have data for is sent back to the fog server

Lines 202-204

res=`wget -O - --post-data="mac=${mac}&advanced=1&host=${host}&ip=${ip}&imageid=${imageid}&osid=${osid}
&primaryuser=${primaryuser}&other1=${other1}&other2=${other2}&doimage=${realdoimage}&doad=${blDoAD}"

Now save this document as fog.custom.reg

Navigate to /tftboot/fog/images/initmountdir/etc/init.d

Open S99Fog and add the following lines

elif [ "$mode" == "clamav" ]; then
run="/bin/fog.av";
after=$afterActionTerm;
elif [ "$mode" == "customreg" ]; then
run="/bin/fog.custom.reg";
after=$afterActionTerm;
elif [ "$mode" == "autoreg" ]; then
run="/bin/fog.auto.reg";
after=$afterActionTerm;

Save this document

We now need to recreate the init.gz file with these new settings open a terminal window and type

cd /tftpboot/fog/images
umount initmountdir/
rmdir initmountdir
gzip init


Finally we can add another menu option in the PXE boot menu so we can boot into our custom Registration process

navigate to /tftpboot/pxelinux.cfg

Open the file named default and add the following code (where you add this will depend on where in the menu you would like it to appear)

 LABEL fog.customreg
 kernel fog/kernel/bzImage
 append initrd=fog/images/init.gz  root=/dev/ram0 rw ramdisk_size=127000 ip=dhcp dns=*.*.*.* mode=customreg web=*.*.*.*/fog/ quiet
 MENU LABEL Custom Host Registration and Inventory

NOTE the * should be replaced with your DNS and Fog Server IP addresses (check what the fog.reg and fog.reginput entries are and use the same)

Thats it. Now when you boot your PC your PXE menu should have a new menu option called "Custom Host Registration" If you select this option you will go through the Fog registration and you will only be prompted for the PC name, The Image ID and whether or not you want to image the PC Now, by default the PC will have the Windows 7 OS ID