Windows11+WSL2で始める自作OS入門のためQEMUを入れる

2022-11-24

イントロダクション

スターオーシャン 6 が今のところかなりの名作なので時間が持ってかれて仕方ありません。 俺たちが望んでいたスターオーシャンって感じですし、嫌いなキャラクターがいません。全員最高です。

さて、情報学を学んで来たのですがあまりちゃんと勉強してない部分があり上辺だけを嗜んできました。 どこまで気力が持つか微妙ですが、自作 OS という本が最近では出回っているので写経していこうかと思い買ってきたわけです。

ゼロからの OS 自作入門

初日の参考コード uchan-nos/mikanos

アルバイト代も入ったのでやっていきましょう。

QEMUのインストール

仮想エミュレータで実行していきます。 QEMU を使うのが推奨されているのでこれを使っていきます。

QUEM は新卒入社した会社でアサインされた最初のプロジェクトで使用しました。 車載製品向けの GW 開発のために Yocto Linux を動かしていたのですがその開発環境を構築するのに使用しました。 全然情報なくて Yocto Linux のメーリングリストに助けを求めたりしてたのが懐かしいです。

Xサーバに追加する

X サーバが必要になります。X サーバとは GUI を取り扱うソフト群です。 QEMU動作に必要となるのでこれを入れていきます。

VcXsrvを使っていきます。

VcXsrv ここからDLできます。

インストーラ

Nextをおして進めたら良かったです。

起動画面

XLaunchを起動した後、設定画面でアクセスコントロールを無効にしておきます。 これをやっておかないことには、WSL上で動作するGUIアプリの接続を拒否します。

アクセスコントロールの無効

WSLにQEMUをインストールする

WSLにてQEMUを追加していきます。

sudo apt update && upgrade
sudo apt install libvirt-daemon
sudo apt install qemu-kvm

これで準備できました。

QEMUでのHello,world

git clone https://github.com/uchan-nos/mikanos-build.git osbook

QEMUがインストールできていれば、IMGを作成します。

qemu-img create -f raw disk.img 200M

disk.imgというファイルが作られます。

‘‘’terminal mkfs.fat -n ‘MIKANOS’ -s 2 -f 2 -R 32 -F 32 disk.img ’’’

出力結果はこのようになります。

‘‘’terminal mkfs.fat 4.2 (2021-01-31) ’’’

mkdir -p mnt
sudo mount -o loop disk.img mnt
sudo mkdir -p mnt/EFI/BOOT
sudo cp BOOTX64.EFI mnt/EFI/BOOT/BOOTX64.EFI
sudo umount mnt

このときBOOTX64.EFIについてはここからもらってきました。

DL後ファイル名を上記の通り変更

先程DLしてきたEFIファイルをQEMUから起動します。

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

結果

UEFI BIOSによる起動をエミュレートできました。

実行結果

まとめ

先程DLしたBOOTX64.EFIについては、UEFIアプリケーションとなります。 例えば、先程のEFIファイルをUSBメモリに入れておけば今回のOSを起動できる。

EFIファイルを作ればこのように、ブートローダからHello Worldを表示できました。