The issue of booting XP just will not go away.
So, there are two options I see, in order of preference: 1. find some way, using kexec etc., to boot XP under Linux, then put Linux in FLASH; done 2. revive ADLO
there have been a number of suggestions for how to do the first one. 1. freeldr (vapor?) 2. tinyldr (vapor?)
any non-vaporous ones out there? This note is an attempt to start a discussion and discovery on this subject.
thanks
ron
* ron minnich rminnich@gmail.com [061107 04:25]:
So, there are two options I see, in order of preference:
- find some way, using kexec etc., to boot XP under Linux, then put Linux in
FLASH; done 2. revive ADLO
Maybe be can join 1 and 2, and run (parts of) ADLO on top of Linux, together with kexec.
there have been a number of suggestions for how to do the first one.
- freeldr (vapor?)
- tinyldr (vapor?)
Any of these might be obsolete with Windows Vista, as it uses "winload.exe" instead of NTLDR
The ugly thing with all Windows booting approaches is that the boot loader has a whole lot of intelligence, it is doing device enumeration, and, a lot worse: It is also loading device drivers. :-(
I found a little bit of information about the boot configuration data provided by the boot loader to NTOSKERNL.EXE (Vista version)
http://download.microsoft.com/download/a/f/7/af7777e5-7dcd-4800-8a0a-b183365...
Microsoft also has an online reference: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/BCD/bcd/por...
Also there's nice information about the XP boot process: http://www.geocities.com/asoke_dasgupta/boot-xp.html
Wikipedia knows: http://en.wikipedia.org/wiki/Windows_XP_Startup_Process
* ron minnich rminnich@gmail.com [061107 04:25]:
The issue of booting XP just will not go away.
So, there are two options I see, in order of preference:
- find some way, using kexec etc., to boot XP under Linux, then put Linux in
FLASH; done 2. revive ADLO
there have been a number of suggestions for how to do the first one.
- freeldr (vapor?)
- tinyldr (vapor?)
I had a quick chat about tinyldr this morning with Alex Ionescu, the author of tinykernl.
It seems we can actually use most of NTLDR without any change. The only component we actually have to provide seems to be "startup.com" which is an abstracted interface doing all the bios callbacks.
I consider this really great news.
He sent me this URL: http://svn.tinykrnl.org/svn/tinykrnl/base/boot/tbx86/
TBX86 is his version of startup.com.
Stefan
It seems we can actually use most of NTLDR without any change. The only component we actually have to provide seems to be "startup.com" which is an abstracted interface doing all the bios callbacks.
I consider this really great news.
If you care about mswindows at all, it sure is. Does this work for vista too though?
Segher
* Segher Boessenkool segher@kernel.crashing.org [061107 10:16]:
If you care about mswindows at all, it sure is.
according to OSnews.com as well as http://www.w3schools.com/browsers/browsers_stats.asp Windows has a market share of about 90% in the PC market.
If LinuxBIOS is at all aiming at becoming an alternative firmware for PCs, really nobody would assume we can afford not to care.
Given that we can only keep up with supporting new server chipsets if we have a user base worth mentioning, there is no way around targeting the PC market as well.
Does this work for vista too though?
We will need to find out by trying. There is no single future proof path or optimal solution unfortunately.
- The "16bit bios callback approach"
Using ADLO or something similar will help for Windows Vista, but it would need work on the built-in IDE driver, plus it would need work to get int13 plugin cards working.
The strength of this approach is that by using a 16bit legacy interface cleanly encapsulated, we might be able to boot from any PCI plugin card, such as SCSI adapters.
The weakness is clearly that we need to stick with 16bit legacy code (which we already do for vga init anyways)
It sounds somewhat weird that we need to go ancient to support newer systems than what is there today, but this might indeed be the case.
- The patchwork approach
We create clean 32bit loaders for the operating systems we want to boot. Or we modify or enhance existing loaders to do so.
The strength of this approach is we might be able to use Linux for booting from flash, gaining from Linux' good driver support.
The weakness of this approach is we need to reflash the BIOS if we plug in a new SCSI adapter because the old one died. All SCSI drivers in Linux require about 5MB space, 1.3 for all ide devices, 1.5 for Infiniband. Even with pretty good compression, how are we going to plug this, plus a kernel, plus a bootloader plus LinuxBIOS in 1MB flash?
Even though I am sure almost all people on this list compile their own kernels, this is not the usual case for people using Linux anymore. _Requiring_ to recompile your _BIOS_ to support booting from a new PCI card will not make us a lot of friends.
So here we go. That's quite some of the misery along the mainstream path. Solutions, anyone?
for now, let's get adlo back to the point that we can use it? That includes documentation, and possibly setting up a buildrom target for it.
ron
wow, looking at ADLO, this will be a bit of work, but worth it.
What's the accepted way to bulid 16-bit code nowadays? Still bcc?
as86 loader.s is easy: convert and junk as86.
I assume that vista will boot on legacy pc with 16-bit bios, right?
ron
* ron minnich rminnich@gmail.com [061107 16:47]:
wow, looking at ADLO, this will be a bit of work, but worth it.
What's the accepted way to bulid 16-bit code nowadays? Still bcc?
as86 loader.s is easy: convert and junk as86.
I assume that vista will boot on legacy pc with 16-bit bios, right?
and only with that. They refused to put EFI support in there. Funny, but Microsoft is a little bit on our side ;-)
Challenge to the list: find that port patch Richard mentioned. I have to go to a meeting. If someone can find it, I'll check it out and commit it.
ron
* ron minnich rminnich@gmail.com [061107 16:53]:
Challenge to the list: find that port patch Richard mentioned. I have to go to a meeting. If someone can find it, I'll check it out and commit it.
The full source is here (sent around by YhLu) LinuxBIOSv2/util/ADLO
Added in r2457 (found using the search engine on qa.linuxbios.org)
http://snapshots.linuxbios.org/stats/commit-LinuxBIOSv2-2457.log
Stefan Reinauer wrote:
- ron minnich rminnich@gmail.com [061107 16:53]:
Challenge to the list: find that port patch Richard mentioned. I have to go to a meeting. If someone can find it, I'll check it out and commit it.
The full source is here (sent around by YhLu) LinuxBIOSv2/util/ADLO
Added in r2457 (found using the search engine on qa.linuxbios.org)
Now. that I did miss..
I have one idea about. I assume all new system will be dual way or dual cores.
So I let first core run at 16 bit to provide 16 bit interface, and second core runing as 32 bit with Linux kernel as service.
YH
On 11/7/06, Stefan Reinauer stepan@coresystems.de wrote:
- ron minnich rminnich@gmail.com [061107 16:53]:
Challenge to the list: find that port patch Richard mentioned. I have to go to a meeting. If someone can find it, I'll check it out and commit it.
The full source is here (sent around by YhLu) LinuxBIOSv2/util/ADLO
Added in r2457 (found using the search engine on qa.linuxbios.org)
http://snapshots.linuxbios.org/stats/commit-LinuxBIOSv2-2457.log
-- coresystems GmbH • Brahmsstr. 16 • D-79104 Freiburg i. Br. Tel.: +49 761 7668825 • Fax: +49 761 7664613 Email: info@coresystems.de • http://www.coresystems.de/
-- linuxbios mailing list linuxbios@linuxbios.org http://www.openbios.org/mailman/listinfo/linuxbios
* yhlu yinghailu@gmail.com [061107 17:43]:
I have one idea about. I assume all new system will be dual way or dual cores.
So I let first core run at 16 bit to provide 16 bit interface, and second core runing as 32 bit with Linux kernel as service.
Asynchronous Multi Processing? :-)
Here's a novel idea:
How about we ask the original author Adam Sulmicki adam@cfar.umd.edu what he thinks needs to be done to boot XP?
I believe he still reads the list but I've cc'ed him just in case.
Stefan Reinauer stepan@coresystems.de writes:
What's the accepted way to bulid 16-bit code nowadays? Still bcc?
as86 loader.s is easy: convert and junk as86.
I assume that vista will boot on legacy pc with 16-bit bios, right?
and only with that. They refused to put EFI support in there. Funny, but Microsoft is a little bit on our side ;-)
There will be EFI support for 64-bit hostss, IIRC. They just rejected it for 32-bit hosts.
~j
* Johan Rydberg jrydberg@gnu.org [061107 17:47]:
There will be EFI support for 64-bit hostss, IIRC. They just rejected it for 32-bit hosts.
So we can run Windows on 64bit using GNUFI soon? ;-)