見出し画像

AIにOS自作の環境構築を相談する4日目。

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

Windowsのパソコンの中で「自作OS」を作るために、どうやって専用の「作業部屋」を作るべきかAIに相談するお話です。 昔は準備だけでも大がかりで大変でしたが、AIからは「パソコンの中に別のパソコンを作る」「使い捨ての部屋を作る」など、現代ならではの便利な3つの選択肢が提案されます。 技術の進化に驚きつつも、「どれを選んだら今後の作業が楽になるか?」とワクワクしながら楽しく悩む、本格的な作業に入る前の作戦会議の様子が描かれています。


あらすじ

目的/手段/制約の3つを決めたのだった。


なぜ同じCPUでも「クロスコンパイル」なのか

前提(64bit・自作MBR・QEMU・GAS/GCC)は決まりました。 次は、実際にコードを書いて「ビルドと実行を回す土台」を作っていかなければなりません。

自分のパソコン(今回はWindowsを使います)上で自作OS用のプログラムを作り出す環境を用意するわけですが、ここで必要になるのが専用のツールチェイン(x86_64-elf-gcc など)を用いた「クロスコンパイル」です。

開発に使うパソコンも同じx86_64(64bit)アーキテクチャなのになぜクロスコンパイルが必要なのか。

それは、今回の「クロス」はCPU差だけの話ではなく、ホストOS依存の実行形式(PEなど)を避けて、x86_64-elf のようなOS非依存ターゲットで自作OS向けバイナリを作るために必要だったからです。

何もない環境(ベアメタル)に向けて独自のリンクスクリプトでエントリポイントを決めるため、標準ライブラリを切り離す --freestanding や -nostdlib といった設定もこのために必要になります。

Cygwinの懐かしさと、いつものパターン

昔、自作OS本から離れて汎用ツールに移植した時は、単純に Cygwin( を使ってWindows上にこの環境を作っていた気がします。

そして数年前からは「とりあえずVM(仮想マシン)を立ち上げる」ことが多くなり、最近でも「VMか、別の実機(Linuxマシン)を用意する」というのが自分の中のお決まりのパターンでした。

クロスコンパイルするためにDockerを使っていないのは、単純に既にある環境を作り直す意味がないからです。

しかし、今回のOS自作はあくまで大人の泥沼(趣味)です。

我が家にあるパソコンは潰せないので実機を用意するわけにはいきませんし、重たいVMをガッツリ構築するのも少し大げさな気がします。

「今の時代、Windowsメインでこの環境を作るならどういう構成にするのがベストなんだろう?」 そう思い、AIに現代の主流なやり方を聞いてみることにしました。

AIが提示した「現代の3つの選択肢」

AIに要件を伝えると、現代のWindows開発における現実的なルートとして、以下の3つの選択肢を提示してきました。

  1. WSL2(Windows Subsystem for Linux)を使う Windowsの中に「本物のLinux(Ubuntuなど)」をそのまま同居させる方法。ネットや本のOS自作記事はLinux向けが多いため、手順を一番真似しやすい。

  2. MSYS2 / MinGW を使う よりWindowsネイティブに近い感覚でツール群を入れる方法。 ……これを見た時、ふと「もしかしたら当時OS自作で使っていたのはCygwinじゃなくてこっちだったかもしれない」と思いました。確かにMinGWを使った覚えはあるので、記憶が混ざっているのかもしれません。

  3. Docker を使う 仮想環境(コンテナ)を使う方法。環境の再現性は最強。これまで「既存のVMがあるから」とあえて使ってこなかったが、今回のようにホストPCを汚さず使い捨ての環境を作るには向いている。

今日はここまで!選択は明日へ持ち越し!

AIの回答を見て、改めて「時代は進んでいるな」と実感しました。

記憶にあるMSYS2も健在ですが、昔のように重たいVMを立ち上げなくても、今はWindowsの中に本物のLinuxがすんなり入る(WSL2)し、Dockerを使って手軽に独立した環境を作ることもできる。

OS自作の土台を作るためのアプローチがこんなにもスマートに用意されているんですね。

仕事なら迷わずいつもの環境を使いますが、今回はゼロから作る大人の趣味。選択肢が複数あるというのは、それはそれで悩ましいものです。

LINEスタンプ作成の時もそうでしたが、最初に「どのツール(環境)を選ぶか」で、その後の作業の快適さが大きく変わってきます。

適当に選んで後から変更するのは面倒です。

それはそれで遊びの醍醐味ではあるんですけどね!

いずれにしても、AIの提示した選択肢のメリット・デメリットをじっくり見比べながら、今日は一旦頭を整理することにしました。


次回、開発環境の構築を始める。


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


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

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

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




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

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