Arch Linuxでミカン本 環境構築~Day01

2024-05-03

ゼロからのOS自作入門、通称「ミカン本」をやっています。この本ではUbuntu、もしくはWindows(WSLを使うので実質Ubuntu)で開発を行うことを前提としており、Archを使う異端者はいくつもの壁にぶつかることになります。それらの壁を乗り越えて開発を行う手順を記録します。

環境構築

基本的にhttps://github.com/uchan-nos/mikanos-buildに従って進めていく。

依存パッケージのインストール

https://github.com/uchan-nos/mikanos-buildに従って進めていくと、

$ ansible-playbook -K -i ansible_inventory ansible_provision.yml

で詰む。ansible_provision.ymlを読むと、ensure development tools are at the latest versionという名前の、依存パッケージをインストールするタスクでaptを使っているので手動で実行する必要がある。

タスクの内容は以下の通り。

    - name: ensure development tools are at the latest version
      become: yes
      apt:
        name:
          - build-essential
          - llvm-14-dev
          - lld-14
          - clang-14
          - nasm
          - acpica-tools
          - uuid-dev
          - qemu-system-x86
          - qemu-utils
          - xauth
          - unzip
          - python3-distutils
          - ca-certificates

これらのパッケージをAURヘルパー等で必要に応じてインストールする。私の場合llvmのビルドに1時間かかったので注意。

$ yay -S ansible base-devel llvm lld clang nasm acpica uuid qemu xorg-xauth unzip

ymlでバージョンが指定されているllvm、lld、clangなどはバージョンを指定してインストールしたほうが良いのかもしれないが、今の所困っていない。

ansibleの実行

以下のタスクをansible_provision.ymlから削除する。

  • ensure development tools are at the latest version
  • set llvm 14 as default (llvmのバージョンを指定してインストールした場合、書き換えるorそのままでいいかも)

あとはhttps://github.com/uchan-nos/mikanos-buildの「ブートローダのビルド」まで進められるはず。OSのビルドは好みで。

Day01

Day01はハローワールドするバイナリや、C言語プログラムをコンパイルしたものを動かすことを目的としている。正直飛ばしてもよいのだが、一旦真面目にやる。

バイナリを動かす

打ち込みがめんどいので配布されているバイナリファイルhello.efiをそのまま使う。イメージに書き込む際、bootX64.efiに名前を変更するのを忘れないように(1敗)

qemu-system-x86_64を実行してみるが、ウインドウが出てこない。https://wiki.manjaro.org/index.php?title=Virt-manager#Install_virt-manager.2C_qemu_and_all_dependenciesの通りにパッケージを追加でインストールするとウインドウが表示され無事ハロワできたが、どのパッケージが必要だったのかいまいちわからない…

C言語プログラムを動かす

lld-linkがないとか言われていたがいつの間にか使えるようになっていた、コワイ!

おわりに

自作OS on Arch Linuxにおいて、以下のサイトには大変お世話になりました。ありがとうございました。しかしなにぶん2020年の情報であり、古くなっている箇所があります。私のこの記事も数年後には古くなっていることでしょう。その時は誰か記事書いてください

https://hackmd.io/@Durun/Skxi2PLsv#