Windows11+WSL2で始める自作OS入門のためQEMUを入れる
イントロダクション
スターオーシャン 6 が今のところかなりの名作なので時間が持ってかれて仕方ありません。 俺たちが望んでいたスターオーシャンって感じですし、嫌いなキャラクターがいません。全員最高です。
さて、情報学を学んで来たのですがあまりちゃんと勉強してない部分があり上辺だけを嗜んできました。 どこまで気力が持つか微妙ですが、自作 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してきた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を表示できました。