On 1/8/07, Stefan Reinauer stepan@coresystems.de wrote:
And how do you do the transition to native x86 execution? Your scenario would mean to emulate execution of the Windows bootloader, so that it can use bios callbacks. But I have no idea how to find out we're out of the bootloader and in Windows itself. ie. no bios callbacks will follow.
yes, you would need to know what the loader does to start windows, but I don't think this is impossible.
Nothing against the success of the emulator. It is great work, and it helped LinuxBIOS (and I suppose other projects) a lot. But emulating an x86 machine on an x86 seems to have a whiff of a broken design.
I don't really agree. We used to run x86 binaries directly from expansion roms. There were far more problems than we have had with the emulator. The broken design, really, is the PC. But we can't change that. The emulation approach has proven to be the most reliable -- so reliable, in fact, that someone is looking to replace direct execution in Plan 9 with our emulator.
The best way, in my view, is to boot linux in flash and have linux kexec the actual OS you want to boot.
This is not exactly going to make things faster, in the Windows/MBR case.
I will only agree to that when I measure it being slower. We have seen, here, that Linux, loaded from FLASH and operating as the boot loader, on reasonably modern machines (e.g. 2+ Ghz opteron),is the fastest way to boot, without exception.
But is it possible to boot Vista under Linux via kexec? That would be interesting.
Kexec is Linux specific. It can't do the job for any Windows or BSD, but will just load a Linux kernel.
no, kexec will load an arbitrary elf image. I can kexec a plan 9 image. kexec is very powerful.
ron