主に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システムの構成 [画像のクリックで拡大表示] |
もっとも,カーネルや個々のGNUソフトウエアが個別に提供されていても,それらを一つひとつインストールしてOSとして十分に機能するように構成していくには,高度なスキルと十分な時間が必要になります。大多数の人にはハードルが高すぎます。
そこで,OSとして必要なソフトウエアを組み合わせ,さらにインストーラを追加して導入しやすくした配布形態を「ディストリビューション」あるいは「Linuxディストリビューション」と呼んでいます。通常,我々が「Linux OS」として認識しているものがディストリビューションです。