GRUB错误13:自定义内核上的可执行格式无效或不受支持

时间:2016-10-13 02:28:10

标签: operating-system nasm osdev grub bochs

我正在尝试学习OS Dev,我开始基于The Little book about OS Development构建自己的内核。

当我使用bochs加载内核时,GRUB抱怨:

error 13: invalid or unsupported executable format

我正在使用的文件:

loader.s

global loader

MAGIC_NUMBER equ 0xBADB002
FLAGS equ 0x0
CHECKSUM equ -MAGIC_NUMBER

section .text
align 4
    dd MAGIC_NUMBER
    dd FLAGS
    dd CHECKSUM

loader:
    mov eax, 0xCAFEBABE
.loop:
    jmp .loop

link.ld

ENTRY(loader)

SECTIONS
{
    . = 0x00100000;

    .text ALIGN (0x1000) :
    {
        *(.text)
    }

    .rodata ALIGN (0x1000) :
    {
        *(.rodata*)
    }

    .data ALIGN (0x1000) :
    {
        *(.data)
    }

    .bss ALIGN (0x1000) :
    {
        *(COMMON)
        *(.bss)
    }
}

bochsrc.txt

megs:              32
display_library:    sdl
romimage:           file=/usr/share/bochs/BIOS-bochs-latest
vgaromimage:        file=/usr/share/bochs/VGABIOS-lgpl-latest
ata0-master:        type=cdrom, path=os.iso, status=inserted
boot:               cdrom
log:                bochslog.txt
clock:              sync=realtime, time0=local
cpu:                count=1, ips=1000000

的menu.lst

default=0
timeout=0

title First OS
kernel /boot/kernel.elf

要执行的命令:

nasm -f elf32 loader.s
ld -T link.ld -melf_i386 loader.o -o kernel.elf
genisoimage -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -A os -input-charset utf8 -quiet -boot-info-table -o os.iso iso
bochs -f bochsrc.txt

我的文件结构如下:

os_dev
  |--(rest of the files)
  |--iso
    |-- boot
      |-- kernel.elf
      |-- grub
        |-- menu.lst
        |-- stage2_eltorito

文件stage2_eltorito已从https://github.com/littleosbook/littleosbook/blob/master/files/stage2_eltorito

下载

0 个答案:

没有答案