Использование grub в файле образа дискеты для запуска собственного ядра внутри bochs - PullRequest
2 голосов
/ 20 февраля 2011

В основном я следовал приведенным здесь инструкциям http://sig9.com/bochs-grub, чтобы создать пустой файл образа, который ничего не делает, но позволяет BIOS запустить GRUB.

Проблемы:

  • Я пишу ядро, которое будет 32-битным, с использованием http://www.jamesmolloy.co.uk/tutorial_html/index.html для начала, но мой хост (физический) компьютер x86_64 с bochs, настроенным так:

    . / Configure --prefix = / usr --enable-vbe --without-wx --enable-cpu-level = 6 \ --enable-fpu \ --enable-plugins --enable-x86-64 --enable-smp \ --enable-long-phy-address --enable-debugger --enable-disasm --enable-debugger-gui \ --enable-raw-serial --enable-vmx --enable-x86-debugger --enable-iodebug

поэтому я не уверен, что это сработает, даже после решения следующей проблемы:

  • Оболочка grub не запускается при загрузке bochs.

Все, что я получаю, это:

00000000000i[SYS  ] bx_pc_system_c::Reset(HARDWARE) called
00000000000i[CPU0 ] cpu hardware reset
00000000000i[APIC0] allocate APIC id=0 (MMIO enabled) to 0x00000000fee00000
00000000000i[CPU0 ] CPU[0] is the bootstrap processor
00000000000i[CPU0 ] CPUID[0x00000000]: 00000003 756e6547 6c65746e 49656e69
00000000000i[CPU0 ] CPUID[0x00000001]: 00000f20 00000800 00002020 078bfbff
00000000000i[CPU0 ] CPUID[0x00000002]: 00410601 00000000 00000000 00000000
00000000000i[CPU0 ] CPUID[0x00000003]: 00000000 00000000 00000000 00000000
00000000000i[CPU0 ] CPUID[0x00000004]: 00000000 00000000 00000000 00000000
00000000000i[CPU0 ] CPUID[0x80000000]: 80000008 00000000 00000000 00000000
00000000000i[CPU0 ] CPUID[0x80000001]: 00000000 00000000 00000101 2a100800
00000000000i[CPU0 ] CPUID[0x80000002]: 20202020 20202020 20202020 6e492020
00000000000i[CPU0 ] CPUID[0x80000003]: 286c6574 50202952 69746e65 52286d75
00000000000i[CPU0 ] CPUID[0x80000004]: 20342029 20555043 20202020 00202020
00000000000i[CPU0 ] CPUID[0x80000006]: 00000000 42004200 02008140 00000000
00000000000i[CPU0 ] CPUID[0x80000007]: 00000000 00000000 00000000 00000000
00000000000i[CPU0 ] CPUID[0x80000008]: 00003028 00000000 00000000 00000000
00000000000i[PLGIN] reset of 'unmapped' plugin device by virtual method
00000000000i[PLGIN] reset of 'biosdev' plugin device by virtual method
00000000000i[PLGIN] reset of 'speaker' plugin device by virtual method
00000000000i[PLGIN] reset of 'extfpuirq' plugin device by virtual method
00000000000i[PLGIN] reset of 'iodebug' plugin device by virtual method
00000000000i[PLGIN] reset of 'ioapic' plugin device by virtual method
00000000000i[PLGIN] reset of 'keyboard' plugin device by virtual method
00000000000i[PLGIN] reset of 'harddrv' plugin device by virtual method
00000000000i[PLGIN] reset of 'serial' plugin device by virtual method
00000000000i[PLGIN] reset of 'parallel' plugin device by virtual method
00000000000i[XGUI ] [x] Mouse off
00000000000i[     ] set SIGINT handler to bx_debug_ctrlc_handler
Next at t=0
(0) [0x00000000fffffff0] f000:fff0 (unk. ctxt): jmp far f000:e05b         ; ea5be000f0

Кто-нибудь знает, что я могу делать не так?

Я подозреваю, что следование инструкциям http://sig9.com/bochs-grub произвело копирование 64-битных двоичных файлов моего хоста на floppy.img, который должен быть 32-битной эмулируемой системой.

1 Ответ

0 голосов
/ 20 февраля 2011

Эта последняя строка является отладчиком, распечатывающим текущую строку кода. Нажмите «c» и нажмите ввод, и он должен начать работать. Что касается использования 32-разрядного, он должен работать, так как процессоры x86-64 будут работать в защищенном режиме, как и любой другой процессор x86.

...