ゼロからの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
$ cp $HOME/edk2/Build/OvmfX64/DEBUG_XCODE5/FV/OVMF.fd .
$ qemu-system-x86_64 -bios OVMF.fd -hda disk.img

f:id:dvi2911:20210403193133p:plain

動いた!

C言語Hello Worldは昔やったので次は2章読もう