なぜ
「LinuxはOSではないが、UNIXはOSである」
というのか?

  • LinuxはカーネルとしてGNUのツール群と組み合わさることでOSとして機能します。
  • 一方UNIXは最初からカーネルとツールが一体のシステムとして設計されました。
  • そのためLinuxは「カーネルの名前」、UNIXは「OS全体の名前」として使われます。
  • UNIXはのちに規格化され、現在もmacOSなどが認証を取得しています。

関連記事

1. カーネルとOSは別物

「LinuxはOSじゃない、カーネルだ」という言葉を聞いたことがあるでしょうか。
技術者の間では常識に近い話ですが、「じゃあUNIXは?」と聞かれると、答えに詰まる人も少なくありません。
この二つは似たものとして語られがちですが、生まれ方が根本的に違います。

カーネルとOSは別物 カーネル 特権モードで動作 メモリ・プロセス管理 HW通信 ユーザー空間 シェル エディタ ブラウザ コマンド ユーザーモード動作 単体では動かない カーネルが必要 カーネル単体 ≠ OS | カーネル + ツール群 = OS

そもそもOSとは何でしょうか。

OS研究の標準的な教科書である『Operating System Concepts』によれば、OSはコンピュータのハードウェアを管理するソフトウェアであり、アプリケーションの基盤を提供しながらユーザーとハードウェアの間を仲介します。
つまり、OSには、二つの側面があり、一つはリソースアロケータとしての側面で、CPU・メモリ・I/Oデバイスといったリソースを管理し競合する要求を調停します。
もう一つはコントロールプログラムとしての側面で、プログラムの誤った実行や不正な使用を防ぎます。

OSとカーネルの違いについては、「常時稼働しているただ一つのプログラムがカーネルであり、それ以外はシステムプログラムかアプリケーションである」ともあります。

1.1. 特権モードとユーザーモード

現代のCPUには二つの動作モードがあります。

ハードウェアを直接操作できる「特権モード」と、
安全のために制限された「ユーザーモード」です。

カーネルは特権モードで動き、メモリの割り当て、プロセスの管理、ハードウェアとの通信を担います1
ブラウザ、シェル、テキストエディタといった日常的に触れるプログラムは、すべてユーザーモードで動いています。

カーネルだけがあっても、画面に何かを表示することも、ファイルを操作することもできません。
カーネルにユーザー空間のツール群が組み合わさって、初めて「OS」として機能するわけです。

2. LinuxとUNIXの出自の違い

では、LinuxとUNIXはそれぞれどちらに当たるのでしょうか。
それは、それぞれの作られ方を見ていくことで明らかになります。

LinuxとUNIXの誕生 Linux(1991) Linuxカーネル トーバルズ GNUツール群 ストールマン 組み合わせてOS完成 Ubuntu Fedora 出自が別々 → 後に統合 UNIX(1969) ベル研究所 一体開発 カーネル sh / ls パイプ ed / cp 渡した時点でOS 最初から一体 → UNIX=OS

2.1. Linuxは「カーネル単体」として生まれた

歴史の順序とは前後しますが、先にLinuxの誕生を見てみましょう。

1991年、フィンランドの学生リーナス・トーバルズは、自分のPC用に小さなカーネルを書き、インターネット上に公開しました2
彼が作ったのはカーネルだけで、シェルもコマンドも含まれていませんでした。

当時すでに、リチャード・ストールマンが率いるGNUプロジェクトがシェルのbash、コンパイラのgcc、各種コマンドといったユーザー空間のツールを揃えていました3
しかし肝心のカーネルが未完成だったため、システム全体が動く状態ではありませんでした。

Linuxカーネルの登場で、この「頭のないシステム」に頭がつきます。
GNUのツール群とLinuxカーネルを組み合わせることで、完全に動作するフリーのOSが実現しました。
これがのちにUbuntuやFedoraといったディストリビューションへと発展していきます。

基本的には Linux という名前が指しているのは、この組み合わせ全体ではなく、カーネルだけです。
「Linux」と「OSとしてのLinux」は、厳密には別物です。
この経緯があるため、たとえばストールマン氏は今も「GNU/Linux」と呼ぶべきだと主張しています4

2.2. UNIXは「OS込み」で誕生した

これに対して、UNIXの出発点はまったく異なりました。

1969年、AT&Tのベル研究所でケン・トンプソンとデニス・リッチーらが開発を始めたUNIXは、最初からカーネルとユーザーツールが一体になったシステムとして設計されました5
シェルのsh、ファイル操作コマンドのlsやcp、テキストエディタのed、そしてパイプによるコマンド連携の仕組みまでが、最初のパッケージに含まれていました。

「これがUNIXです」と渡された時点で、すでにOSとして使えるものが揃っていたわけです。
カーネルだけを切り出して「こちらがUNIX本体です」と言う必要が、そもそもありませんでした。

Linuxにあった「カーネルとツールの出自の分離」が、UNIXには存在しなかった。
これが、UNIXをOSと呼ぶことに誰も違和感を持たない理由です。

3. UNIXはやがて「規格」になった

UNIXがOSとして扱われる理由がもう一つあります。

UNIXはやがて「規格」になった 1969 ベル研究所でUNIX誕生 1980〜90年代 各社が移植 → 方言が乱立 BSD Solaris HP-UX 規格策定 Single UNIX Specification 認証合格のみが「UNIX」を名乗れる 審査対象:コマンド・ファイルシステム・API(OS全体) 現在 macOS ✓ UNIXとは 誕生時 OS(一体型システム) 現在 OS規格・系譜 Linux カーネルの名前 (規格外) UNIX系として 並び称される

1980〜90年代、UNIXは多くの企業に移植され、それぞれの「方言」が生まれました。
BSD、Solaris、HP-UXなど、互いに似ているが互換性のないUNIX系OSが乱立した時代です。

この混乱を整理するために、「Single UNIX Specification」という標準規格が定められました6

この規格に合格したシステムだけが、公式に「UNIX」を名乗れます。
現在ではAppleのmacOSもこの認証を受けています7

注目したいのは、この認証がカーネルだけを対象にしていない点です。
コマンドの挙動、ファイルシステムの構造、APIの仕様など、OS全体の振る舞いが審査されます。
UNIXという言葉は、誕生から現在の規格まで一貫して、システム全体を指す言葉として使われてきました。

3.1. 整理すると

LinuxUNIX
誕生のかたちカーネル単体カーネルとツール群の一体型
ツール群の出自別プロジェクト(GNU等)同じチームが同時に開発
「OS」としての呼び方ディストリビューション名で呼ぶUNIX自体がOSを指す
現在の位置づけカーネルの名前OSの規格・系譜

同じ「UNIX系」と呼ばれるLinuxとUNIXですが、その生い立ちはこれだけ違います。
「LinuxはOSではなくカーネルだ」という言い方が生まれたのは、Linuxが最初からカーネル単体として世に出たからで、UNIXにはその必要がなかっただけです。
どちらが優れているという話ではなく、誕生の文脈が違ったということです。

  1. x86アーキテクチャでは、この動作モードの区別を「保護リング」と呼び、カーネルはRing 0(最高特権)で動作する。ユーザープロセスはRing 3で動作し、ハードウェアへの直接アクセスが制限されている。 – Protection ring – Wikipedia
  2. 1991年8月25日、トーバルズはUsenetのニュースグループ「comp.os.minix」に投稿し、開発中のOSについて公告した。投稿には「just a hobby, won’t be big and professional like gnu(趣味のプロジェクトで、GNUのように大きく専門的にはならない)」と書かれていた。バージョン0.01のリリース日は同年9月17日とされている。 – Linux kernel – Wikipedia
  3. GNUプロジェクトは1983年9月27日にストールマンがUsenetへの投稿で発表し、1984年1月に開発を開始した。GNUはフリーソフトウェアのみで構成されたUnix互換OSを目指すプロジェクトで、名称は「GNU’s Not Unix!」の再帰的頭字語。 – GNU Project – Wikipedia
  4. ストールマンは1996年からGNU/Linuxという名称を公に主張し始め、同年発表のエッセイ「Linux and the GNU System」でその論拠を説明した。FSFは、Linuxという名称はカーネルだけを指すべきであり、OSとしての呼称にはGNUの貢献が欠かせないと主張している。 – Why GNU/Linux? – GNU Project
  5. UNIXの最初の完全版は1971年11月にリリースされ、「UNIX Programmer’s Manual」として文書化された。開発のきっかけは、MITとベル研究所が共同で進めていたMulticsプロジェクトからの離脱であり、トンプソンが使われていなかったPDP-7でゲームを動かすために小さなOSを書いたことが発端とされている。 – History of Unix – Wikipedia
  6. Single UNIX Specificationは、1994年にX/OpenがSpec 1170として最初に発表した。X/OpenはOSFと1996年に合併してThe Open Groupを設立し、以降はThe Open GroupがUNIX商標と認証を管理している。 – Single UNIX Specification – Wikipedia
  7. AppleがUNIX認証を最初に取得したのはMac OS X 10.5 Leopardで、2007年10月26日に認証された。以降、ほぼ毎年のメジャーリリースで認証を更新しており、macOS 15.0 Sequoiaも認証済みである。 – Single UNIX Specification – Wikipedia