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

Operating system GRUB错误13:自定义内核上的可执行文件格式无效或不受支持,operating-system,nasm,osdev,grub,bochs,Operating System,Nasm,Osdev,Grub,Bochs,我正在努力学习操作系统开发,并开始基于它构建自己的内核 当我使用bochs GRUB加载内核时,会抱怨: error 13: invalid or unsupported executable format 我正在使用的文件: 加载器 link.ld bochsrc.txt menu.lst 要执行的命令: nasm -f elf32 loader.s ld -T link.ld -melf_i386 loader.o -o kernel.elf genisoimage -R -b boot/

我正在努力学习操作系统开发,并开始基于它构建自己的内核

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

error 13: invalid or unsupported executable format
我正在使用的文件:

加载器 link.ld bochsrc.txt menu.lst 要执行的命令:

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文件是从我刚刚意识到的

下载的。如果您正在使用mulitboot,那么menu.lst中的行不应该是
multiboot/boot/kernel.elf
刚刚尝试了您的建议。这似乎让事情变得更糟,因为grub现在无法解开menu.lst文件,并向我抛出一个grub终端来手动解决它。尝试了以下方法:
menuentry“First OS”\n{\n multiboot/boot/kernel.elf\n boot\n}
仍然会发生同样的情况……我按照你说的那样做了,我只是不知道如何在注释代码样式中使用换行符。好的,回到你原来的方式。我刚才注意到的一个问题是打字错误。难道
MAGIC_-NUMBER eq 0xBADB002
不应该是
MAGIC_-NUMBER eq 0x1BADB002
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
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