[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