[SeaBIOS] CHS translation (BIOS incompatibility)

Nikolay Ivanets stenavin at gmail.com
Wed Jun 6 08:52:19 CEST 2018


Kevin O'Connor <kevin at koconnor.net> wrote:
>
> If I understand it correctly, you're looking for LCHS=1024/255/32.  I
> don't know why QEMU wont let you specify heads=255, but short of doing
> that, I don't see a way for SeaBIOS to obtain that logical mapping.
>
> The disk geometry translation stuff is arcane - the SeaBIOS code is
> translated from the original Bochs bios code.  If it needs to be
> enhanced, it would require both a qemu patch (to specify the desired
> translation/geometry) and a seabios patch (to implement it).
>
> -Kevin

Kevin,

Why is QEMU disk geometry limited to 16 heads:
https://lists.gnu.org/archive/html/qemu-discuss/2015-04/msg00019.html
Here is similar discussion about disk image required 32 sectors/track:
https://lists.gnu.org/archive/html/qemu-devel/2008-06/msg00380.html

The problem is that Qemu takes total number of sectors (based on disk
size) and reports maximum allowed PCHS=16383/16/63 which Seabios
cannot translate to required LCHS=1024/255/32 under no circumstances
because 63 sectors/track is hardcoded. So Volume Boot Record cannot be
loaded and thus, Operating System.

One more report for your reference:
https://www.veritas.com/support/en_US/article.100006632

So it looks like such a disk images cannot be booted under Qemu + Seabios.
I realize that it is impossible to make a BIOS to automatically adopt
translation to satisfy all use-cases.
The only way I see is to provided an alternative build of Seabios
where alternative No of sectors/track is used for translation instead
of hard-coded value of 63.
This might be configured via "make menuconfig" for example. I can work
on this if you find it acceptable.

--
    Mykola Ivanets



More information about the SeaBIOS mailing list