🍊
ゼロからのOS自作入門 メモ (Day1-1)
こんにちは。 kaiware です。
LLMが世を席巻している昨今、低レイヤー技術へ自分のコア技術をシフトしていくことで 競争から逃げ、 より付加価値の高い人材になれると思い自作OSにチャレンジする。
ここでは、書籍「ゼロからのOS自作入門」をなぞっていき、メモを残していく。
メインOSはWindows11を使い、その上にWSL2でUbuntu環境を構築して学習していく。
動作環境
- Windows バージョン: 10.0.26100.3915
- WSL バージョン: 2.4.13.0
- カーネル バージョン: 5.15.167.4-1
- WSLg バージョン: 1.0.65
- MSRDC バージョン: 1.2.5716
- Direct3D バージョン: 1.611.1-81528511
- DXCore バージョン: 10.0.26100.1-240331-1435.ge-release
- Ubuntu 22.04 LTS
図にすると(多分)こんな感じ。QEMUというエミュレータ上で、今回開発する MikanOS を動かす。
Windowsでの準備
このリポジトリをClone。 osbookというフォルダ名にしておく。
ここを参考にWSLg環境を作成。
Windowsにバイナリエディタ Binary Editor Bz をインストールする。
EFIファイルの作成
Bzでみかん本に載っているバイナリをちまちま打ち込む。
保存先: C:\Work\data\BOOTX64.EFI
また、Clone済みosbookフォルダをWSL/Ubuntu内の$HOME
直下へコピーしておく。
QEMUのインストール、Imageの作成
Ubuntuで以下コマンドを実行していく。
# QEMUのインストール
sudo apt install qemu-system
# homeディレクトリへEFIファイルをコピー
cd /mnt/c/Work/data
cp BOOTX64.EFI ~
cd ~
mkdir -p mnt # -pで親ディレクトリも作成できる
# disk imageの作成
qemu-img create -f raw disk.img 200M
# -> Formatting 'disk.img', fmt=raw size=209715200
# disk imageのフォーマット
mkfs.fat -n 'MIKAN OS' -s 2 -f 2 -R 32 -F 32 disk.img
# -> mkfs.fat 4.2 (2021-01-31)
# disk imageのMount
# mntフォルダの実体がdisk.imgファイルになる
sudo mount -o loop disk.img mnt
# disk.imgにEFIファイルを書き込み
sudo mkdir -p mnt/EFI/BOOT
sudo cp BOOTX64.EFI mnt/EFI/BOOT/BOOTX64.EFI
sudo umount mnt
QEMU起動
# QEMUでEFIファイル起動
qemu-system-x86_64 \
-drive if=pflash,file=$HOME/osbook/devenv/OVMF_CODE.fd \
-drive if=pflash,file=$HOME/osbook/devenv/OVMF_VARS.fd \
-hda disk.img
実行結果:
ちゃんと Hello World が表示されている。
ひとまず起動ができたので、続きは後日別記事へ。
追記:続き書きました
Discussion