[SeaBIOS] [PATCH] Support multiple hard disks in boot list.
Gaurav Poothia
gaurav.poothia at gmail.com
Mon Jul 10 22:49:45 CEST 2017
Hi Kevin,
Thanks for your response!
I have tested this successfully against grub (specifically GRUB 2)
Since you asked I went digging for the relevant code in grub - here is
the line of code that will validate range of acceptable DL values and
if acceptable jump ahead to boot from that disk and skip hardcoding DL
to 0x80:
https://github.com/coreos/grub/blob/master/grub-core/boot/i386/pc/boot.S#L222
So for example if bios were to set DL to 0x81 (by fallback logic in
the patch) that will be acceptable to grub
On Fri, Jul 7, 2017 at 7:55 AM, Kevin O'Connor <kevin at koconnor.net> wrote:
> On Fri, Jun 30, 2017 at 08:48:27PM -0400, Gaurav Poothia wrote:
>> If multiple disks in boot order and first is unbootable
>> then fallback to other disks in list.
> [...]
>> @@ -731,7 +736,10 @@ do_boot(int seq_nr)
>> break;
>> case IPL_TYPE_HARDDISK:
>> printf("Booting from Hard Disk...\n");
>> - boot_disk(0x80, 1);
>> + if (ie->hdid == -1)
>> + boot_disk(0x80 , 1);
>> + else
>> + boot_disk(0x80 + ie->hdid, 1);
>> break;
>> case IPL_TYPE_CDROM:
>> boot_cdrom((void*)ie->vector);
>
> Ultimately, what this patch does is set the DL register to something
> other than 0x80. I tested this approach a few years ago, and at the
> time I could not find a single bootloader that used DL. What
> bootloaders did you test with this, and which ones worked and did not
> work?
>
> -Kevin
--
Kiva.org - Loans That Change Lives
More information about the SeaBIOS
mailing list