ソースコードから Linux ディストリビューションを作り上げる「Linux From Scratch」をやってみたので、感想をまとめます。
Linux From Scratch とは
Linux From Scratch は、各種ソースコードから独自の Linux ディストリビューションを作り上げるプロジェクトで、Linux に興味のある方におすすめされる定番コンテンツの 1 つです。
公式サイトは以下です。
https://www.linuxfromscratch.org/
Linux From Scratch 自体、Linux ディストリビューションの一種のように言われることもあるようです。
完成品
最終的に、以下のように Linux が起動するところまでいけました!(感動)
なぜやろうと思った?
個人的に最近自作 ◯◯ を色々とやっているのですが、このあたりで Linux の知識をもう少し拡充したいと思い、挑戦することにしました。
やってみてどうだった?
やってみた感想としては、まず何より、やってみて良かったです。
特に、後述する通りブート周りでかなりハマったので、解決しようと試行錯誤する間に GRUB2 のコマンドやカーネルのコンフィグレーションについて知識がつきました。
また、クロスコンパイル環境の構築や、chroot を活用した環境構築なども、参考になりました。
そして何より、「Linux ディストリビューションを作ったことがある」と思えるようになったことは、自信に繋がると感じます。
ハマった点
Linux From Scratch の手順はしっかりメンテナンスされているので、基本的にそのまま実行すれば問題ありませんでした。
ひたすら make して make install していくのが中心で、そのあたりで困ることはなかったです。
唯一、カーネルのコンフィグレーションに関する知識不足で、最後のブートする段階でかなりハマりました。
自分は KVM の仮想マシンで実施したのですが、/dev/vdb1 をルートファイルシステムとしてマウントするためには、make menuconfig で VIRT 関係のドライバを有効にする必要があります。
その際、[m] という設定ではモジュールとしてビルドされ、[y] という設定ではカーネルに組み込まれることになります。
自分は [m] と設定しても /dev/vdb1 を扱うことができず、何がおかしいのかも分からず困っていました。
そこを [y] に直すことで、しっかり起動してくれました。
※ [m] のままでも、モジュールをうまくロードする設定をすればいいのかもしれません
どんな人におすすめ?
Linux From Scratch は、Linux についてある程度知識があり、さらに詳しくなりたい方にとてもおすすめです。
サイトに書かれている通りにコマンドを打てば進めること自体はできるのですが、ある程度前提知識がないと何をやっているのか分からず、あまり勉強にならないと思います。
そこで例えば、
あたりの本を読んで、Linux の仕組みの基礎知識をつけてから取り組むと良いと思います。
LPIC で言うとレベル 2 くらいの内容なので、資格取得の片手間に挑戦してみても良いと思います。
おわりに
個人的に最近は低レイヤの知識をつけたいと、自作 CPU、コンパイラ、OS、Linux ディストリビューションなどなど、自作 ◯◯ に色々と挑戦しています。
次は組み込み OS かデバイスドライバに挑戦したいと考えています。