「アプリケーションを開発し、それが動作する際にCPUやメモリーをどう使うのかが想像できる」。Linuxカーネルの開発に“メンテナー”として加わっている富士通の亀澤寛之氏は、OS作りに携わるメリットをこう語る。この能力があれば、情報システムの性能チューニングやトラブル対処に大きな武器となるのは間違いないだろう。

 ただ、簡単にLinuxカーネルのメンテナーになれるわけではないし、OSを自分で作れるわけでもない。そこでLinuxディストリビューションを作ってみることを、お勧めしたい。Linuxディストリビューションは、Linuxカーネルを中核とし、各種システムソフトやアプリケーションをひとまとめにしたもの。GUI環境やパッケージ管理、起動関連のソフト、コマンド群やシェルなどを含んでおり、機能範囲でいえばWindowsに相当し、広い意味の「OS」といえる。

 Linuxカーネルを開発するように内部まですべて分かるわけではないが、Linuxディストリビューションが具体的にどういうモジュールで構成されて、どう動いているのかは、よく分かるはずだ。

 日経Linux8月号の特集1Part5で、Linuxディストリビューションをスクラッチから組み上げる方法を紹介したが、実際に作業してみると、半日から1日で完了する。もっと手っ取り早く自作体験をしたいならば、英Canonical社が開発しているLinuxディストリビューション「Ubuntu」をベースに、自分だけの改造Ubuntuを作るのもいいだろう(詳しくは同特集のPart2)。これなら1時間程度で出来上がる。

 スクラッチから作る手順をおおまかに説明すると、(1)開発用のLinux環境を用意、(2)カーネルのソースを含む各種ファイルを取得してコンパイル、(3)必要なファイルを開発用Linuxから流用するためにコピー、(4)USBメモリーに導入、となる。GUIを導入し、Webブラウザーを起動するところまで可能だ。

 OS作りを実践してみると、システム開発だけでは分からないことがあれこれ体感できる。例えば、以下のような点が挙げられる。

(i)動作に必要な最小限の構成ファイルは少ない

 LinuxをOSとして最低限動作させるためには、たった4つのファイルをビルドするだけで済む。Cライブラリ(glibc)、コマンド集(BusyBox)、モジュールローダーツール(kmod)、カーネル(Kernel)である。モジュールローダーツールは、モジュール化したドライバーのロード/アンロードに必要なもの。これらだけで、コマンドで操作できるOSが出来上がる。逆に、Linuxカーネルだけをコンパイルしてもユーザーが使えるものにはならない、というのは初めての人には意外かもしれない。

(ii)Linuxディストリビューションは個々に違う

 Linuxディストリビューションは各種あるが、それぞれ採用しているモジュールが異なる。主に、GUIやパッケージ管理、起動関連のプログラムなどに違いが見られる。これが各ディストリビューションを特徴付けている。ユーザーにとって一番大きいのはGUIだろう。操作性が異なるだけでなく、軽量かどうか、各種ユーティリティがあるかどうかなど、大きな差が出る。ただ、残りの部分に関しては、各ディストリビューションで異なるソフトが採用されていても、どちらが良いかをユーザーが判断するのはなかなか難しいだろう。むしろ、Linuxディストリビューションの更新頻度やサポート期間などの方が大きな違いに感じるはずだ。

(iii)海外Linuxの日本語化は意外と簡単

 海外で作られているディストリビューションの「Porteus」を日本語化する作業も実施した。本家のファイルを展開し、モジュールを入れ替えてISOイメージを作成する、といった作業で簡単に実現できる。もちろん実際に公開するには、何をどう入れ替えるかといった前段階の作業、各種PCでの検証作業もある。ただそれでも、「KNOPPIX」の日本語作業を実施している産業技術総合研究所の須崎有康氏は、本家KNOPPIXが出てから実質1週間で完了するという。

(iv)カーネルのバージョンアップは早い

 Linuxカーネルは、かなりの勢いで開発されている。カーネルのメーリングリストだけでも1日400~500通のパッチが投稿されている。今回、Linuxカーネル3.4.0を使い、スクラッチ開発を試したが、その約1カ月後には3.4.3になっていた。このため、検証作業も別途必要となってしまった。基本的に作業手順は同じだったが、バージョンアップサイクルの早さを身を持って知ることになった。

 最近では、サーバーもクラウドサービスを利用すればOSを意識しない形ですぐに利用できる。インストールや設定さえ必要ない。いまさらOSを理解しなくても、と感じるかもしれない。ただ、タブレット機やサーバー機をはじめ、CPUやネットワークの性能およびアーキテクチャーの進化が激しい今、それとともに変化していくOSについて学ぶよいタイミングだといえよう。学んだ先に、開発もできるようになればもっと楽しいはずだ。「米NASAのスパコンで自分のコードが動いていると考えると興奮する」(亀澤氏)。できれば、カーネルメンテナーへの道にも挑戦していただきたい。