LoginSignup
4
2

More than 3 years have passed since last update.

【Tips】Ubuntuでohgamiさん作フルスクラッチUEFIベアメタルプログラミングの環境構築メモ

Posted at

TL;DR;

UbuntuにはOVMFがない(?)ので別途いれておかないといけない

ことの始まり

ohgamiさんが書かれているフルスクラッチ本を読みたいと思い、
適当にUbuntuのVM立てて書いてあるとおり環境を作ってみたもののうまく動かなかったので、
調べた結果OVMFがなかったり、微妙に本来の手順とずれていたのできちんとまとめたくなった。

ovmfをダウンロード

UbuntuにはどうもOVMFというファームウェアのVMが入ってないっぽいのでバイナリからダウンロードする

wget https://sourceforge.net/projects/edk2/files/OVMF/OVMF-X64-r15214.zip
unzip OVMF-X64-r15214.zip

OVMF.fdを移動

解凍したzip内にOVMF.fdがあるので、これを/usr/share/ovmfに配置

mv OVMF.fd /usr/share/ovmd

これでOVMF側の設定は完了

efiファイルを所定の位置に配置

次に、作成したコードファイルをefiに変換し、fs/EFI/BOOT/に配置。その際、ファイル名をBOOTX64.EFIに変換

x86_64-w64-mingw32-gcc -Wall -Wextra -e efi_main -nostdinc -nostdlib \
        -fno-builtin -Wl,--subsystem,10 -o main.efi main.c

mkdir -p fs/EFI/BOOT
cp main.cfi fs/EFI/BOOT
mv fs/EFI/BOOT/main.cfi fs/EFI/BOOT/BOOTX64.CFI
//結果はこんな感じ
tree -a
.
├── fs
│   └── EFI
│       └── BOOT
│           └── BOOTX64.EFI
├── main.c
└── main.efi

QEMUを実行

fs配下をフォーマットしてUEFIをUbuntu上で表示させます。

qemu-system-x86_64 -bios /usr/share/ovmf/OVMF.fd -hda fat:fs

スクリーンショット 2019-05-01 1.28.00.png

問題なく表示されました。

4
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2