IPXE boot missing NEXT-SERVER



  • I have FOG setup and working but since I am using it in my home network, I prefer to keep the DHCP functionality of my FIOS router. Since I don’t want to use the DHCP functionality of the FOG server, I setup DNSMASQ so that it intercepts TFTP and points it to my FOG server. That is all working, and IPXE is successfully taking over and booting. The problem I’m running into is that IPXE is still prompting for the TFTP ip address. I know this normally happens when there is more than one DHCP server in the network, but I verified that the only DHCP server is the FIOS router. After disabling the FIOS DHCP, netbooting never gets past asking for an ip address.
    I also created a FOG boot entry that executes CONFIG and it does show that the NEXT-SERVER setting is correctly setup. I can’t figure out why it still prompts on every boot. Any ideas? Below are the contents of my /etc/dnsmasq.d/ltsp.conf
    although I’m not it is relevant since it is correctly handing over the boot to IPXE.

    port=0
    
    log-dhcp
    
    tftp-root=/tftpboot
    
    dhcp-boot=undionly.kpxe,192.168.1.5
    dhcp-boot=default.ipxe,192.168.1.5
    
    dhcp-option=17,/var/www/html
    # dhcp-option=pxe,66,192.168.1.5
    # dhcp-option=66,192.168.1.5
    
    dhcp-option=vendor:PXEClient,6,2b
    
    dhcp-no-override
    
    pxe-prompt=.Press F8 for boot menu., 3
    
    pxe-service=X86PC, .Boot from network., undionly.kpxe
    
    # pxe-service=X86PC, .Boot from local hard disk., 0
    
    dhcp-range=192.168.1.5,proxy,255.255.255.0
    

    [Mod note] I fixed the post by including the config file in a code block



  • @george1421
    What’s odd is that it doesn’t work in legacy mode on my laptop but does work in whatever the other mode is. I wouldn’t call it UEFI mode because the laptop has both UEFI and BIOS modes and is permanently set in BIOS mode. It is indeed UEFI mode. The other odd thing about all of this, is that it works in both UEFI and BIOS modes when booting as a virtual machine in ESXi 6.5 which is where I have been doing most of my testing since it is much easier than rebooting my laptop over and over. I am going to continue to play around with it. I can always fall back to booting any systems that fail PXE booting by booting from the GRUB4DOS USB harddrive and/or flash drive which accomplishes the same thing. I was just trying to avoid having to have the USB drive available at all times. Plus since I have ethernet throughout the entire house, it was a fun project to work on.


  • Moderator

    @george1421 Just quickly using some google-fu I see the practicle limit for both the kernel and initrd to be in th 1-2GB range. For ipxe in bios mode the upload files seems to be limited to a 32 bit address space (i.e. 4GB). At least half is used for iPXE internal PCI pointers. This space must have enough space for the kernels and and any files you might upload. IF the files are compressed there may need to be double the space to uncompress the files while retain the original files in memory.

    For uefi, it uses 64 bit kernel so this memory limit is much larger.

    In practical use, I’ve personally pxe booted WinPE environments with up to a 525MB “boot.wim” file without issue.


  • Moderator

    @jcdinpgh Yes that is a pretty fat boot.wim file. I have seen a similar message when someone tries to use memdisk and load an entire iso image into memory. I don’t know what the limit is on vhd memory for iPXE but it appears you have crossed it. You really can’t compare bios and ipxe modes because they are not equivalent structures.



  • @george1421
    I am using a WIN 7 PE built using WINBUILDER from www.theoven.org. Unfortunately there is no bootmgr.exe in BCD which is why I had to supply it. There isn’t a bootmgr.exe which I know is odd but it has something to do with how WINBUILDER builds the whole system.
    The boot.wim is very large (977450336 bytes) when compared to a regular WIN 7 PE system because WINBUILDER allows incorporating a large number of utilities and drivers into the build. Think of it as a portable “fixit” system with antivirus and system image utilities all built in.
    What is odd is that the UEFI boot option, which correctly loads IPXE, works just fine.
    The “legacy” boot option which also correctly loads IPXE, gets the “no space left on device” error.
    I’m ok with using the UEFI option, at least on my primary laptop. I haven’t tested some of my other workstations, but I do know they do not have a UEFI bios so I would be surprised if they will work.


  • Moderator

    @jcdinpgh Your setup here is very similar to a tutorial I created in 2015
    ref: https://forums.fogproject.org/topic/6284/booting-mdt-2013-litetouch-with-fog/5

    But since then changes in fog has made hosting files under http sometimes problematic because of the http redirection. If you can get uefi to boot then bios should work too.

    Also you might want to drop transferring bootmgr.exe since it should be inside your boot.wim file. Wimboot should extract it and launch it.


  • Moderator

    @jcdinpgh how large is boot.wim ?



  • @george1421
    Getting a screen shot might be hard but I will try to describe what is happening.
    My laptop has two options for PXE booting. One is “legacy” and one is something else that I am not sure I would call UEFI since my laptop has both BIOS and UEFI modes but is currently set to BIOS mode. FWIW, this is an Alienware laptop. Legacy is failing once IPXE loads and I choose the WIN PE option. The other unlabeled mode network boot option works correctly. The FOG menu entry for WIN PE 7 is what is failing and only when it gets to the boot.wim when the error says “no space left on device”. http://ipxe.org/34182006
    I hit “S” and then config and according to the IPXE config, the file it is loading is “undionly.kpxe”.
    The menu entry for FOG looks like this:

    kernel http://${fog-ip}/iso/winpe/wimboot
    # next two lines are from the AIK
    initrd http://${fog-ip}/iso/winpe/amd64/boot/bcd BCD
    initrd http://${fog-ip}/iso/winpe/amd64/boot/boot.sdi boot.sdi
    # this is the boot.wim built by Winbuilder (theoven.org)
    initrd http://${fog-ip}/iso/winpe/boot.wim boot.wim
    # bootmgr.exe comes from the Windows 7 source CD by mounting sources\boot.wim via DISM /Mount-Wim /WimFile:sources\boot.wim /Index:1 /MountDir:e:\mount
    # and copying bootmgr.exe from e:\mount\Windows\Boot\PXE
    initrd http://${fog-ip}/iso/winpe/bootmgr.exe bootmgr.exe
    # imgstat
    # prompt
    boot
    

  • Moderator

    @jcdinpgh Can you get us a clear screen shot of the error you see. The context of the error is almost as important as the error itself.

    Also just to be sure this message is coming from iPXE or is it from something you are trying to launch from the iPXE menu?

    In regards to the error message it almost sounds like you are passing a uefi kernel to a bios mode computer, but the error snapshot will tell us a bit more of the context.

    As for my ltsp.conf that will dynamically switch between uefi and bios kernels based on the pxe booting target computer. That is a solid config if you need one.


  • Moderator

    @jcdinpgh Please use the code-block tool in the text editor when posting code snippets. The tool button looks like this: </>



  • Sorry. I was wrong. I am getting the “No space left on device” error even when using DHCPD. What’s odd is I know I didn’t change any other settings. I was very careful not to. I did look through lots of the options and config in the GUI but I was very careful to not change anything. I might just rebuild my FOG server from scratch since I have been working on this for so long.



  • I spoke too soon. Now when I netboot, the FOG menu comes up and I can choose an option, but the one I have been working on for quite awhile (booting WINPE 7) now says “no space left on device”. This doesn’t happen when netbooting while the DHCPD service is up an running. Nothing in FOG was changed at all so I am not sure what is causing this and why it works with DHCPD but not DNSMASQ. Any ideas?



  • @george1421 said in IPXE boot missing NEXT-SERVER:

     # Don't function as a DNS server:
     port=0
     
     # Log lots of extra information about DHCP transactions.
     log-dhcp
     
     # Set the root directory for files available via FTP.
     tftp-root=/tftpboot
     
     # The boot filename, Server name, Server Ip Address
     dhcp-boot=undionly.kpxe,,<fog_server_IP>
     
     # 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
     
     # inspect the vendor class string and match the text to set the tag
     dhcp-vendorclass=BIOS,PXEClient:Arch:00000
     dhcp-vendorclass=UEFI32,PXEClient:Arch:00006
     dhcp-vendorclass=UEFI,PXEClient:Arch:00007
     dhcp-vendorclass=UEFI64,PXEClient:Arch:00009
     
     # Set the boot file name based on the matching tag from the vendor class (above)
     dhcp-boot=net:UEFI32,i386-efi/ipxe.efi,,<fog_server_IP>
     dhcp-boot=net:UEFI,ipxe.efi,,<fog_server_IP>
     dhcp-boot=net:UEFI64,ipxe.efi,,<fog_server_IP>
     
     # PXE menu.  The first part is the text displayed to the user.  The second is the timeout, in seconds.
     pxe-prompt="Booting FOG Client", 1
     
     # 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 to FOG", undionly.kpxe
     pxe-service=X86-64_EFI, "Boot to FOG UEFI", ipxe.efi
     pxe-service=BC_EFI, "Boot to FOG UEFI PXE-BC", ipxe.efi
     
     dhcp-range=<fog_server_ip>,proxy
    

    My DNSMASQ is v2.76. Replacing with your ltsp.conf seems to have solved it. Thanks so much!

    [Mod note] I included the text in a code block for the OP - Geo


  • Moderator

    First lets confirm what version of dnsmasq you have installed. Open a command prompt and key in
    sudo dnsmasq -v

    Please use my ltsp.conf file here (exactly) if you have version 2.76 or newer:

    # Don't function as a DNS server:
    port=0
    
    # Log lots of extra information about DHCP transactions.
    log-dhcp
    
    # Set the root directory for files available via FTP.
    tftp-root=/tftpboot
    
    # The boot filename, Server name, Server Ip Address
    dhcp-boot=undionly.kpxe,,<fog_server_IP>
    
    # 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
    
    # inspect the vendor class string and match the text to set the tag
    dhcp-vendorclass=BIOS,PXEClient:Arch:00000
    dhcp-vendorclass=UEFI32,PXEClient:Arch:00006
    dhcp-vendorclass=UEFI,PXEClient:Arch:00007
    dhcp-vendorclass=UEFI64,PXEClient:Arch:00009
    
    # Set the boot file name based on the matching tag from the vendor class (above)
    dhcp-boot=net:UEFI32,i386-efi/ipxe.efi,,<fog_server_IP>
    dhcp-boot=net:UEFI,ipxe.efi,,<fog_server_IP>
    dhcp-boot=net:UEFI64,ipxe.efi,,<fog_server_IP>
    
    # PXE menu.  The first part is the text displayed to the user.  The second is the timeout, in seconds.
    pxe-prompt="Booting FOG Client", 1
    
    # 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 to FOG", undionly.kpxe
    pxe-service=X86-64_EFI, "Boot to FOG UEFI", ipxe.efi
    pxe-service=BC_EFI, "Boot to FOG UEFI PXE-BC", ipxe.efi
    
    dhcp-range=<fog_server_ip>,proxy
    

    Don’t forget to replace <fog_server_ip> in the above text with the IP address of your fog server. The tag appears many times.

    Then restart your dnsmasq service. Also confirm that you only have the config file I provide above in the /etc/dnsmasq.d directory.


Log in to reply
 

440
Online

39.8k
Users

11.2k
Topics

106.8k
Posts

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