主にWindowsプログラマを対象に,Linux上でプログラミングを行う方法を段階的に解説します。第2回は,オープンソースで開発されている代表的なOSの一つ,Linuxの基本について説明します。

 「LinuxはオープンソースのOS(Operating System)である」というのが一般的な認識でしょう。しかし,「Linux」という名前のOS製品があるわけではありません。

 Linuxに関する記事などをよく読んでいくと,「Red Hat Enterprise Linux」「SUSE Linux」「Debian GNU/Linux」「Fedora」「Ubuntu」といった具体名に気が付きませんか? これらとLinuxの関係はどうなっていて,それぞれは一体何が違うのでしょうか。さらに,LinuxとUNIXはどのように違うのでしょうか。

 前回に掲載した「オープンソースの基礎を学ぶ」に続いて,今回はLinuxについて学びます。ちなみにLinuxは「リナックス」と発音されるのが一般的ですが,「リヌックス」「リヌクス」と読まれることもあります。

GNU/Linuxシステム

 Linuxは,1991年当時フィンランドの大学生だったLinus Torvalds(リーナス・トーバルズ)氏によって開発が始まりました。「LinuxはOSである」と言われることもありますが,本来「Linux」とはOSのカーネル部分のみを表す言葉です。最近はLinuxをOSの意味で用いることが多いことから,カーネル部分を指すときに「Linuxカーネル」と呼ぶこともあります。また,OSの意味で使っているときには,「Linux OS」と表現することもあります。

 しかしながら,厳密には「Linux=カーネル」であることを覚えておいてください。

 カーネルには主に,次のような機能があります。

・プロセス/スレッド管理
・物理メモリー管理
・仮想記憶
・ファイル・システム
・ネットワーク管理
・デバイス管理

 カーネルはOSの中核部品ですが,カーネルだけではOSとして利用することはできません。OSを自動車にたとえると,カーネルはエンジンやシャーシなどの中核部品に相当しますが,それだけでは自動車として使えません。ハンドル(ステアリング)や変速機なども必要になります。

 同様にカーネルだけではOSとして使えません。ユーザーが各種機能を使ったり設定を施したりするためのユーザー・インタフェースが必要ですし,様々なソフトウエアを動作させるためのライブラリも必要です。クライアント・マシンであればGUI(Graphical User Interface)を実現するための仕組みも求められます。

 Linuxでは,これらのソフトウエアの多くにGNUプロジェクトで開発されたものが使われています。そのため,OSとしてLinuxを指す場合に,「GNU/Linuxシステム」と呼ぶこともあります(図1)。

図1●GNU/Linuxシステムの構成
図1●GNU/Linuxシステムの構成
[画像のクリックで拡大表示]

 もっとも,カーネルや個々のGNUソフトウエアが個別に提供されていても,それらを一つひとつインストールしてOSとして十分に機能するように構成していくには,高度なスキルと十分な時間が必要になります。大多数の人にはハードルが高すぎます。

 そこで,OSとして必要なソフトウエアを組み合わせ,さらにインストーラを追加して導入しやすくした配布形態を「ディストリビューション」あるいは「Linuxディストリビューション」と呼んでいます。通常,我々が「Linux OS」として認識しているものがディストリビューションです。