Steve Gehlbach steve@nexpath.com writes:
Eric W. Biederman wrote:
- Use the elf bootloader
What about the alternative floppy/ide routines?
Given that there are several types of rom chips we will need to continue to support several types of loaders, not just loading from a classic x86 rom chip. I think the floppy/ide routines may be a bit of unnecessary but there is no real impact on the rest of the code base.
Note: All of these drivers are currently in etherboot and you can compile them into the same etherboot binary.
There are a lot of people using this, although I think it could be made better by using the bzImage and jumping to startup_32 etc.
Not at all. Jumping straight to startup_32 is a very bad idea.
First because most times LinuxBIOS is ported people don't have enough time, the code base needs to be optimized for to make simple fast ports. To achieve this everything that can be reused and is motherboard independent needs to be split off into it's own separate binary. And drawing a line at elfboot and saying no further features beyond this point keeps the code bloat down.
Second startup_32 is not an officially supported kernel entry point and so it is subject to change whenever someone sees a better way of making it work. This means for example the code in the tree does not work with the redhat 9 kernel for example. A little bit of wrapper code in mkelfImage that we can change when the kernel changes and not cause people to need to reflash their BIOS is a good thing.
Third people have a lot of ideas on how the user interface to a BIOS should look: Openfirmware, EFI, PCBIOS, etherboot, redboot, the baremetal toolkit, etc. And it just does not make sense to support all of these as build options of LinuxBIOS. It works a lot better to have the LinuxBIOS table with information describing the hardware, and a simple general purpose bootloader that can load any of them. And then the Interface just needs to be built.
Right now with etherboot we have one very good option that the ELF loader can load. And with ADLO, we have a second option on the way. The bare metal toolkit has demonstrated how you can take cute little features like directly loading the Linux kernel still support them, but have the code loaded with the ELF bootloader.
In the 1.0.x release we won't remove code but for the development release I don't see how supporting anything except the ELF bootloader makes sense. The concept has proved itself sound. And it allows us to seriously talk about things like support for the BSDs.
Eric