Невозможно загрузиться с AHCI hhd в qemu - PullRequest
0 голосов
/ 17 октября 2019

Я недавно начал разрабатывать свой собственный загрузчик и ядро ​​для образовательных целей.

Я начал загрузку с дискеты, используя qemu-system-i386 -fda image.bin, а затем с жесткого диска, используя qemu-system-i386 -hda image.bin

* 1006. * Затем я начал работать над драйвером ahci для чтения / записи из sata hhds.

Проблема в том, что при запуске qemu с использованием этих аргументов (взято из этот вопрос )

qemu-system-i386 \
 -drive id=disk,file=image.bin,if=none \
 -device ahci,id=ahci \
 -device ide-drive,drive=disk,bus=ahci.0

биос, похоже, не находит жесткий диск, он выводит-

SeaBIOS (version rel-1.12.-0-ga5cab58e9a3f-prebuilt.qemu.org)

iPXE (http://ipxe.org) 00:03.0 C980 PCI2.10 PnP PMM+07F914C0+07EF14C0 C980

Booting from Hard Disk...
Boot failed: could not read the boot disk

Booting from Floppy...
Boot failed: could not read the boot disk

Booting from ROM...
...

запуск qemu с -boot menu=on действительно показывает диск ahci, но когда я выбираю его, он просто печатает тот же вывод сверху.

Я пытался использовать qemu 4.1.50 наи linux, и windows, и 2.8.1 на linux, одинаковый результат во всех версиях.

Обнаруженный мной обходной путь (для работы с драйвером) использовал

qemu-system-i386 \
 -hda image.bin
 -drive id=disk,file=other.bin,if=none \
 -device ahci,id=ahci \
 -device ide-drive,drive=disk,bus=ahci.0

для загрузки ядра,(Но я хочу загрузиться с того же жесткого диска, с которым я взаимодействую). Затем я перечисляю шину pci и нахожу контроллер ahci (как часть инициализации драйвера). Но затем чтение состояния sata активных портов приводит к ipm 0 и det 1 (устройство присутствует, но соединение не было инициализировано), что в соответствии с этой osdev страницей должно инициализировать биостак что сейчас я предполагаю, что это та же проблема.

Я что-то здесь не так делаю?

1 Ответ

0 голосов
/ 18 октября 2019

После сравнения моего загрузчика с другой ОС с поддержкой ahci hhd и проведением дополнительных исследований я выяснил, что мне не хватает действительной таблицы разделов из моего mbr, поэтому BIOS не считает ее загрузочной.

Я точно не знаю, почему он работал с qemu-system-i386 -hda image.bin, поскольку он все еще должен быть жестким диском с разделами, я отредактирую этот ответ, если выясню это.

...