1.1カーネルとディストリビューション(その2) ディストリビューション 先に述べたように,Linuxには数多くのディストリビューションが存在します.各ディストリビューションごとに方針や用途が異なるので,実現の方法も異なることになります.では,具体的に何が異なるのか,ここで少し見てみます. インストーラ 通常は,小さなLinuxシステムをフロッピーディスクなどから起動し,ディストリビューション固有のインストーラを起動します.インストーラは,システムに必要なプログラムや設定を順次行っていきます. 多くの場合,PCにはすでにWindows98/NTがインストールされていますが,それを考慮して,すでに動作しているOSからLinuxをインストールするようなディストリビューションも最近は増えてきています.インストーラは,デバイスの認識方法やユーザーインターフェースなど,ディストリビューションの間でもっとも違いがわかる部分です. initプロセス Linuxではカーネルが起動すると,まずinitプログラムを実行します.このinitがすべてのプロセスの祖先になります. initは,/etc/inittab注2を読み,そこに書かれた内容に沿ってシステムの起動時の処理を行います.inittabからはプログラムやシェルスクリプトを起動して実際に初期化の処理を行いますが,このinittabの変更やシェルスクリプトを変更することで,UNIXでは自由度の高い設定が可能になっています. /etc/inittabは,説明したように,UNIX環境の性格付けを決定するものなので,内容はディストリビューションによって異なります.ここで,各ディストリビューションごとの/etc/inittabの違いを図4に示します.
さらに,inittabから呼び出されるシェルスクリプトの内容も異なるので,初期化に使われるディレクトリの構造やスクリプトは,それぞれのディストリビューションで異なることになります. ここでは,Ethernetの設定を例にとってみます.Ethernetインターフェースを設定するにはifconfigコマンドでIPアドレスを指定し,routeコマンドでスタティックなルートを設定します.これらのコマンドは,初期化の途中でスクリプトから呼ばれます.各ディストリビューションでは,図5に示すファイルでifconfigが実行されます.
カーネルのバージョン これもディストリビューションごとに異なります. 通常,ディストリビューションの開発には,その時点で最新のカーネルが使われます.しかし,カーネルには多くのデバイスドライバがあり,これらの動作確認など,多くの作業が発生するため,実際にそのディストリビューションが完成したときには次バージョンのカーネルがリリースされていることもあります. ここで,カーネルのバージョンよりも重要になるのがカーネルパッチです.デバイスドライバの説明でも触れたように,多くのドライバが開発されています.これらは正式にカーネルに採用されるまでは,非公式なパッチの形で配布されています. したがって,これらのパッチを採用するかどうかはディストリビューションによって異なります.たとえば,筆者らが携わっているLinuxMLDやLiveLinuxといったディストリビューションでは,そのデバイス(または新しい機能)に対するユーザーの必要性とドライバの安定性を考慮してカーネルにパッチをするかどうかを決めています. パッケージング方法の違い ── rpm,deb,tarなど ここで言うパッケージングとは,あるプログラムをどのように配布するか,またはバージョンの変更などを管理する方法を指します. いままでもっとも普及していたのは,ソースコードをtarという形式で一つのファイルにまとめることでした.この方式はUNIXユーザーにとってそれほど不便なものではなく,手元のコンピュータに合わせてコンパイルし,インストールする作業を各人が行っていました.ただ,この方式は,Xやgcc,emacsといった大きなプログラムになると簡単ではありません.しかし,Linuxのシステム全体を配布するためには,当然のようにこのような大きなプログラムも含まれます. そこで,Linux上でビルドするために必要なパッチやライブラリの依存関係,ビルドの手順,バージョン,作成されたバイナリなどを管理するツールが開発されました. 代表的なツールとして,rpmとdpkgがあります.RedHat社で開発されたものがrpmで,Debianプロジェクトで開発されたものがdpkgです.これらの間に互換性はありませんが,変換するためのツール(alien)はあります. アプリケーションの選択 それぞれのディストリビューションでは,収録するアプリケーションパッケージの選択方針も異なります.Debianのようにすべてを網羅するタイプから,GreenFrogのように必要最低限な小さなディストリビューションまで,各種さまざまです.とはいえ,収録されていないアプリケーションは,各自でソースコードからコンパイルすればよいだけのことなので,収録されているソフトウェアの数をそれほど気にする必要はありません. 日本語処理 X Window Systemはすでに国際化されていますし,Linux(glibc)の国際化も進んでいます.しかし,日本語を表示するだけでなく,マニュアルページやかな漢字変換などを含めて考えると,欧米で開発されたディストリビューションそのままで日本語環境の整ったものはまだありません.すでに,日本では日本語環境をサポートする多くのディストリビューションが開発されているので,日本語を手軽に使う場合にはこちらを使うことになります. 以上のように,カーネルやアプリケーションというユーザーとシステムにそれぞれもっとも近い部分は共通でありながら,その中間部分,つまりインストール方法やシステム管理で各ディストリビューションの個性が表れることになります(図6).
注:2 UNIXのディレクトリ構造は,‘/’(ルート)を最上位とするツリー構造になっている.“/etc/inittab”と書いた場合,ルートの下にある“etc”というディレクトリに納められた“inittab”というファイルであることを示す. Copyright 2000 |
|
Copyright 1997-2001 CQ Publishing Co.,Ltd.