ゼロからのOS自作入門 読みメモ 1章
PCの仕組みとハローワールド
- バイナリエディタで本のバイナリを写経してみる
$ sum BOOTX64.EFI 12430 2 BOOTX64.EFI
本の値と一致した!
- BOOTX64.EFI を含むディスクイメージを作成する
$ qemu-img create -f raw disk.img 200M
-f
オプションでディスクイメージの形式を指定
$ mkfs.fat -n 'HOGE OS' -s 2 -f 2 -R 32 -F 32 disk.img
mkfs.fat
はフォーマットをおこなうコマンド-n
でボリューム名をつける-s
ではクラスタごとのセクタの数をきめる-f
FATの数を決める デフォルトは2(FATの数ってなんだろう)-R
reserved sectors の数を決める-F
FATのタイプ指定(12, 16, 32ビットから指定する)- 見た Design of the FAT file system - Wikipedia
- Mac だと
newfs_msdos
で使えるっぽい?
newfs_msdos -v 'HOGE OS' -c 2 -n 2 -r 32 -F 32 disk.img
- オプションは多分これ(
-c
==-s
,-n
==-f
,-r
==-R
) newfs_msdos
の前にMacだとディスクイメージにattachしないといけなさそう?
$ hdiutil attach -nomount ./disk.img > dev/disk2 # <=これを指定する $ newfs_msdos -v 'HOGE OS' -c 2 -n 2 -r 32 -F 32 disk2 $ hdiutil mountvol /dev/disk2 # これでマウントされる > /dev/disk2 /Volumes/HOGE OS $ sudo mkdir /Volumes/HOGE\ OS/EFI/BOOT $ sudo cp BOOTX64.EFI /Volumes/HOGE\ OS/EFI/BOOT/BOOTX64.EFI $ hdiutil detach disk2
- ovmf を取ってきてbuild GitHub - tianocore/edk2: EDK II
$ cp $HOME/edk2/Build/OvmfX64/DEBUG_XCODE5/FV/OVMF.fd . $ qemu-system-x86_64 -bios OVMF.fd -hda disk.img
動いた!
C言語でHello Worldは昔やったので次は2章読もう