簡體   English   中英

GRUB 錯誤 13:自定義 kernel 上的可執行格式無效或不受支持

[英]GRUB error 13: invalid or unsupported executable format on custom kernel

我正在嘗試學習 OS Dev,並開始根據The Little book about OS Development構建自己的 kernel 。

當我使用 bochs 加載 kernel 時,GRUB 抱怨:

error 13: invalid or unsupported executable format

我正在使用的文件:

加載器.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

鏈接.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

菜單.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下載的

Michael Petch 注意到 B. Kostas 為 Grub Legacy 使用了不正確的幻數。

MAGIC_NUMBER equ 0xBADB002 loader.sMAGIC_NUMBER equ 0x1BADB002解決了這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM