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

    1. 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
    2. 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…



  • @mbarker
    in a normal fog install, there is no init.xz in /tftpboot.
    I think that maybe your install is very modified and this is causing some issues…
    I know that it would be your thousandth installation, but when you got fog up and running, your effort will have been worthwhile.

    I was looking for other tools, they exist but are not as productive as this.


  • Moderator

    @mbarker I understand your logic and decision to look elsewhere. If you decide to circle back to the FOG Project we will be here to help.

    Just for my knowledge what hardware are you running the FOG server on. It has no bearing on your results other than I’m interested in the hardware setup.



  • @george1421

    Here’s the process I did with Fog 1.3:

    Installed FRESH Centos, updated, installed git, wget, nano, and disabled selinux

    Downloaded and installed Fog 1.3

    Upgraded PHP from 5.3.3 to PHP 5.5

    Created 2 Usernames

    Installed and configured dnsmasq

    hid a couple of menu items

    created an image for the host to image to

    booted into the menu, and then ran into kernel panic problems

    @Tom-Elliott

    It is NOT loading from tftpboot at all, as I mentioned it’s loading from /var/www/html/fog/service/ipxe/

    Something just tells me this isn’t worth the effort at this point. I really don’t know what to say, I don’t have another full day to waste messing about with this, re-installing Fog just isn’t an option since this will be the 4th time in the last week I’ve done and always ran into problems, so sounds as though I’m looking for another solution


  • Moderator

    @mbarker Even before Tom posted, my intuition is telling me your FOG install is botched/been tweaked a little too much. I can’t explain why I feel this, but I can’t escape the thought you shouldn’t be having this level of difficulty getting this to work.

    My recommendation would be to rename /var/www/html/fog to fog.old and /tftpboot to /tftpboot.old and then go back to the files you downloaded for FOG in the /bin directory and rerun the fog installer. That will put everything back to a known configuration. Once the installer is done then create the two links as I mentioned in my tutorial. Then reboot your fog server. Dnsmasq will still be setup so that part (that works) should be OK.


  • Senior Developer

    That’s the issue.

    The init’s and kernels should NOT be loading from tftpboot at all.



  • @Tom-Elliott
    It’s loading them from /var/www/html/fog/service/ipxe/

    Now what’s weird is unregistered hosts get to the menu OK but a registered host doesn’t …however still have the same Kernel Panic I did before…so frustrating lol

    edit: figured this out by renaming init.xz, now when I try to get to anything from the menu it fails chainloading that file instead of the Kernel Panic (init.xz IS in my /tftpboot/ folder, but isn’t referenced in any config files to boot from there


  • Senior Developer

    @mbarker where is it loading the init from?

    Where is it loading the kernel from? Is something passing pxelimux instead of the ipxe files?



  • @george1421
    Hey I didn’t run away, just had a conference call to do…the device is a Lenovo T420 laptop with an Intel Series Ethernet Controller (I can’t recall the exact info on it).

    When i re-loaded the images that you linked now I’m getting a kernel panic before the menu loads…same panic, earlier in the boot sequence.

    Since I didn’t change anything for the “mode” I’m assuming it’s Legacy mode…

    The TFTP service serves out the boot.php file but then it hangs, tries to get init.xz and bzImage, then throws a Kernel Panic at me -_-


  • Moderator

    @mbarker Ok the next step is to ensure that we have the proper boot kernels.

    https://fogproject.org/inits/init.xz
    https://fogproject.org/inits/init_32.xz
    https://fogproject.org/kernels/bzImage
    https://fogproject.org/kernels/bzImage32

    These links will download the latest (current) kernel and inits. They go in /var/www/html/fog/service/ipxe

    Also when ipxe loads there is a version number and a hex number in parentheses, what is that hex number.

    Just for clarity what device are you trying to pxe boot into fog? Is it configured for uefi or bios (legacy) mode?

    I feel you have the dnsmasq part setup right now so we can rule that out as long as you have your links correct as I have defined them in the tutorial.



  • @george1421

    Still Kernel panic but no more prompt for a TFTP Server IP :D so one thing fixed lol

    When the system loads past the menu I get
    bzImage…ok
    init.xz…ok

    and then this is where the Kernel Panic happens…it just makes no sense to me

    I have my dnsmasq almost identical to your .conf file (I’m on CentOS 6.8…)

    Think I should try copying the known working bzimage and xint.xz files and see if that helps?



  • I was literally just adding that into my config right now :D hold tight (it probably will solve the TFTP server IP prompt too :))


  • Moderator

    @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.



  • 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


  • Moderator

    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.


  • Moderator

    @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 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…


  • Moderator

    @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.



  • @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


  • Moderator

    @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.


Log in to reply
 

Looks like your connection to FOG Project was lost, please wait while we try to reconnect.