Boot FOG on client PC using a special partition?



  • Is it possible to have a bootable partition that the FOG Client can use to Deploy an image? I read about booting FOG from USB, but it would be really cool to be able to deploy or capture an image from a managed FOG client workstation. Is this at all possible?


  • Senior Developer

    @brakcounty Over all the details about GRUB I lost sight on what this topic is all about… The USB method uses GRUB as boot loader because it can be installed into MBR on the USB to be used to boot legacy machines. As I said before, the alternative USB boot method is not part of the official FOG stuff and has not had enough attention to be fully integrated yet. Not because it’s impossible to do but because we have way to many things on the list.

    Now that you use UEFI only in your setup you could skip GRUB altogether and directly boot using iPXE from the hard drive’s UEFI boot partition and should be able to use FOG exactly the way you would if it does PXE boot. For that you just grab one of the iPXE .efi binaries from your FOG server (e.g. /tftpboot/ipxe.efi) and but that on your disk’s EFI boot partition as \BOOT\EFI\BOOTX64.EFI (case doesn’t matter here as Windows will ignor it). When booting the iPXE binary will run its embedded script to get an IP from DHCP and chainload to the FOG boot menu.


  • Moderator

    @brakcounty There should be a default menu timeout function in grub. So that if no entry is selected grub will pick the default menu. This is akin to how iPXE works.



  • I copied all the files with the folder structure to the partition I created. Set the part type to EFI System, filesystem to FAT32, told the BIOS/UEFI to boot from bootx64.efi in /BOOT/EFI and landed at a grub rescue prompt. After playing out the process in my head I realize that full automation won’t work because the way the menu is set up to autoboot into Windows after 5 seconds will prevent a deploy or capture task from ever starting. I’d have to be at the PC to select the Deploy/Capture option on the FOG Menu. The USB option still works though so all is not lost.



  • Got it working! This worked for me after making sure the drive was changed to GPT and I also labeled the efi parition as “EFI”:
    menuentry “Windows” {
    insmod chain
    insmod ntfs
    insmod part_gpt
    set root=(hd1,gpt2)
    chainloader (hd1,gpt2)/efi/microsoft/boot/bootmgfw.efi
    }

    Just realized that the set root part is redundant. I am partitoning the drive now to copy the files from the FOG USB key then tell the UEFI on the PC to boot from this new GRUB partition first. Looking good!



  • that didnt work for me. said ntldr and drivemap not a command.


  • Moderator

    @brakcounty ref from: https://wiki.gentoo.org/wiki/GRUB2/Chainloading

    menuentry 'Microsoft Windows 7 or Windows 8 (on sdb1)' --class windows {
            insmod part_msdos
            insmod ntfs
            insmod search_fs_uuid
            insmod ntldr
            search --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1 2ABF87DC395CFC02
            drivemap (hd1,msdos1) (hd0,msdos1)
            #Or, "drivemap (hd1,msdos2) (hd0,msdos1)" for those with Windows installed on sdb2)
            ntldr /bootmgr
    }
    

    I’m not sure what the apha characters are at the end of the search line, but this looks like a very good menu structure where it looks for windows instead of you telling it where to look.



  • This post is deleted!


  • I found the Windows partition it is actually (hd1,msdos1). I ran "ls (hd1,msdos1) and it showed filesystem ntfs label “Windows” and the UUID. But when I try to run the command “chainloader (hd1,msdos1)/EFI/Microsoft/Boot/bootmgfw.efi” or “chainloader (hd1,msdos1)/EFI/Microsoft/Boot/bootx64.efi”, says file not found.

    Correction: This drive was MBR with only one partition. Sorry about that.


  • Moderator

    @Sebastian-Roth FWIW: the efi boot partition is almost always vfat (fat32) format unencrypted even if bitlocker is enabled on the disk. Windows needs some way to start off the booting process.



  • It probably is the USB drive. I don’t think this particular environment is seeing the hard drive in the PC. I know for a fact that the Windows drive is GPT and EFI because I converted it to GPT before I imaged it, also made sure the image itself was created as GPT. I am able to boot from the Windows EFI partition normally.


  • Senior Developer

    @brakcounty Don’t think there is a GPT partition layout on any of those three disks. While hd2 doesn’t even seem to have partitions at all. Maybe this is the USB key? Can you boot to Windows and post a picture of the disk management view? Shall see if it’s MBR or GPT there.



  • IMG_20200529_132731.jpg


  • Senior Developer

    @brakcounty Sorry, just updated my post again.

    The windows partition I’m trying to boot from is a GPT-EFI bootable system.

    On the GRUB command line run the following commands, take a picture of the screen and post that here:

    set pager=1
    insmod part_gpt
    insmod part_msdos
    ls
    

    Is that “+1” always supposed to follow the chainloader entry?

    Yes, as far as I know.



  • @Sebastian-Roth The windows partition I’m trying to boot from is a GPT-EFI bootable system. Is that “+1” always supposed to follow the chainloader entry?


  • Senior Developer

    @brakcounty said in Boot FOG on client PC using a special partition?:

    The ls command shows hd0 hd0,msdos hd1 hd1,msdos, hd2 hd2, msdos.

    Well then you have a legacy MSDOS partition layout and can’t use the GPT stuff! Have you tried the good old MBR chainloader style yet?

         insmod part_msdos
         insmod chain
         rootnoverify (hd0,0)
         chainloader +1
    

    Play with the numbers (at line rootnoverify) till you hit the right partition/disk.



  • Great thanks! I already found and tried this:
    insmod part_gpt
    insmod chain
    set root=(hd0,gpt1)
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
    boot

    No luck. Says the file could not be found.

    The ls command shows hd0 hd0,msdos hd1 hd1,msdos, hd2 hd2, msdos. I tried all three hd entries and pointed to /EFI/Microsoft/Boot/bootmgfw.efi no go, but much further than I was thanks to you and @george1421.


  • Senior Developer

    @brakcounty As we usually don’t use GRUB in FOG for booting there are not that many resources on this topic in the forums. For that you need to search external sites. Here is a list of different GRUB configs used for chainloading to a Windows installation on disk: https://wiki.gentoo.org/wiki/GRUB2/Chainloading

    I have not see the ntldr used much yet. Most Linux installations that setup dual booting with windows use the chainloader command I think. Try different ones and you should be able to boot from disk through this.



  • UPDATE!!!
    I added a storage node and specified the interface and ip of my prod network and successfully deployed an image using the USB FOG. Now I added an entry to the GRUB menu called “Boot from HDD” but I don’t know the command line to boot from it. I have used “sanboot --no-describe --drive 0x08” in an ipxe menu file with a different setup but GRUB isn’t recognizing sanboot.



  • Ok created a task and tried it again, and now it looks like the task is trying to mount the nfs share via the imaging (isolated network) interface 10.0.0.10
    IMG_20200528_151807.jpg
    Is there a way to make FOG try to connect to two different nfs shares? Like if one fails try another?


Log in to reply
 

265
Online

7.1k
Users

14.3k
Topics

135.1k
Posts