If you want to understand how the old BIOS/MBR systems boot, this is one of the better links:
http://www.multibooters.com/guides/v...-sequence.html
http://www.multibooters.co.uk/multiboot.html
http://www.multibooters.com/
Of course since Microsoft required vendors to install Windows 8 in UEFI boot mode with gpt partitioning in 2012, most systems are UEFI. But a user can install even Windows 10 in BIOS boot mode.
UEFI
https://wiki.archlinux.org/index.php...ware_Interface
http://www.rodsbooks.com/efi-bootloaders/
Since as shown in above BIOS boot, Windows uses boot flag to find partition with boot files, but grub uses os-prober and looks for the partition with the required Windows boot files and creates a chainload to the Windows PBR - partition boot sector to boot. It does not boot Windows directly.
Some examples:
Windows 7 entry with 100MB initial partition
### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Windows 7 (loader) (on /dev/sda1)" {
insmod ntfs
set root=(hd0,1)
search --no-floppy --fs-uuid --set 2ae000d2e000a663
chainloader +1
}
### END /etc/grub.d/30_os-prober ###
alternate to chainloader +1
ntldr /bootmgr
Two changes were made to the commands in (3) versus (4).
The new command insmod ntldr was added.
The command chainloader +1 was replaced with ntldr ($root)/bootmgr
added insmod ntldr and change chainloader +1 to ntldr ($root)/bootmgr, and it works wonders!
the map command is often required if BIOS not booting same drive as Windows. Windows expects to be first in most cases, so the map switches the boot drive, so Windows still thinks it was the drive booted.
#If not hd0,1
menuentry "Windows 7"
{
insmod ntfs
set root=(hd0,1)
drivemap -s (hd0) ($root)
ntldr /bootmgr
#or chainloader +1
}
Bookmarks