Boot FOG on client PC using a special partition?
-
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. -
@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 thechainloader
command I think. Try different ones and you should be able to boot from disk through this. -
Great thanks! I already found and tried this:
insmod part_gpt
insmod chain
set root=(hd0,gpt1)
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
bootNo 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.
-
@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. -
@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?
-
@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.
-
-
@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.
-
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.
-
@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.
-
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.
-
This post is deleted! -
@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.
-
that didnt work for me. said ntldr and drivemap not a command.
-
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!
-
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.
-
@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.
-
@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.