ここの指示に従って、単純な OS カーネルを構築しようとしています: http://mikeos.sourceforge.net/write-your-own-os.html
ただし、フロッピーから起動する代わりに、grub ベースの ISO イメージを作成し、エミュレータでマルチブート CD を起動したいと考えています。マルチブートヘッダーについて、そのページにリストされているソースに次を追加しました。
MBALIGN equ 1<<0 ; align loaded modules on page boundaries
MEMINFO equ 1<<1 ; provide memory map
FLAGS equ MBALIGN | MEMINFO ; this is the Multiboot 'flag' field
MAGIC equ 0x1BADB002 ; 'magic number' lets bootloader find the header
CHECKSUM equ -(MAGIC + FLAGS) ; checksum of above, to prove we are multiboot
section .multiboot
align 4
dd MAGIC
dd FLAGS
dd CHECKSUM
そして、私はイメージを作成するために次のことをしています:
nasm -felf32 -o init.bin init.s
cp init.bin target/boot/init.bin
grub2-mkrescue -o init.iso target/
次に、qemu を実行して起動します。
qemu-system-x86_64 -cdrom ./init.iso
ブート メニューから「myos」を選択すると、エラーが発生します
error: invalid arch-dependent ELF magic
それはどういう意味ですか、どうすれば修正できますか? 私はエルフ形式をいじってみましたが、-felf32
うまくいくようです...