5
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【ゼロからのOS自作入門】WSLでHelloWorldするまで

Last updated at Posted at 2021-05-08

はじめに

ゼロからのOS自作入門を買いました。
壊れても良いノートPCが手元になかったため、WSLを使ってOS起動しようとしましたが
第一章のハローワールドから結構詰まってしまったので、上手くいった手順を書き残しておきます。

環境

  • Windows10
  • WSL2(Ubuntu)

手順

WSL2をセットアップする

書籍の「付録A 開発環境のインストール」の「A.01 WSLのインストール」と「A.02 WSLでQEMUを使う準備」を手順通りに行います。
ここは私の環境では特に問題なく完了しました。

Ubuntuをインストールする

Microsoft Storeを開いてUbuntuをインストールします。
検索するといくつか候補がでますが、私は一番上をインストールしました。
store.png
インストールが完了し、Ubuntuを起動するとコンソール画面が表示されます。(GUIで表示されるものと思っていたため少し戸惑いましたが、WSLはGUI表示に対応していないそうですね・・)

コンソールでユーザー名とパスワードを設定するよう言われるので、それに従います。

ハローワールドする

ここから本題の「Hello, World!」を表示するOSを立ち上げます。
まず初めに、書籍ではバイナリエディタでプログラムを写経することがオススメされていましたが、そこで詰まりそうだったためサポートサイトで提供されている完成ファイルを使用しています。

環境構築

Ubuntuのコンソールでプログラムをエミュレートするための環境を構築します。
私はここで詰まったのですが、書籍ではなくサポート用のGithubに手順が記載されています。

まず、「ビルド環境の構築 > リポジトリのダウンロード」を行います。
Ubuntuのコンソールで下記コマンドを順番に実行します。

$ sudo apt update
$ sudo apt install git
$ cd $HOME
$ git clone https://github.com/uchan-nos/mikanos-build.git osbook

lsコマンドでosbookディレクトリができているのが確認できました。
続いて、「ビルド環境の構築 > 開発ツールの導入」を行います。
Ubuntuのコンソールで下記コマンドを順番に実行します。

$ sudo apt install ansible
$ cd $HOME/osbook/devenv
$ ansible-playbook -K -i ansible_inventory ansible_provision.yml

しばらく待つと、処理が完了して入力可能な状態になりました。
console01.png
lsコマンドでedk2というディレクトリができているのが確認できます。
続いて、もしかすると不要かもしれませんが手順に記載されている下記コマンドも実行しました。

セットアップが上手くいけば iasl というコマンドがインストールされ,$HOME/edk2 というディレクトリが生成されているはずです。 これらがなければセットアップが失敗しています。

$ iasl -v
$ ls $HOME/edk2

WSL 上の Ubuntu で上記のコマンドを実行すると,$HOME/.profileDISPLAY 環境変数の設定が追加されます。 この設定を有効にするにはターミナルを再起動するか,次のコマンドを実行する必要があります。

$ source $HOME/.profile

ハローワールド プログラムの実行

書籍に戻り、「1.4 エミュレータでのやり方」を進めていきます。
まず、ハローワールドプログラムをDLします。(本当は写経すべきですが)
Ubuntuのコンソールで下記実行します。

$ curl -O https://raw.githubusercontent.com/uchan-nos/mikanos-build/master/day01/bin/hello.efi

lsコマンドで「hello.efi」というファイルをDLできたのが確認できます。
続いて、ディスクイメージ作成のために下記を実行します。

$ qemu-img create -f raw disk.img 200M
$ mkfs.fat -n 'MIKAN OS' -s 2 -f 2 -R 32 disk.img
$ mkdir -p mnt
$ sudo mount -o loop disk.img mnt
$ sudo mkdir -p mnt/EFI/BOOT
$ sudo cp hello.efi mnt/EFI/BOOT/BOOTX64.EFI
$ sudo umount mnt

lsコマンドで「disk.img」というファイルができたのが確認できます。
続いて、ディスクイメージを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

QEMUのウィンドウが立ち上がり、「Hello, world!」が表示されました!
console02.png
hello_world.png

終わりに

冒頭から詰まって心折れそうになりましたが、何とかハローワールドすることができました。
今後も詰まりまくる予感がしていますが、折れずに続けていきたいなと思います。

参考サイト

5
8
0

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
5
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?