見出し画像

環境構築スタート!……そしていきなりやらかす5日目

【AIによるこの記事の3行まとめと解説】

自作OSを作るための「専用の作業部屋(開発環境)」をパソコンの中に用意しようと奮闘するお話です。 しかし、作業用の道具をイチから手作りすることにこだわった結果、2時間以上待たされた挙句にシステムがフリーズして壊れるという大失敗をやらかしてしまいます。 「最初から理想を追求しすぎると痛い目を見る」と深く反省し、次回はもっと手軽で素早く準備できる方法へ作戦を変更する、リアルな泥沼の記録です。


あらすじ

AIから現代的開発環境として3つの選択肢を叩きつけられたのだった。


開発環境の選定と準備

OS自作のための専用環境を作っていきます。今回はWindows上で「ホストのPCを汚さず、安全かつ快適に」進めるため、以下の構成にしました。

  • OS: Windows (10 または 11)

  • コンテナ環境: Docker Desktop

  • エディタ: VSCode(私は派生のCursorを使用)+ 拡張機能「Dev Containers」

  • エミュレータ: QEMU

Windowsに直接色々なツールを入れるのではなく、Dockerで作った使い捨てのコンテナ(Linux環境)の中でOSをビルドし、VSCodeの「Dev Containers」拡張を使ってエディタから直接コンテナ内を操作する、という現代的なスマートな作戦です。

(※会社PCなどではセキュリティポリシーで仮想化が制限されていてDockerが動かない場合があるので、BIOSの仮想化設定やWSL2が有効になっていることが前提になります)

QEMUのインストール

DockerやVSCodeのインストールは公式サイトから普通に入れるだけなので割愛しますが、自作OSを動かすためのエミュレータ「QEMU」のインストール手順だけ残しておきます。

winget(アプリインストーラー)が使える環境なら、コマンド一発で入れるのが圧倒的に楽です。管理者権限のコマンドプロンプトやPowerShellで、以下のコマンドを実行します。

winget install --id SoftwareFreedomConservancy.QEMU --source winget --accept-package-agreements --accept-source-agreements

💡 ここがポイント(つまずきどころ)

  • winget search qemu だけで探そうとすると、途中で「ソース契約に同意しますか?」と聞かれて処理が止まってしまうことがあります。上記のように --source winget や同意オプションを付けておくとスムーズです。

  • インストール後、コマンドが見つからない場合はPCの「環境変数(PATH)」にQEMUのインストール先(多くは C:\Program Files\qemu)を手動で追加するか、一度ターミナルやVSCodeを再起動してみてください。

ターミナルで qemu-system-x86_64 --version と打ち込んでバージョンが表示されれば、ホスト側の準備は完了です!

泥沼のクロス環境構築と「Dockerの死」

さて、ここからが今回の本題であり最大の泥沼です。

OS自作のためには、普段のWindowsやLinuxの標準環境とは切り離された、OS非依存のバイナリを作るための「x86_64-elf」向けの専用コンパイラ環境(クロスツールチェイン)を用意するのが定石です。

そこで、「コンテナの中でこの専用ツールチェインをソースコードからビルドする」という設定のDockerfileを書き、意気揚々とコンテナの構築を開始したのですが……

待てど暮らせど終わらない。

なんと、実測で8500秒(約2時間20分)を超えてもコンパイルが完了しません。いくらなんでも開発の待ち時間として現実的ではないため、たまらず途中でビルドを強制キャンセルしました。

すると、直後にDocker Desktopが完全に起動しなくなりました。

どうやら長時間CPUやメモリをフル稼働させていたビルドを途中で打ち切ったせいで、裏側で動いているWSL(Windows Subsystem for Linux)が中途半端な状態のまま応答しなくなり、Wsl/CommandTimedOut というエラーを吐いてフリーズしてしまったようです。 (結局、Windows本体を再起動することでなんとか復旧しました……)

「ソースビルド」はリスクが高すぎる

今回の敗因は、「クロス環境をコンテナ内で一からソースビルドする」という理想を追求しすぎたことです。 一度構築できれば再現性は高いのでしょうが、初回コストがあまりにも大きすぎますし、今回のように失敗した時のダメージが計り知れません。

「まずは速く回る環境を作るべきだ」。 そう痛感し、専用のツールチェインを自前でビルドするのはやめることにしました。

まずは一般的なパッケージ(apt)を使って、数分でサクッと立ち上がる環境へ方針を大きく切り替える決断をした5日目でした。


次回、方針を転換し、最速で立ち上がる「Dev Container」環境の構築に挑む。


公開中の全記事はこちら!

記事作成のお供に!お役立ちツール!

コピペするだけ!簡単「タイトル+URL一撃コピー(note特化型)」|へろん
コピペするだけ!簡単「AI記事から**を消す(note特化型)」|へろん

その他、こんなことやってみてます!


気に入ったらスキ、フォローよろしくお願いします!
note外から見にきてくださったかたも、もしよければハートマーク押して頂けたら励みになります😊


いいなと思ったら応援しよう!

へろん いつも応援ありがとうございます! 快適な制作を進めるためのおやつ活動費に使わせて頂きます!