Linux
読み:リヌクス
外語:Linux
フィンランドのリヌース・トーヴァルト(
Linus Benedict Torvalds
)を開発リーダーとして作られている
UNIX
互換
オペレーティングシステム
(OS)の一つ。フリーソフトウェアとして作られた
PC UNIX
中で、最も成功したOSである。
目次
情報
概要
由来
名前
フルスクラッチ
特徴
カーネル
バイナリの互換性
原則非互換
互換性確保方法
情報
使用途 ‐
オペレーティングシステム
カーネル
系統 ‐ UNIX互換
種別 ‐
モノリシックカーネル
開発者 ‐
Linus Torvalds
採用技術
アップデート ‐ (未定義)
パッケージ ‐ (未定義)
UI ‐ (未定義)
ライセンス
‐
GPL
概要
由来
当時フィンランドのヘルシンキ大学に在籍していたリヌースにより、MINIX風のフリーなオープンソースOSとして作られた。
MINIX
というのは、かつてアンドリュー・タネンバウム(Andrew Stuart Tanenbaum)が学生の教材用として作ったOSで、これはPC/AT互換で動作する16ビットOSである。LinusはMINIXを参考に、386マシンで動作する本格的な32ビットOSを作ることを思い立ったのである。
この由来により、元々Linuxはパソコン用のOSであり、移植性なども全く考慮されていなかった。多くの尽力により改良が進み、旧DECのAlphaやSun MicrosystemsのSPARCなどの
ワークステーション
機、更にはApple ComputerのPower MacやシャープのZaurus、ソニーの
PlayStation2
などなど、様々な環境に移植されている。
Linuxの開発開始は1991(平成3)年4月で、最初のバージョン0.01(linux-0.01.tar.Z)は1991(平成3)年9月に公開された。
Linuxの初のアナウンスは、1991(平成3)年10月5日にcomp.os.minixにて行なわれたもので、この呼びかけに多くのプログラマーが応え、現在のような優れたOSが作り上げられてゆくことになる。
名前
「Linux」の名の由来は三説あり、はっきりしない。
Linus Torvald's UNIX
Linus's MINIX
Linux Is Not Unix
そもそもLinus自身が付けた名前ではなく、勝手に付けられた名前LinuxをLinusが承認したことから、このようなことになった。
読みづらいスペルのため色々に読まれている点も特徴の一つ。日本ではもっぱら「リナックス」と呼ばれ、「リヌクス派」との衝突が絶えないのも特徴。なお、作者リヌースは「リヌクス」と発音しているらしい。
フルスクラッチ
AT&T
のUNIXなど、既存のUNIXの
ソースコード
は一切使わず、全て0から、
フルスクラッチ
で書き起こされた完全にオリジナルのUNIX互換
カーネル
である。
POSIX
規格に準拠するように作られているため、他のUNIXとの互換性などは、特に問題とならないレベルになっている。ただし、
Linuxカーネル
としてはPOSIXは取得されていない。一部のディストリビューションがPOSIXを取得しているに過ぎない。また同様に、
The Open Group
からUNIXとしての
商標
も取得していない。このためLinuxは、UNIX互換OS、あるいはUNIX風OS、といった曖昧な表現をされる。
このLinuxは現在GPLで配布されており、GNUの悲願だったUNIX風のフリーOSは、まずLinuxにより達成されたのである。
特徴
カーネル
Linuxとは本来、OSの「
カーネル
」のことで、これを「
Linuxカーネル
」という。しかし、これのみでは動作しない。カーネル以外にも、必要なソフトウェアはたくさんある。
そこでその他の必要なソフトウェアを添付したものがSlackware、Red Hat、MkLinux、Kondaraなどといった名称で配布されているパッケージであり、これを
Linuxディストリビューション
と呼ぶ。
また、現在のカーネル設計モデルのトレンドはMach等に代表される
マイクロカーネル
であるが、Linuxは
モノリシックカーネル
である点も特徴である。この点でLinuxは設計が古い、と批評されることもしばしばある。
作者Linusはこの点について、マイクロカーネルは多少良い点はあるが遅くて書くのも大変、モノリシックカーネルは一つのプログラムが全機能を果たすので書きやすくなる、としている。
バイナリの互換性
原則非互換
Linuxには様々なディストリビューションが存在する。あるディストリビューションで作った実行形式ファイルを、違うディストリビューションに持って行ったとしても、動作するとは限らない。
現在のLinuxは実行ファイルの形式に
ELF
を採用しておりこれは既存全Linux共通であるが、非互換の問題の多くはライブラリの相違によって生じている。
ライブラリを
静的リンク
(スタティックリンク)すれば問題の発生率は下がると見込まれるが、巨大なライブラリを静的リンクした巨大な実行形式は明らかに非効率であり、非現実的である。
基本的にUNIXおよびUNIX風OSの互換性は「ソース互換」であり、ソースプログラムで互換性が維持されればよいという考え方がある。そのためバイナリレベルでの互換性までは考慮されておらず、このように市販ソフトウェアの普及を阻害するような状況が放置されている。
互換性確保方法
それでもLinuxでバイナリ互換を維持するには、次のような条件を満たす必要がある。
汎用のライブラリを使用せず、
システムコール
を直接呼ぶライブラリを自前で作る
同じカーネルバージョンで使うことを前提とする
同等のCPUで使うことを前提とする
Cなら可能性はなきにしもあらずだが、C++でこれを実現することはほぼ不可能だろう。
Windowsの場合は互換性を大切にする保守的思想があり、
構造体
の
仕様変更
などがある場合はAPI名を変更し(xxxに対してxxxExなど)新旧両方に対応する。
しかしLinuxは設計思想が明らかにおかしく、カーネルごとの互換性は全く考慮されていない。あるカーネルバージョンから突如構造体の仕様が変わることも珍しくない。従って、システムコールを自分で呼ぶ場合、カーネルバージョンはあるバージョン限定とならざるを得ないのである。
こういったごく基本的な問題の解決が無い限り、LinuxにWindows並の(ゲームを含めた)市販ソフトウェアが揃うことは無く、もってLinuxそのものが普及することも無いであろう。
再検索