English 中文(简体)
Using grub in floppy image file to start your own kernel inside bochs
原标题:

Basically I ve followed the instructions here http://sig9.com/bochs-grub to create a bare image file which does nothing but lets the BIOS start GRUB.

The problems are:

  • The kernel I am writing will be 32-bit, using http://www.jamesmolloy.co.uk/tutorial_html/index.html for a start, but my host (physical) machine is x86_64 with bochs configured like this:

    ./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

so I m not sure this will work, even after solving the next issue:

  • The grub shell won t start when I boot up bochs.

All I get is:

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

Does anyone have any idea what I could be doing wrong?

I suspect following the instructions from http://sig9.com/bochs-grub had as an effect copying my host s 64-bit grub binaries onto floppy.img which is supposed to be a 32-bit emulated system.

最佳回答

That last line is the debugger printing out the current line of code. Press c and hit enter, and it should start running. As for using 32 bit, it should work as x86-64 processors will run in protected mode just like any other x86 processor.

问题回答

暂无回答




相关问题
How can I do a CPU cache flush in x86 Windows?

I am interested in forcing a CPU cache flush in Windows (for benchmarking reasons, I want to emulate starting with no data in CPU cache), preferably a basic C implementation or Win32 call. Is there a ...

What are the names of the new X86_64 processors registers?

Where can I find the names of the new registers for assembly on this architecture? I am referring to registers in X86 like EAX, ESP, EBX, etc. But I d like them in 64bit. I don t think they are the ...

How do I disassemble raw 16-bit x86 machine code?

I d like to disassemble the MBR (first 512 bytes) of a bootable x86 disk that I have. I have copied the MBR to a file using dd if=/dev/my-device of=mbr bs=512 count=1 Any suggestions for a Linux ...

32bit application access to 64bit registry

I have an OS Shell written in 32bit that is replacing the Explorer.exe of a Vista machine. I run a utility which is also written in 32bit, which allows to switch between the Explorer shell and My ...

Left Shift Overflow on 68k/x86?

I heard that the Motorola 68000 and Intel x86 architectures handle overflow from left shifting differently. Specifically the 68k LSL vs. the Intel SAL/SHL assembly instructions. Does anyone know the ...

Translate a FOR to assembler

I need to translate what is commented within the method, to assembler. I have a roughly idea, but can t. Anyone can help me please? Is for an Intel x32 architecture: int secuencia ( int n, ...

热门标签