LoginSignup
0
0

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

Last updated at Posted at 2024-06-25

はじめに

ゼロからのOS自作入門を買いました。
HelloWorldで行き詰ったので、上手くいった手順の書き残しておきます。

環境

  • Windows 10
  • WSL2(Ubuntu)

手順

WSL2をセットアップする

書籍通り行う。

Ubuntuをインストールする

書籍通り行う。

Hello worldする

ここから本題の「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

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

書籍に戻り、「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 -F 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!」が表示されました!
image.png
image.png

run_qemu.shでの実行方法

$HOME/osbook/devenv/run_qemu.sh osbook/devenv/mnt/EFI/BOOT/BOOTX64.EFI
0
0
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
0
0