導入
一般的に「Linux」は、Linuxカーネル上に構築されたオペレーティングシステムディストリビューションのグループを指すことが多いです。しかし、より厳密に言えば、Linuxはカーネル自体のみを指します。完全なオペレーティングシステムを構築するために、Linuxディストリビューションには通常、GNUプロジェクトやその他のソースからのツールとライブラリが含まれています。最近では、モバイルアプリケーションの構築と実行にLinuxを使用する開発者が増えています。また、カーネル上でオペレーティングシステムを実行するChromebookなどの手頃な価格のデバイスの開発においても、Linuxは重要な役割を果たしています。クラウドコンピューティングやサーバー環境全般において、Linuxは次のような運用上の理由から人気のある選択肢となっています。
- ディストリビューションは最新であり、他の開発者コミュニティによってサポートされています。.
- このオペレーティング システムは、さまざまなハードウェア上で実行でき、既存のシステムと並行してインストールできます (ローカル開発環境では便利な機能です)。.
- 事前に構築されたリポジトリからのソフトウェアの集中インストールをサポートします。.
- リソース要件は低いです。.
- 開発者がプログラミング エコシステムとサーバーに必要なツールを構築する場合、高い互換性が得られる Linux が最初の選択肢になることが多いです。.
- オペレーティング システムの動作に必要な変更を加えることができます。.
Linux はフリーおよびオープンソース ソフトウェア運動にも根ざしており、そのため一部の開発者は倫理的および運用上の理由から Linux を使用しています。
- 一部の開発者にとって、Linux を使用することは、オープン アクセスと表現の自由へのコミットメントを意味します。.
- Linux コミュニティは一部の開発者にとっても魅力的です。開発者は質問がある場合、このコミュニティが作成したリソースを参照したり、アクティブなメンテナーの 1 人に直接問い合わせたりすることができます。.
開発者コミュニティ (およびそれ以外の地域) における Linux の役割を理解するために、この記事では、Unix までの Linux の簡単な歴史を概説し、いくつかの一般的な Linux ディストリビューションについて説明します。.
Unixのルーツ
Linux は、堅牢なマルチユーザー オペレーティング システムの開発を目的とした 2 つのプロジェクト、Unix と Multix にルーツがあります。.
Unixの始まり
Unixは、ベル研究所コンピュータサイエンス研究センターのMultixプロジェクトから発展しました。ベル研究所をはじめとする複数の研究所でMultixに取り組んでいた開発者たちは、単一階層ストレージ、動的リンク(実行中のプロセスがシステムにアドレス空間へのセクションの追加を依頼し、そのセクションのコードを実行できるようにする)、そして階層型ファイルシステムを備えたマルチユーザーオペレーティングシステムの構築に関心を寄せていました。.
ベル研究所は1969年にMultixプロジェクトへの資金提供を停止しましたが、ケン・トンプソンやデニス・リッチーを含む研究者グループは、プロジェクトの当初の原理に基づいて研究を続けました。1972年から73年にかけて、彼らはシステムをC言語で書き直すことを決定し、これによりUnixは他に類を見ないほどの移植性を獲得しました。当時の他のオペレーティングシステムとは異なり、Unixはハードウェアから切り離して稼働させることができました。.
しかし、ベル研究所(後のAT&T)では研究開発が継続され、Unix Systems Labsはサン・マイクロシステムズと共同でUnixのバージョンを開発し、商用Unixベンダーに広く採用されました。一方、学界、特にカリフォルニア大学バークレー校のコンピュータシステム研究グループでは研究が続けられました。このグループはBerkeley Software Distribution(BSD)を開発し、これは今日でも使用されている様々なオペレーティングシステムの基盤となりました。歴史的なBSDディストリビューションとしては、NeXTが開発したNeXTStep(macOSなどの製品の基盤となったオペレーティングシステム)と、リーナス・トーバルズがLinuxを開発する際にベンチマークとした教育用オペレーティングシステムMINIXの2つがあります。.
Unixの主な機能
Unix は、明瞭性、移植性、並行性の原則に重点を置いています。.
- 解決: Unixのモジュール設計により、関数は限定的かつ特定の方法で実行できます。ファイルシステムは統一され階層化されており、データ操作を簡素化します。Unixは、以前のOSとは異なり、数百(数千ではなく)のシステムコールを実装しており、それぞれが直接的かつ明確な目的を果たします。.
- 携帯性: ベル研究所のチームは、UnixをC言語で記述することで、Unixの広範な利用と採用に向けた準備を整えました。C言語は、浅いメモリアクセス、最小限のランタイムサポート、そして言語と機械語命令間の効率的な関係を提供するように設計されました。UnixがC言語で構築されたことで、オペレーティングシステムは適応性に優れ、様々なハードウェア上で容易に動作できるようになりました。.
- 同期: Unixカーネルは、複数のユーザーとワークフローをサポートするために(Multixプロジェクトとの共同作業により)特別に設計されています。Unixのカーネル空間はユーザー空間とは区別されており、複数のプログラムを同時に実行できます。.
Linuxの進化
Unixは開発者にとって重要な問題を提起しましたが、初期のバージョンでは依然としてプロプライエタリでした。そのため、Unixの歴史における次の章は、開発者がどのようにフレームワーク内で、あるいはフレームワークに反して取り組み、フリーでオープンソースの代替手段を生み出したかという物語です。.
オープンソース実験
リチャード・ストールマンは、Unixに代わる非独占的な代替ソフトウェアの開発に意欲を燃やした開発者たちの中心人物でした。MIT人工知能研究所に勤務していた彼は、GNUプロジェクト(「GNUはUnixではない!」の略)の活動を開始し、1984年に研究所を離れ、GNUのコンポーネントをフリーソフトウェアとして配布しました。GNU HURDとして知られるGNUカーネルは、1985年に設立され、現在もストールマンが率いるフリーソフトウェア財団(FSF)の中心となりました。.
一方、別の開発者がUnixのフリーな代替案に取り組んでいました。フィンランドの大学生、リーナス・トーバルズです。MINIXライセンスに不満を抱いたトーバルズは、1991年8月25日にMINIXユーザーグループに対し、MINIXに似たオペレーティングシステムを開発中であると発表しました。当初、カーネルはGNU Cコンパイラを用いてMINIX上で開発されましたが、Linuxカーネルは急速に独自のプロジェクトへと成長し、1994年には開発チームによってバージョン1.0がリリースされました。.
Linuxの主な機能
Linux カーネルは Unix の目標と機能の多くを継承していますが、次の点で以前のシステムと異なります。
- Linuxの中核コンポーネントはカーネルであり、他のオペレーティングシステムコンポーネントとは独立して開発されています。つまり、LinuxはGNUなどの異なるソースコードを使用して完全なオペレーティングシステムを構築しています。.
- これはフリーでオープンソースのオペレーティングシステムです。カーネルはGNU General Public License(FSFによるGNUプロジェクトの成果)に基づいてライセンスされており、ダウンロードと改変が可能です。GPLでは、派生作品は元のソフトウェアのライセンス条項を維持しなければならないと規定されています。.
- Linux は Unix に似たモノリシック カーネルを備えていますが、カーネル コードを動的にロードおよびアンロードできます。.
- このオペレーティング システムは、従来の Unix 実装とは異なり、マルチプロセッサ (SMP) をサポートしています。.
- カーネルは予測可能であり、これが Unix とのもう 1 つの違いです。.
- カーネルはスレッドと通常のプロセスを区別しません。.
- このオペレーティング システムにはコマンド ライン インターフェイス (CLI) があり、グラフィカル ユーザー インターフェイス (GUI) も備えています。.
人気のLinuxディストリビューション
今日、多くの人気Linuxディストリビューションは開発者によってメンテナンスされています。中でも最も古いディストリビューションの一つがDebianです。これは5万ものソフトウェアパッケージを擁するフリーでオープンソースのディストリビューションです。Debianは、Canonical Ltd.が資金提供している人気のディストリビューション、Ubuntuにも影響を与えました。Ubuntuはdebパッケージ形式とDebianのパッケージ管理ツールを採用しており、Ubuntuの開発者はDebianへの変更に貢献しています。.
Red Hat、Fedora、CentOSの間にも同様の関係があります。Red Hatは1993年に独自のLinuxディストリビューションを開発し、10年後にはRed Hat Enterprise Linuxと、LinuxカーネルとGNUプロジェクトのコンポーネントを採用したコミュニティベースのオペレーティングシステムであるFedoraに事業を分割しました。.
結果
この記事では、Linuxの起源であるUnixとその特徴について解説しました。LinuxとUnix系OS(FreeBSDを含む)の歴史について詳しく知りたい方は、FreeBSDに関する記事シリーズから始めるのが良いでしょう。また、「Linux入門」シリーズもご覧ください。.









