2

Can Windows bootmgr (Windows boot loader used since Vista*) boot Linux directly, without chainloading GRUB or other bootloader?

  • answers regarding the older NTLDR are welcome too

1 Answer 1

4

In simple terms, no. Booting Linux is slightly more complicated than just copying some data to memory and jumping to the start of that memory area, and Microsoft have for obvious reasons chosen not to add support for that in their bootloader.

However, if you concern is simply to use the Windows boot loader as your primary boot loader, there are various methods you can use to chainload different versions of GRUB from the Windows bootloader. You might also consider experimenting with using GRUB4DOS, which has a binary format which can be be directly loaded with with NTLDR. Or, you could load a real mode boot sector for any version of GRUB from either bootmgr or NTLDR.

Now, you probably asked the question out of curiosity more than anything, and it did pique my curiosity as well. In researching the matter, I found a good description of the Linux boot process. It mentions a legacy kernel boot sector, which would historically be used when booting the kernel directly from a floppy. This field is no longer used however, as you will see soon. Probably because the kernel has become larger than 1.44 MB these days.

I tried decompressing a kernel and chainloading it in two ways. First with chainloader /vmlinux from GRUB4DOS (although any other grub may work all the same, again assuming you decompress the file. Result: I'm getting the following message:

Direct booting from floppy is no longer supported.
Please use a boot loader instead.

Remove disk and press any key to reboot . . .

I also tried C:\vmlinux="boot test" in XP's boot.ini but that just hung.

However, this raises the question whether it might be possible to make a special build of the kernel which can indeed be booted directly from one of Windows' loaders with some minimal glue to jump into the kernel realmdoe entry point, as well a few other fixes perhaps.

However, this would still be very inconvenient, since this method would lack all the modern commodities that the kernel usually gets from the bootloader, like kernel parameters and an initrd. It might simply not be worth the effort.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .