> 8го терабайтагигабайта же.
Кстати, нахваливающим "старые добрые" я бы посоветовал просто полистать Ralf Brown's interrupt list и всю ту кучу экстеншенов и воркароундов ...
http://www.ctyme.com/intr/int.htm
http://www.ctyme.com/intr/int-13.htm
ну или можно глянуть в код груба, там тоже "костылей обхода" вагон и маленькая тележка.
https://github.com/coreos/grub/blob/40e2f6fd353061fdb3ec4dd6...
* This is a workaround for buggy BIOSes which don't pass boot
* drive correctly. If GRUB is installed into a HDD, check if
* DL is masked correctly. If not, assume that the BIOS passed
* a bogus value and set DL to 0x80, since this is the only
https://github.com/coreos/grub/blob/40e2f6fd353061fdb3ec4dd6...
* Determine the hard disk geometry from the BIOS!
* We do this first, so that LS-120 IDE floppies work correctly.
https://github.com/coreos/grub/blob/40e2f6fd353061fdb3ec4dd6...
* %dl may have been clobbered by INT 13, AH=41H.
* This happens, for example, with AST BIOS 1.04.
https://github.com/coreos/grub/blob/40e2f6fd353061fdb3ec4dd6...
/* Check if unsuccessful. Ignore return value if carry isn't set to
workaround some buggy BIOSes. */
https://github.com/coreos/grub/blob/40e2f6fd353061fdb3ec4dd6...
/* Some buggy BIOSes doesn't return the total sectors
correctly but returns zero. So if it is zero, compute
it by C/H/S returned by the LBA BIOS call. */
total_sectors = ((grub_uint64_t) drp->cylinders)