第1章 初めてLinux/UNIX系OSにふれる
エンジニアのための最初の一歩(1)

カーネルとディストリビューション(1)

 

1.1カーネルとディストリビューション(その1)

Linuxの構造

 一口にUNIXやLinuxと言いますが,その言葉の指す範囲は前後の文脈や時と場所によって変わります.狭い範囲ではOSのカーネルを指し,広い意味ではコンパイラやエディタなど,システムとして必要不可欠なプログラムを含めたものまでを指して使われます.

 そこでまず,広い意味でのLinuxシステムがどのような要素から成り立っているか,そこから説明します.

カーネル

 Linuxの名前は,本来カーネルにつけられたものです.Linus Torvalds氏を中心に開発が行われているのはカーネルのみであり,カーネルのソースコードが単独で配布されています.2000年2月1日時点での最新バージョンは安定版が2.2.14,開発版が2.3.42です.

 とはいっても,カーネル単独ではシステムとして動作できません.そこで,システムとして動作できるように環境を整え,インストールできるようにパッケージングしたものがディストリビューションなのです(コラム参照).

 ご存じのように,Linuxには多くのディストリビューションが存在しますが,それは上記のような理由によります.中心となる開発チームが,カーネルと主要なプログラムをセットにして配布しているFreeBSDなどのBSD系のシステムとは,この点が大きく異なります.  

デバイスドライバ

 デバイスドライバももちろんカーネルの機能の一部ですが,始めからカーネルの機能として開発されたものばかりではありません.ソースコードが公開されているのですから,制御したい機器を持っている人たちは自分達の手でドライバを開発することが可能です.

 このような独立したドライバ開発は,今も世界中で行われています.その代表的なものとしては,NASAで開発されている10/100MbpsのEthernetカード用のドライバや,David Hinds氏によるPCMCIAドライバなどがあります.また,もともとはBSD系のために書かれたドライバがLinuxへ移植されたものもあります.

GNUプログラム群

 Linuxシステムを構成する多くのプログラムは,GNUプロジェクト(図1)により開発されたものです.

 

(図1)

GNUプロジェクトのホームページ

(http://www.gnu.org/)

(約61Kバイト)

 代表的なところでは,標準ライブラリであるglibc,コマンドインタプリタ(bash)やUNIX互換のコマンド(grep,sed,tar),プログラム開発ツールであるCコンパイラ(gcc),エディタ(emacs)などがあります.

 GNUプロジェクトは,もともとUNIX互換OSの開発を目的としたプロジェクトです注1.OSを開発するためには開発ツールが必要ですから,これらのツールはOSよりも先に完成しています.GNUのプログラム群は,UNIXとの互換性をもちながらも機能が大きく拡張されています.したがって,多くのUNIXシステムに標準で組み込まれた元来のUNIXコマンドよりも強力な機能を利用することができます.

 GNUのプログラム群は,SolarisやHP-UX上でも動作するでしょうが,shやcpなどの基本的なコマンドを置き換えることはあまりありません.また,X Windowのツールキット(gtk)やデスクトップ環境(gnome)などもGNUプロジェクトにより開発されています.

X Window System

 GUIが主流となった現在では,ウィンドウシステムは欠かせない機能です.UNIXではSunView(Sun Microsystems)などの特殊な例を除けば,OSに組み込まれたウィンドウシステムを持ちません.ウィンドウシステムは,一つのアプリケーションとして,カーネルの上で動作します.

 Linuxの標準的なウィンドウシステムはX Window Systemですが,逆に言うと現在のUNIXシステムでX Window System以外が使われる例は非常に少なくなっています.最先端のウィンドウマネージャとして注目を集めているKDEの画面を図2に示します.

 

(図2)

KDE(K Desktop Environment)

(http://www.kde.org/)

(約171Kバイト)

 

アプリケーション

 Linuxには,GNU以外のプロジェクトによって開発されたプログラムも数多く使われています.たとえばPerlです.PerlはUNIXに標準であるツール(sh,awk,sed)よりもっと自分の仕事に向いたツールとして,Larry Wall氏により開発されました.

 GNUプロジェクトは,UNIX互換OSの開発を目標にして開発ツールや互換コマンドを多く開発してきましたが,すでにUNIXを使っていた人々は,自分の仕事をより効率よく行うための道具を開発してきました.

 Linuxを使う人が増えるにつれて,UNIX上で動作していたこれらのアプリケーションは多くの人の努力によってLinuxにも移植され,動作するようになりました.

商用ソフトウェア

 今やフリーソフトだけでなく,商用のソフトウェアも次々と開発/移植されています.たとえば,データベースのOracleや,かな漢字変換のWnnやATOKも,今ではLinux上で使用することができます.

 以上の説明をまとめたLinuxの簡単な構造を図3に示します.

 

(図3)

Linuxの簡単な構図

 

 

 



注:1 ちなみに,GNUのサイト(http://www.gnu.org/)には以下のように書かれている.

  『GNUプロジェクトは,1984年に完全にフリーなUNIXライクOS――GNUシステムを開発するために始められた.Linuxカーネルを使用したGNUシステムのヴァリアントが,現在広く使われている.これらのシステムは多くの場合には“Linux”と言われているが,“GNU/Linuxシステム”と称されるほうがより正確である.』


Copyright 2000 
日樫 英孝/増田 佳泰/山岡 賢一/船木 陸議/ 羅 正華/森 友一朗/祐安 重夫/岩田 孝清/海老原 祐太郎/g新部 裕/ 齊藤 正伸

 

新刊のご案内


Copyright 1997-2001 CQ Publishing Co.,Ltd.