Linux / 歴史をたどる:1991年の個人プロジェクトから世界のインフラへ

Linuxの歴史は1991年、フィンランドの大学生であるリーナス・トーバルズが個人用コンピュータで使用するカーネルを作り始めたことで本格的に始まりました。しかし、今日私たちが使っているLinux環境は、一人の人間が完成させたOSではなく、LinuxカーネルとGNUツール、ディストリビューション、そして世界中の開発者コミュニティが何十年もかけて結びつけて作り上げた結果です。 関連する条件と手順は、Linux とは?カーネル・ディストリビューション・オープンソースを理解するを参照できます。

まず知っておくべき点:Linuxはカーネルです

Linuxカーネルと全体のオペレーティングシステムはどう違うのですか?

厳密に言えば、Linuxはオペレーティングシステムの核心であるカーネル(kernel)です。カーネルはプロセッサ、メモリ、ストレージといったハードウェア資源を管理し、アプリケーションがハードウェアを安全に使用できるように仲介します。

ユーザーが実際にインストールするUbuntu、Debian、Rocky Linuxのようなディストリビューションは、Linuxカーネルにシェル、システムツール、ライブラリ、パッケージマネージャーとアプリケーションをまとめた完成された使用環境です。そのため、システム全体を指すときには慣例的に「Linux」と呼びますが、歴史的な構成要素を強調する場合には「GNU/Linux」という名前も使われます。GNUプロジェクトのLinuxとGNUの説明は、両用語の関係を詳しく扱っています。

カーネルは実際に何をしているのですか?

カーネルは、ユーザーが直接実行する一般的なプログラムとハードウェアの間にあります。ウェブブラウザがファイルを読み込んだり、サーバープログラムがネットワークパケットを送信したりする作業も、結局はカーネルが提供するシステムコールを通じて処理されます。Linuxの歴史を理解するには、次の4つの役割をまず区別しておくと良いでしょう。

  • プロセス管理: 複数のプログラムにCPU時間を割り当て、実行順序を調整します。
  • メモリ管理: プログラムごとに使用するメモリ領域を分け、互いに侵害しないように保護します。
  • デバイス管理: ストレージデバイス、ネットワークカード、グラフィック機器や周辺機器をドライバを通じて制御します。
  • ファイルとネットワーク処理: ファイルシステムとネットワーク通信に必要な共通インターフェースを提供します。

したがって、新しいハードウェアのサポート、性能、セキュリティ、電力管理やサーバーの拡張性の変更は、ほとんどがカーネルの歴史と結びついています。一方、デスクトップ画面、パッケージのインストールコマンドや基本的なアプリケーションは、ディストリビューションやユーザー空間ソフトウェアの歴史により近いです。

Linux以前: UNIXの設計とGNUプロジェクト

LinuxはUNIXに似た動作を目的としたUnix系カーネルです。UNIXのマルチユーザー・マルチタスクモデル、小型ツールの組み合わせ、ファイル中心のインターフェースは、後にオペレーティングシステム設計に大きな影響を与えました。しかし、LinuxはUNIXのソースコードから派生した製品ではなく、独立して開発されたカーネルです。

1983年、リチャード・ストールマンは、誰でも実行・研究・改変・再配布の自由があるUNIX互換の自由なオペレーティングシステムを作るためのGNUプロジェクトを発表しました。開発は1984年に始まり、1990年頃にはコンパイラ、シェル、エディタ、各種コマンドなどの主要コンポーネントが揃いましたが、実用的なカーネルはまだ完成していませんでした。この背景はGNUシステムの公式歴史に記載されています。

1991年:小さな個人プロジェクトが発表されました。

ヘルシンキ大学の学生であるリーナス・トーバルズ(Linus Torvalds)は、1991年4月頃に個人プロジェクトとしてIntel 386 PC上で動作するオペレーティングシステムカーネルの開発を始めました。同年8月25日、彼は開発中のOSをUsenetのcomp.os.minixニュースグループに紹介し、フィードバックを求めました。

Linux Foundationの2020 Linux Kernel History Reportによると、最初に公開されたバージョンであるLinux 0.01は1991年9月17日に配布されました。当時のコードは88個のファイル、10,239行の規模で、i386という1種類のハードウェアアーキテクチャで動作しました。最初から現在のような汎用システムであったわけではありません。

1992~1994年: 自由ソフトウェアと配布版が出会う

GNU GPLが協業の条件を変えました

1992年にLinuxがGNU一般公衆使用許諾契約書(GNU GPL)で再配布されることにより、ユーザーはソースコードを見て修正し、同じ条件で共有できるようになりました。Linuxカーネルは既に整備されていたGNUツールと結び付けられ、インストールやソフトウェア管理を担当する配布版が登場することで、実際に使用可能なオペレーティングシステム環境へと発展しました。

1993年8月にイアン・マードックが始めたDebianは、コミュニティが公開の場で共同作業するディストリビューションモデルを発展させました。Debianプロジェクト公式の歴史によれば、Debianは初期から一貫したディストリビューションと体系的なパッケージ管理を目指していました。ほぼ同じ時期に商用サポートを組み合わせたディストリビューションも成長し、個人ユーザーだけでなく企業がLinuxを導入する基盤が整えられました。

1994年3月13日にはLinux 1.0が公開されました。kernel.orgのLinux 1.0アーカイブには当時のソースと変更記録が保存されています。1.0というバージョン番号は、Linuxが実験段階のプロジェクトを超えて安定した公開ソフトウェアとして位置づけられ始めた象徴的なマイルストーンでした。

ディストリビューションはLinuxを利用できる製品にしました

初期のユーザーはカーネルやさまざまなツールを自分で集めて設定する必要がありました。ディストリビューションはこの複雑な作業を代わりに行い、インストールプログラム、事前にビルドされたソフトウェアパッケージ、依存関係情報や更新リポジトリを提供しました。同じLinuxカーネルを使用していても、どのソフトウェアを選ぶか、どのくらいの期間更新するか、設定をどのように管理するかによって、異なるディストリビューションが作られます。

Debianは、ボランティアコミュニティがポリシーとパッケージ体系を共同で管理するモデルを発展させました。一方、Red Hatは、公開開発の成果を安定した企業向け製品と技術サポートにつなげる道を切り開きました。Red Hat公式の歴史は、1990年代のCD配布から企業向けサブスクリプションモデルとコミュニティ配布版に発展した過程を説明しています。このように異なるモデルが共存することで、Linuxは個人学習用から長期間運用する企業サーバーまで幅広く利用されることができました。

Linuxの歴史の主要年表

年 主な出来事 意味
1983 GNUプロジェクト発表 自由に使用できるUNIX互換のオペレーティングシステムという目標が提示されました。
1984 GNUシステム開発開始 コンパイラ、シェルおよび主要なユーザー空間ツールが作られました。
1991 Linuxプロジェクト公開と0.01配布 個人プロジェクトがインターネット共同開発の出発点になりました。
1992 LinuxをGNU GPLで配布 ソースコードの修正と再配布が可能な協力基盤が強化されました。
1993 Debianプロジェクト開始 公開の共同体ディストリビューションと体系的なパッケージ管理が成長しました。
1994 Linux 1.0公開 安定した公開カーネルに発展した重要なマイルストーンとなりました。
1996 Linux 2.0 公開 対称型マルチプロセッシング(SMP)のサポートが本格化し、サーバーの活用範囲が広がりました。
2000 Open Source Development Labs 設立 企業の Linux 開発支援とエンタープライズ導入のための基盤が強化されました。
2003 Linux 2.6 公開 より多様なデバイスと大規模システムを支える長期的な開発基盤が整いました。
2005 Git 導入 大規模分散開発に適したバージョン管理方式としてカーネルの協力体制が拡張されました。
2007 Linux Foundationの設立 OSDLとFree Standards Groupが合併して、開発・標準化・法的支援のための組織が作られました。

1.0から2.6まで: PCカーネルが汎用基盤として成長した過程

Linux 1.0はインテル386系PCを中心に使用されましたが、以降のバージョンはより多くのプロセッサとデバイスをサポートする方向に急速に拡張されました。カーネル内にすべてのデバイス機能を固定して入れる代わりに、必要な機能をモジュールとして呼び出すことができ、さまざまなハードウェアの組み合わせに対応しやすくなりました。

1996年のLinux 2.0は、複数のプロセッサを共に使用する対称型マルチプロセッシング(Symmetric Multiprocessing, SMP)をサポートし、サーバーOSとして成長する重要な契機となりました。その後、2.4および2.6系では、新しいデバイスサポート、スケジューリング、メモリ管理、大規模システムの拡張性が引き続き改善されました。kernel.orgの2.6アーカイブを見ると、2.6.0が2003年12月に公開された後、安定版と長期サポート版が継続して提供された過程を確認できます。

この時期にLinuxは「安価なPCでUNIXに似た環境を使う方法」を超えて、さまざまなアーキテクチャで動作する汎用カーネルとして定着しました。ハードウェアメーカーがドライバーを提供し、企業が性能と安定性の改善に参加することで、コミュニティと商業的利害が一つのメインラインカーネルで交わる構造も形成されました。

2005年にGitは、開発規模を管理するために誕生しました

カーネルコミュニティには新しいバージョン管理ツールが必要でした

Linuxのコードが増え、参加者が増えるにつれて、誰がどの変更を行ったか、複数の開発の流れをどのように統合するかを管理することが重要になりました。カーネルコミュニティはしばらくBitKeeperというバージョン管理ツールを使用していましたが、2005年に無料使用の関係が終了し、新しいツールが必要になりました。

リーナス・トーバルズは、迅速な変更記録、分散作業、大規模な統合に焦点を当てたGitを作りました。Git公式文書の簡単な歴史は、GitがLinuxカーネル開発コミュニティの要求から始まったことを説明しています。その後Gitはカーネルを超えて、今日のソフトウェア開発全般で使用される代表的なバージョン管理システムになりました。

現在のカーネルの変更はどのように統合されますか?

開発者が作成した変更はパッチ形式で公開され、関連するサブシステムの担当者や他の開発者によってレビューされます。ネットワーク、ファイルシステム、ドライバやプロセッサアーキテクチャのような分野別リポジトリで検証された変更は段階的にメインラインに統合されます。新しいバージョンがリリースされる直後には大きな機能を受け取るマージ期間が開かれ、その後リリース候補段階では回帰エラーや安定性の問題を修正することに集中します。

この構造は誰でもすぐに最終カーネルにコードを入れる方法ではありません。公開参加が可能でありながらも、レビュー、テスト、担当者の責任、段階的な統合手順を設けて品質を管理しています。Linuxカーネル開発HOWTOは、メインライン、安定版、サブシステムツリーとパッチ提出手順を説明しています。

サーバーからモバイルやクラウドまで

サーバーとエンタープライズ市場で成長しました

1990年代後半からLinuxは安定性、ネットワーク機能、多様なハードウェアサポートに基づきサーバー分野で急速に成長しました。ディストリビューション業者は長期アップデートと技術サポートを提供し、企業はWebサーバー、データベース、業務システムにLinuxを採用できるようになりました。

2000年代には、仮想化とクラウドコンピューティングが普及する中で、自動化しやすく、必要に応じてカスタマイズできるLinuxの利点がさらに重要になりました。コンテナもまた、Linuxのプロセス分離や資源制御機能を基盤として発展しました。今日のカーネル開発は、一つの組織がすべてのコードを作る形ではなく、サブシステム担当者がパッチをレビューして統合する分散型協力構造で進められています。最新の開発手順はLinuxカーネル開発公式ドキュメントで確認できます。

コンテナとクラウドはなぜLinuxと相性が良かったのでしょうか?

仮想マシンは一般的に各インスタンスが別々のオペレーティングシステムカーネルを実行しますが、コンテナはホストのLinuxカーネルを共有しながらプロセスを分離します。ネームスペース(namespace)はプロセスが見るユーザー、ネットワーク、ファイルシステムとプロセスIDの範囲を分け、コントロールグループ(control group, cgroup)はCPU・メモリおよび入出力リソースの使用量をまとめて制限したり測定したりします。

コンテナは Linux カーネルの機能の一つと同じものではありません。イメージ形式、実行ツール、ネットワークやストレージ管理が一緒に必要です。しかし、隔離と資源制御という核心的な基盤がカーネルに含まれていたため、大規模サーバーでアプリケーションを迅速に展開するエコシステムが発展することができました。詳細な動作は Linux カーネルの cgroup v2 文書で確認できます。

モバイルと組み込み機器に領域を広げました

Linux は PC とサーバーにとどまりませんでした。ルーター、自動車、産業機器や各種組み込み機器に移植され、スマートフォンにまで深く入り込みました。例えば Android オープンソースプロジェクトのカーネル説明によると、Android カーネルはアップストリームの Linux 長期サポート(LTS)カーネルを基にしています。

企業の参加は公開開発と矛盾しませんでした

Linux の初期の成長は、個人開発者や大学・趣味のコミュニティの参加に大きく依存していました。利用範囲が広がると、サーバーメーカー、半導体企業、ディストリビューション会社やクラウド事業者も自社製品に必要な機能を開発し、メインラインに反映させ始めました。メインラインに含まれたコードは、複数のディストリビューションやユーザーに提供され、共同のレビューとメンテナンスを受けることができるためです。

2000年には、Linuxの企業利用と開発を支援するためにOpen Source Development Labs(OSDL)が設立されました。2007年にOSDLとFree Standards Groupが統合され、Linux Foundationが発足しました。Linux Foundationの組織の歴史に関する説明によると、この組織は開発インフラ、標準化、イベント、教育、法律・商標のサポートを提供しつつ、カーネルコミュニティが独立して開発を続けられる環境を支援しています。

コードの著作権が特定の会社にすべて移る構造でもありません。公式カーネル開発文書では、メインラインに入ったコードは元の著作権者の所有権として残ると説明しています。Linuxカーネル全体はGNU GPLバージョン2専用条件で提供され、個別のソースファイルには互換性のあるライセンスや二重ライセンスが適用されることがあります。

Linuxの歴史を三層で見ると混乱が減ります

区分 何を含みますか? 歴史で果たす役割
Linuxカーネル プロセス、メモリ、デバイス、ファイルシステム、ネットワーク管理 ハードウェアとプログラムを接続する共通基盤を提供しました。
ユーザー空間 GNUツール、シェル、ライブラリ、サービスとデスクトップ環境 ユーザーとアプリケーションが実際の作業を行う環境を作りました。
ディストリビューション インストールツール、パッケージリポジトリ、基本設定、アップデートとサポート方針 複数の構成要素を目的別のオペレーティングシステムとして統合して配布しました。

これらの三層は互いに密接ですが、同じではありません。例えばカーネルのセキュリティ修正は複数のディストリビューションに共通して影響を与える可能性がありますが、パッケージのバージョンやサポート期間はディストリビューションごとに異なる場合があります。AndroidもLinuxカーネルを使用していますが、一般的なデスクトップGNU/Linuxディストリビューションとはユーザー空間とアプリケーション構造が異なります。

Linuxが長く成長できた理由

  • 公開されたソースコード: 誰でもコードをレビューして問題を修正したり、新しいハードウェアのサポートを提案したりできます。
  • 明確なライセンス: GNU GPLは修正や再配布の条件を示し、共同開発の法的基盤となりました。
  • インターネットを基盤とした協力: メーリングリスト、担当管理者、公開レビュー手続きにより、地域や組織を超えた開発が可能になりました。
  • ディストリビューションのエコシステム: 目的に応じたインストールツール、パッケージ、更新ポリシー、技術サポートが提供されます。
  • 幅広い移植性: 個人用コンピュータからサーバー、スマートフォンや組み込み機器まで、さまざまなハードウェアで使用できます。

Linuxの歴史が示すこと

Linuxの成長は、優れたカーネル一つだけの成功で説明することは困難です。UNIX系の検証された設計、GNUツールとフリーソフトウェア運動、ディストリビューションの統合作業、企業の投資、そして世界中の開発者による公開協力が相互に作用したため、長期間にわたり拡張し続けることができました。

したがって、Linuxの歴史の核心は「1991年に誰が何を作ったか」を超えます。公開された技術をコミュニティが検討・改善し、異なる目的に応じて再構成できるという開発方式が、実際の世界の重要なインフラとして成長した過程だと理解するのが最も正確です。

よくある質問

Linuxは誰が作ったのですか?

Linuxカーネルはリーナス・トーバルズが1991年に開始しました。その後、世界中の個人開発者や企業がコードを提供し、大規模な共同開発プロジェクトへと発展しました。

LinuxとUNIXは同じOSですか?

同じではありません。LinuxはUNIXの設計と使用方法に従うUNIX系カーネルですが、独立して開発されました。UNIXは歴史的なOS系統であり、認証商標という意味も持ちます。

LinuxとGNU/Linuxは何が違いますか?

Linuxは厳密にはカーネルを意味します。GNU/LinuxはLinuxカーネルとGNUツールが組み合わさった全体のOS構成を強調する名称です。日常的な表現では、ディストリビューションやシステム全体も一般にLinuxと呼ばれます。

ディストリビューションはなぜ必要ですか?

カーネルだけでは、一般ユーザーが完全なコンピュータ環境を利用することは難しいです。ディストリビューションはインストーラー、システムツール、パッケージマネージャー、更新ポリシーとアプリケーションをまとめて、目的に合ったオペレーティングシステムとして提供します。

オープンソースのLinuxを企業が販売してもよいですか?

可能です。自由ソフトウェアの「自由」は必ずしも無料価格を意味しません。企業はソフトウェア配布、長期更新、セキュリティ認証、技術サポートと運用ツールをまとめて有料で提供することができます。ただし、Linuxカーネルのコードを修正して配布する場合は、GNU GPLが要求するソース提供など、該当ライセンス条件に従う必要があります。

Linuxは一つの会社が所有していますか?

Linuxカーネル開発を単独で所有し管理する会社はありません。リーナス・トーバルズがメインラインを管理し、分野ごとの担当者が変更を統合しますが、コードの著作権は多くの貢献者に分散しています。Linux Foundationは開発環境とエコシステムを支援しますが、カーネル全体を会社の製品のように所有する組織ではありません。

参考資料