LINUX.ORG.RU

Продолжение темы о загрузчике.


0

0

Вообщем написал я простенький MBR(немногим лучше MS-DOSовского).
Скопировал первый гигабайт своего диска:
dd if=/dev/sda of=disk.img bp=256M count=4

Установил свой MBR:
dd if=boot.bin of=disk.img bs=446 count=1 conv=notrunc

Запустил qemu:
qemu -hda disk.img

Выводит строку
GRUB _

_ -- курсор

Видимо какие-то проблемы с stage 1.5, но вообщем работает. Теперь решил посмотреть на настоящие MBR:
http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/boot/i386/boot0/boot0.S?rev=1.16

В загрузчике FreeBSD номер диска получается таким образом:
testb $0x20,_FLAGS(%bp) # Set drive number?
jnz main.1 # Yes
testb %dl,%dl # Drive number valid?
js main.2 # Possibly (0x80 set)
/*
* Only update the boot-sector when there is a valid drive number or
* the drive number is set manually.
*/
orb $0x40,_FLAGS(%bp) # Disable updates
main.1: movb _SETDRV(%bp),%dl # Drive number to use
/*
* Whatever we decided to use, now store it into the fake
* partition entry that lives in the data space above us.
*/
main.2: movb %dl,_FAKE(%bp) # Save drive number
callw putn # To new line
pushw %dx # Save drive number

То есть проверяется, указан ли номер диска явно(для опций ближе к концу место выделено) и если это не так, то используется значение из dl. До этого dl нигде не меняется. То есть как я понял, устанавливается BIOSом. Так ли это или я ошибаюсь?

Ну и второй вопрос: где можно взять нормальную документацию по загрузке на x86 и вообще BIOSу? Хотя бы что в каких регистрах находится после загрузки и какие флаги установлены, включены ли прерывания, какой режим и т.п.

anonymous

> где можно взять нормальную документацию по загрузке на x86 и вообще BIOSу?

В старых книгах по IBM PC? 20-летней давности, скажем.

/me вспоминает Tech! Help 4.0

tailgunner ★★★★★
()

> Хотя бы что в каких регистрах находится после загрузки и какие флаги
> установлены, включены ли прерывания, какой режим и т.п.
Intel 64 and IA-32 Architectures Software Developer's Manual
Volume 3A, Chapter 9

rei3er
()

Жордейн "Программирование IBM XT/AT" или как-то так

generatorglukoff ★★
()
Ответ на: комментарий от rei3er

>Intel 64 and IA-32 Architectures Software Developer's Manual >Volume 3A, Chapter 9

Смотрел, там похоже описано состояние после перезагрузки, то есть такое, в каком процессор получает BIOS. А в каком состоянии процессор находится в момент старта MBR там нет.

anonymous
()
Ответ на: комментарий от anonymous

GRUB использует из MBR кучу дополнительной инфы, так что его грузить не буду. А вот ReactOS уже грузится с моим MBR :)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.