[syslinux] Chainloading from Vista x64 bootloader to Extlinux?

Rune Morling rune.morling at gmail.com
Sat Aug 8 19:54:34 PDT 2009


Shao,

Thank you for the quick reply!

2009/8/8 Miller, Shao <Shao.Miller at yrdsb.edu.on.ca>

> Good day Rune,
>
> Regarding your challenge chain-loading to an Ext[2|3]FS partition
> containing EXTLINUX from a Vista 64-bit Windows installation's
> boot-loader:
>
> Do you happen to know what code is on the MBR?  Is it good ol' standard
> MBR code?  Was it installed by Windows?  Was it Syslinux' mbr.bin?  Did
> some other OS put code there?  If you search for string in it, what do
> you see?
>
> dd if=/dev/sda of=~/sda_mbr.bin count=1
> strings ~/sda_mbr.bin
>

[ermo at gizmo ~]$ sudo dd if=/dev/sda of=~/sda_mbr.bin count=1
[sudo] password for ermo:
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000142969 s, 3.6 MB/s
[ermo at gizmo ~]$ strings sda_mbr.bin
t&fh
TCPAu2
r,fh
fSfSfUfh
Invalid partition table
Error loading operating system
Missing operating system
[ermo at gizmo ~]$

I believe that the code in the MBR is from Vista. I have attached a copy of
the code to this message for you to examine, should you so desire. Whether
that piece of code (from the MBR) is 'standard', I have no idea.


>
> I would expect there to be BCD boot-code installed on the Windows
> partition's first sector (often simply called "boot sector").  I was not
> aware that BCD boot-code went into the MBR, so this is an interesting
> challenge.


>
> If H. Peter muttered something about MS changing the boot protocol, it
> might have to do with how the registers are filled upon chain-loading
> another partition's boot-sector.  Things like the DL register might be
> critical.
>

My understanding of the specifics of the Vista booting process is limited to
what I've read in Microsoft kb 919529[1], a MS document called "Boot
Configuration Data in Windows Vista"[2] and "Inside the Vista Kernel: Part
2"[3] by Mark Russinovich of Sysinternals fame. Reading through these
documents, however, it is clear that you are correct and that the BCD code
is indeed installed in the first visible sector on the partition where
Windows is installed (the 'boot sector'). My apologies for clouding the
issue with my imprecise use of terms.

>From kb 919529[1]:

"When Windows Vista starts on a BIOS-based computer, the BIOS loads the MBR
and then loads the boot sector. However, boot code loads the new Windows
Boot Manager program (Bootmgr). The Windows Boot Manager program parses the
Boot Configuration Data file, enumerates the installed operating systems,
and then displays the boot menu. If an earlier version of the Windows
operating system is installed in a dual-boot configuration with Windows
Vista, the Windows Boot Manager program transfers control to the Ntldr
program for the earlier version of the Windows operating system."

Hence it would appear that the solution to the mystery lies in understanding
the interaction between Bootmgr.exe and Extlinux, if I understand the above
correctly?

[1] http://support.microsoft.com/kb/919529
[2] http://www.microsoft.com/whdc/system/platform/firmware/bcd.mspx
[3] http://technet.microsoft.com/en-us/magazine/2007.03.vistakernel.aspx



>
> Regarding the previous discussion of SYSLINUX.EXE for Windows 64-bit:
>
> I don't think any of that information is relevant to your situation,
> Rune.  That discussion concerned installing SYSLINUX from a 64-bit
> Windows environment, if I recall correctly.  If you are able to boot
> Linux and install EXTLINUX from Linux, then you needn't worry about
> installing SYSLINUX from a 64-bit Windows.
>
> - Shao Miller
>

Then I guess I'll just 'stop worrying and learn to love the bomb' as they
say :)

Thanks again.

 -ermo
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sda_mbr.bin
Type: application/octet-stream
Size: 512 bytes
Desc: not available
URL: <http://www.zytor.com/pipermail/syslinux/attachments/20090809/fdb70e64/attachment.bin>


More information about the Syslinux mailing list