Am 16.04.2008 um 23:00 schrieb Axel Dörfler:
Michael Pfeiffer <michael.w.pfeiffer@xxxxxxxxx> wrote:Am 16.04.2008 um 19:27 schrieb Axel Dörfler:Michael Pfeiffer <michael.w.pfeiffer@xxxxxxxxx> wrote:In order to boot from another than the first hard drive the bootman UI needs a mapping from hard drive device path to the BIOS hard drive number, that starts with 0x80 for the first drive. Is there an API already that provides that information?Yes there is, it's just not implemented in Haiku yet (B_GET_BIOS_DRIVE_ID ioctl()) :-)Great. Whom do I have to pay to get it implemented :-)Do you insist on not looking yourself? ;-)
Well, I did not expect to do kernel development when I applied for the bootman UI task. I don't prefer, but I can try it, of course I will be much slower than someone who is familiar with the kernel.
It's even a bit of work, but I can outline it a bit:1) the boot loader needs to make a connection between drive ID and diskin a way that the OS can recognize it again. IIRC BeOS uses a sum/hash of the contents of a few blocks until it has enough to differentiate all (BIOS) drives. The name, or serial number is probably not reliably available from the BIOS, but I haven't really tried that yet. 2) it would need to store that information in the kernel_args structure. 3) when the OS detects the drives, it would see in that structure how it can recognize the drive again, and can then store the BIOS ID of that drive internally, so that B_GET_BIOS_DRIVE_ID can work as expected.
Interesting, when I woke up this morning, I had something similar in mind :-)