Modifying Boot Menu
-
I can’t seem to find a straight forward answer to this. FOG seems to be the right choice for what I need to do, but…I don’t need the management side of the PXEMaster. I’ve looked up and tried a few different ways to implement this and I just can’t figure it out, hoping someone on here can help. I have a client that needs to be able to re-image their laptops without me being there, I can understand this since one of the sites is halfway across the Province from me…
So I came across FOG, which will create images and distribute them for me, GREAT, but I don’t need some of the management things, like host registration and tasks. I found one link to accomplish this:
https://wiki.fogproject.org/wiki/index.php?title=Bypass_Host_Registration
However, I just can’t wrap my head around the instructions. I figured out I could go into the BootMenuClass.php to find the options displayed in the menu that iPXE boots into…fantastic…however this is where I’m stuck
- I want to remove items from it - the client will never be in here and need to boot from hard disk, they will never ever be running memtest…
and - Add links to specific images that are pulled from 2 Laptop models.
The Management interface would only be for myself to be able to create new copies of the images being sent to their locations, this is done for version control so that I don’t have someone say “oops” and overwrite the image for their laptop and then me trying to figure out what they did wrong…hence the lack of needing management capabilities for laptops enmass.
So if I had to give an example I’d probably want something like:
:t420tech
kernel bzImage32 root=/dev/ram0 rw ramdisk_size=127000 ip=dhcp dns= keymap= web=10.84.52.195/fog/ consoleblank=0 loglevel=4 mode=manreg
imgfetch init_32.xz
boot || goto MENU
:t420tm
kernel bzImage32 root=/dev/ram0 rw ramdisk_size=127000 ip=dhcp dns= keymap= web=10.84.52.195/fog/ consoleblank=0 loglevel=4 mode=autoreg
imgfetch init_32.xz
boot || goto MENU
:t500tech
kernel bzImage32 root=/dev/ram0 rw ramdisk_size=127000 ip=dhcp dns= keymap= web=10.84.52.195/fog/ consoleblank=0 loglevel=4 mode=sysinfo
imgfetch init_32.xz
boot || goto MENU
:t500tm
kernel bzImage32 root=/dev/ram0 rw ramdisk_size=127000 ip=dhcp dns= keymap= web=10.84.52.195/fog/ consoleblank=0 loglevel=4 mode=sysinfo
imgfetch init_32.xz
autoboot…but I haven’t the foggiest idea how to tell the server to pull up the image files properly…or where I can add this in…my brain is running on empty so nothing is really sinking in from the docs…if someone can give me some insight on this it’d be appreciated.
Essentially I just want them to be able to boot up…and say “Oh this is a tech’s Lenovo T420, so I’ll highlight T420 Tech and press Enter” and it’ll pull THAT specific image from the FOG server…
- I want to remove items from it - the client will never be in here and need to boot from hard disk, they will never ever be running memtest…
-
Let me first say, welcome to the FOG Project.
Second lets make sure we understand what version of FOG you are using and let me also say if you are not on FOG 1.3.0-RCx then you need to be then you can do away with all of the messing around with pxe boot menus.
From there if you don’t want to take advantage of all of the features of FOG then you don’t need to register them. With the new version of fog there is a pxe boot menu item already called quick image (or maybe they changed it to quick or immediate deploy, I can’t remember) but from that menu you can select the image type and then FOG will deploy that image to the target computer right away. You don’t need to touch the fog console, that can all be done right from the target computer.
Now from the Windows side, you need to decide if you will create a hardware specific image with all of the proper drivers in the sysprep image, or you will create a single windows image and then deploy the proper windows drivers based on the hardware model of the system you are deploying to. There are different approaches depending on the direction you want to go with.
-
@george1421 said in Modifying Boot Menu:
With the new version of fog there is a pxe boot menu item already called quick image (or maybe they changed it to quick or immediate deploy, I can’t remember)
It’s called Image Deploy.
-
@mbarker
all this can be done using just fog webui (i think).My idea (if i understood your problem):
1 - in iPXE Menu Configuration, change options that you want to hide from your client to “do not list on the menu”
2 - let “fog.deployimage” and “fog.local” visible to all hosts. Adjust them as needed. Example: if you dont need asks for password and other things.
3 - when you boot the laptop, you will see only these options, if you dont touch anything, then local disk will be loaded.
If you choose “Deploy Image” you will see another menu with all of your images, if you name them appropriately, will be easy to identify and select the image to deploy. -
A slight alteration on Thiago’s process (which is spot on) is in step 3 to not configure the target computer to boot through the FOG server. Have the local hard drive default and have the client just press the F12 key during booting and then pick the Network adapter as the boot device. That way FOG will only be used during image.
-
Hey everyone, thanks for the responses - I was tied up most of the time after I posted so this is the first I was able to get back to this.
2 things:
- Instead of trying to figure out if I could upgrade from 1.2 to 1.3RC10 I just created a new VM, installed CentOS 6, GIT, and installed from the GIT repo for 1.3 RC10
and
- The version of PHP installed by 1.3.0 RC10 needs upgrading away…it installed 5.3.3, minimum is 5.5 - I upgraded PHP and it was fine after that.
There are a fair number of changes to the menus in this version…as well as some of the imaging options (for the better so far - I’ve only been on it for about 10 min or so…)
I’m going to add an image to the system to make sure that’s fine and then I’ll go from there (it takes a while since it’s a larger image (compressed it’s 21 gigs…)…once I have this image and an image of the other laptop, I’ll mess about in the menus but there is a “Deploy Image” option in the menu which wasn’t there before.
The only question I have right now is…if I’m not using DHCP to set TFTP options on boot, is there any way to bypass it asking me for the TFTP Server? (Can’t use the DHCP options on my clients networks, their IP Phones use the options already, so DNSMASQ with ProxyDHCP works all the same for me…but I don’t want them to have to type in the IP of the TFTP server each time it PXE boots.
@george1421
That’s the idea anyways, I don’t want them booting off PXE unless they NEED to, so my instructions already included using the F12 option (I don’t need these people complaining that they messed up the boot order on their computer…since they have a hard time typing subdomain.domain.com sometimes…lol I don’t care if they image with the wrong image (the 2 laptop Models aren’t all that different, just a few drivers here and there are different)
I’ll update this post later on, I’m setting an image to write and then finding something to do for 2 hours…maybe I’ll play around with the Bios Mod I need to do for the one laptop model
-
@mbarker said in Modifying Boot Menu:
Are the phones and target systems in the same subnet? If they are on different subnets then you can just create different scopes for each subnet.
For your clients, what is their dhcp server? If its server 2012 there are a few more options you can use.
Lastly you can setup a usb boot option, but that adds an additional layer of complexity.
-
Currently, my customer’s network is all Server 2003 based (JOY…that’s a big upgrade project all on its own…), they’re using Mikrotik Routers for DHCP, but all of the Phones and Machines are on the same subnet - I didn’t set it up, I sort of inheritted this setup…it’s not how I’d do it at all (VLAN1 or 10 for Data, VLAN 20 or 99 for Voice, segment broadcast traffic, and give a /24 to both networks…don’t allow routing between the 2 VLANs…etc :))
Anyways, so my setup is Fog 1.3 RC10, DNSMasq for doing ProxyDHCP…I found another thread on this but the fix in there didn’t work (maybe my dnsmasq settings are wrong? or I’m having it choose the wrong image of sorts).
First I’d like to say: YAY for menu editing in the GUI! No more source file hunting
Second, whenever I choose an option (i.e. Quick Registration and Inventory), it loads up bzImage and init.xz, and then shows:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0)
Kernel Offset: disabled
—[end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,)…this is an x64 system, but I can’t find in the menu setups where to change to init32.xz (if I remember the documentation correctly, that should be used on x64 systems)
Any ideas?
-
@mbarker OK so you are using FOG 1.3.0-RCx series and dnsmasq, what are you ending out for dhcp option 67? You have to remember that there are two different pxe boot kernels one for bios (legacy) and one for uefi. You need to ensure you send the right file to the target computer.
Your error almost sounds like you are either sending an old syslinux kernel or an old iPXE kernel to the target computer. You should NOT be sending pxelinux.0 to the target computer. Use undionly.kpxe or ipxe.efi
-
@mbarker said in Modifying Boot Menu:
…this is an x64 system, but I can’t find in the menu setups where to change to init32.xz (if I remember the documentation correctly, that should be used on x64 systems)
Just for clarity the iPXE menu determines what kernel to send to the target computer. You can force a specific kernel if you manually register the host, but in general the iPXE kernel will decide what the target needs and send the right FOS Engine kernel/vhd pair to the target.
-
From my dnsmasq.conf:
tried with:
dhcp-boot=undionly.kpxeand
dhcp-boot=undionly.kpxe.0I have a symbolic link created:
undionly.kpxe.0 -> undionly.kpxeHere’s the last few lines from /var/log/messages:
Sep 15 12:06:29 fog13 dnsmasq-dhcp[13087]: 2366039648 Available DHCP subnet: 10.84.52.180/255.255.255.0
Sep 15 12:06:29 fog13 dnsmasq-dhcp[13087]: 2366039648 Vendor class: PXEClient:Arch:00000:UNDI:002001
Sep 15 12:06:29 fog13 dnsmasq-dhcp[13087]: 2366039648 User class: iPXE
Sep 15 12:06:29 fog13 dnsmasq-dhcp[13087]: 2366039648 PXE(eth0) 00:21:cc:c5:5b:d9 proxy
Sep 15 12:06:29 fog13 dnsmasq-dhcp[13087]: 2366039648 tags: eth0
Sep 15 12:06:29 fog13 dnsmasq-dhcp[13087]: 2366039648 bootfile name: undionly.kpxe.0
Sep 15 12:06:29 fog13 dnsmasq-dhcp[13087]: 2366039648 sent size: 1 option: 53:message-type 02
Sep 15 12:06:29 fog13 dnsmasq-dhcp[13087]: 2366039648 sent size: 4 option: 54:server-identifier 10.84.52.180
Sep 15 12:06:29 fog13 dnsmasq-dhcp[13087]: 2366039648 sent size: 9 option: 60:vendor-class 50:58:45:43:6c:69:65:6e:74
Sep 15 12:06:29 fog13 dnsmasq-dhcp[13087]: 2366039648 sent size: 17 option: 97:client-machine-id 00:81:16:f9:e9:e4:51:cb:11:a4:a860…
Sep 15 12:06:29 fog13 dnsmasq-dhcp[13087]: 2366039648 sent size: 82 option: 43:vendor-encap 06:01:02:09:30:80:00:11:42:6f:6f:74:20…
Sep 15 12:06:29 fog13 dnsmasq-dhcp[13087]: 2366039648 Available DHCP subnet: 10.84.52.180/255.255.255.0
Sep 15 12:06:29 fog13 dnsmasq-dhcp[13087]: 2366039648 Vendor class: PXEClient:Arch:00000:UNDI:002001
Sep 15 12:06:29 fog13 dnsmasq-dhcp[13087]: 2366039648 User class: iPXE
Sep 15 12:06:29 fog13 dnsmasq-dhcp[13087]: 2366039648 PXE(eth0) 00:21:cc:c5:5b:d9 proxy
Sep 15 12:06:29 fog13 dnsmasq-dhcp[13087]: 2366039648 tags: eth0
Sep 15 12:06:29 fog13 dnsmasq-dhcp[13087]: 2366039648 bootfile name: undionly.kpxe.0
Sep 15 12:06:29 fog13 dnsmasq-dhcp[13087]: 2366039648 sent size: 1 option: 53:message-type 05
Sep 15 12:06:29 fog13 dnsmasq-dhcp[13087]: 2366039648 sent size: 4 option: 54:server-identifier 10.84.52.180
Sep 15 12:06:29 fog13 dnsmasq-dhcp[13087]: 2366039648 sent size: 9 option: 60:vendor-class 50:58:45:43:6c:69:65:6e:74
Sep 15 12:06:29 fog13 dnsmasq-dhcp[13087]: 2366039648 sent size: 17 option: 97:client-machine-id 00:81:16:f9:e9:e4:51:cb:11:a4:a860…
Sep 15 12:06:29 fog13 dnsmasq-dhcp[13087]: 2366039648 sent size: 82 option: 43:vendor-encap 06:01:02:09:30:80:00:11:42:6f:6f:74:20…
Sep 15 12:06:37 fog13 in.tftpd[13306]: Client 10.84.52.191 finished default.ipxeNot sure if default.ipxe should be the right file for it to get…I dunno I might go back to figuring out how to get my system to load WinPE and use the software they already have licensed and have used before, this is getting a little discouraging lol
-
@mbarker Well I can say you jumped right into a complex issue where you don’t have access to the dhcp server and are trying proxy dhcp.
Just browsing through the dnsmasq log everything looks great. Default ipxe should be the product. The results should be the fog iPXE menu from this. The undionly.kpxe is the iPXE kernel that gets loaded onto the target computer. What you should see from there should be the fog ipxe menu.
-
@george1421 said in Modifying Boot Menu:
Now when you select a iPXE menu item it then “should” transfer the bzImage (kernel) and init.zx (the virtual hard drive) to the target computer. That error message you posted is the kernel not understanding the format of the virtual hard drive.
You have to understand that imaging with FOG is a complex dance between 4 different technologies and you went to hard mode right away. This does work we just need to identify what happened.
edit: The bzImage and init.zx are the 64 bit images and bzImage32 and init32.xz are the 32 bit images they are a match pair. If somehow these pairings got messed up it would create the error you posted too.
-
@george1421
Oh don’t I know it -_- The trouble is the client wanted to spend as LITTLE money as possible on this (saves about $250-300 a month in courier costs…), and since they felt this was more important than me upgrading their Active Directory to something…I dunno…supported…I’m stuck dealing with hopping into a hard situation (cause…it can never be easy, where would the fun be if it was all easy? :P)I tried with both the 32 bit and the 64 bit version of bzImage/init.zx and the same error still comes up. I wasn’t getting it on the previous version of fog, then again I think I was sending it pxelinux.0 as the boot kernel. I’m just not sure where to go with this one (I’ve done plenty of PXE boot situations…back in the popular Norton Ghost days lol
edit: I do have access to the DHCP server, I just can’t use it because of the way the last IT guy setup the network
-
@mbarker said in Modifying Boot Menu:
I tried with both the 32 bit and the 64 bit version of bzImage/init.zx and the same error still comes up.
This concerns and confuses me a bit. You should not have to mess with these files. I’m going to recommend that you go back to the 1.3.0 files that you downloaded and rerun the bin/installfog.sh install script again to resync everything.
Also please post your config file from dnsmasq, again the only time I’ve see this get messed up is when the kernel doesn’t match the vhd file or pxelinux.0 or an old version of iPXE is being used.
And your symbolic links are to the current ipxe files of undionly.kpxe and ipxe.efi? The dnsmasq program always tags a .0 (dot zero) on the end.
-
I didn’t actually do much on the Fog 1.3.0 side of things other than hide a few menu items…so the config there shouldn’t be anything there that would have gotten out of sync…
Here’s my dnsmasq config:
# Don't function as a DNS server: port=0 # Log lots of extra information about DHCP transactions. log-dhcp # Dnsmasq can also function as a TFTP server. You may uninstall # tftpd-hpa if you like, and uncomment the next line: # enable-tftp # Set the root directory for files available via FTP. tftp-root=/tftpboot # The boot filename. #dhcp-boot=undionly.kpxe.0 dhcp-boot=pxelinux.0 # rootpath option, for NFS dhcp-option=17,/images # kill multicast dhcp-option=vendor:PXEClient,6,2b # Disable re-use of the DHCP servername and filename fields as extra # option space. That's to avoid confusing some old or broken DHCP clients. dhcp-no-override # PXE menu. The first part is the text displayed to the user. The second is the timeout, in seconds. pxe-prompt="Press F8 for boot menu", 0 # The known types are x86PC, PC98, IA64_EFI, Alpha, Arc_x86, # Intel_Lean_Client, IA32_EFI, BC_EFI, Xscale_EFI and X86-64_EFI # This option is first and will be the default if there is no input from the user. pxe-service=X86PC, "Boot from network", pxelinux # A boot service type of 0 is special, and will abort the # net boot procedure and continue booting from local media. pxe-service=X86PC, "Boot from local hard disk", 0 dhcp-range=10.84.52.180,proxy
There’s not much in it just what is needed to be honest. I’m really at a loss here, the bzImage and init.xz from fog 1.2 worked perfectly fine, it’s only on 1.3 RC10 that I ran into this problem…
-
@mbarker dude, I said not to use pxelinux.0
Is this what you created the sym links to?
I have some paperwork (sorry real job) to take care of but I’ll be back soon to dig a bit deeper.
-
I wrote a tutorial a while ago about my experience with dnsmasq. I did not follow the one from the official fog wiki page but arrived at a working solution. In my case I did this with my home kit using my home firewall as the dhcp server and the fog server running dnsmasq. https://forums.fogproject.org/topic/6376/install-dnsmasq-on-centos-7
The efi section of my dnsmasq config file will only work if you are running the lastest dnsmasq.Since then the dnsmasq group (not FOG) made upgrades to dnsmasq so that dnsmasq will deliver the proper boot file (undionly/ipxe.efi) depending on the computer asking for dhcp proxy info. This version of dnsmasq hasn’t made it into the linux distribution chains just yet. But right now you need to walk before you run.
-
LOL oops that was after I saved it to try something…the symlink is to:
lrwxrwxrwx 1 root root 13 Sep 15 11:31 undionly.kpxe.0 -> undionly.kpxe
from dnsmasq conf (proper):
# Don't function as a DNS server: port=0 # Log lots of extra information about DHCP transactions. log-dhcp # Dnsmasq can also function as a TFTP server. You may uninstall # tftpd-hpa if you like, and uncomment the next line: # enable-tftp # Set the root directory for files available via FTP. tftp-root=/tftpboot # The boot filename. dhcp-boot=undionly.kpxe.0 # rootpath option, for NFS dhcp-option=17,/images # kill multicast dhcp-option=vendor:PXEClient,6,2b # Disable re-use of the DHCP servername and filename fields as extra # option space. That's to avoid confusing some old or broken DHCP clients. dhcp-no-override # PXE menu. The first part is the text displayed to the user. The second is the timeout, in seconds. pxe-prompt="Press F8 for boot menu", 0 # The known types are x86PC, PC98, IA64_EFI, Alpha, Arc_x86, # Intel_Lean_Client, IA32_EFI, BC_EFI, Xscale_EFI and X86-64_EFI # This option is first and will be the default if there is no input from the user. pxe-service=X86PC, "Boot from network", pxelinux # A boot service type of 0 is special, and will abort the # net boot procedure and continue booting from local media. pxe-service=X86PC, "Boot from local hard disk", 0 dhcp-range=10.84.52.180,proxy
Sorry I saved the pxelinux line to test something out…and it failed, I wonder if it’s these particular versions of the init and bzimage files? perhaps it doesn’t jive with an older system - I’m gonna try another machine hang on
edit: I get the real job stuff too, I’m stick handling this and trying to sort out some Microsoft Licensing at the same time as I’m trying to fix a Wordpress install LOL
-
@mbarker Yeah, I would review my config file when you have a chance, but this line jumped out at me right way.
dhcp-boot=undionly.kpxe,,<fog_server_IP>
The fog server IP address should appear twice in your config file, you missed this one.