導入
一般的に、「Linux」という用語は、Linuxカーネルを中心に構築されたオペレーティングシステムのディストリビューションのグループを指すことがよくあります。しかし、厳密な意味では、Linuxはカーネル自体の存在を指します。完全なオペレーティングシステムを構築するには、Linuxディストリビューションには、しばしばGNUプロジェクトやその他のソースからのツールやライブラリが含まれています。最近、より多くの開発者がLinuxを使用してモバイルアプリケーションを構築および実行しており、また、Chromebookなどの手頃な価格のデバイスの開発にも重要な役割を果たしています。これらのデバイスはカーネル上でオペレーティングシステムを実行します。
- クラウドコンピューティングや一般的なサーバー環境では、Linuxはいくつかの実用的な理由から人気のある選択肢です:
- そのディストリビューションは、他の開発者コミュニティによって現在サポートされ、アップデートされ続けています。
- 幅広いハードウェア上で実行でき、既存のシステムと並行してインストールできます(ローカル開発環境では役立つ特性です)。
- 既存のリポジトリからの中央集権的なソフトウェアのインストールをサポートしています。
- リソース要件が低いです。
- 開発者がサーバー向けのアプリケーションエコシステムやツールを構築する際に頭に入っており、高い互換性を持っています。
オペレーティングシステムの動作に必要な変更を持続的に行っています。
- 一部の開発者にとって、Linuxを使用することは、アクセシビリティと表現の自由へのコミットメントを意味します。
- Linuxコミュニティはまた、いくつかの開発者にとって魅力的です。質問がある場合、このコミュニティが生産したリソースを参照したり、多くのアクティブなメンテナーの一人に直接問い合わせることができます。
開発者コミュニティ(およびその他)におけるLinuxの役割を理解するために、この記事ではUnixを経由したLinuxの簡単な歴史を概説し、いくつかの人気のあるLinuxディストリビューションについても議論します。
Unixの起源
LinuxはUnixとMulticsにその起源を持ちます。これらは堅牢なマルチユーザーのオペレーティングシステムを開発するという目標を共有した2つのプロジェクトでした。
Unixの始まり
Unixは、ベル研究所のコンピュータ科学研究センターでのMulticsプロジェクトの反復から発展しました。ベル研究所や他の場所でMulticsに取り組んでいた開発者たちは、単一レベルのストレージ、動的リンク(実行中のプロセスが別のセグメントをそのアドレス空間に追加するよう要求できる、そのセグメントのコードを実行することができるようにする)、および階層型ファイルシステムを持つマルチユーザーオペレーティングシステムを構築することに興味を持っていました。
ベル研究所は1969年にMulticsプロジェクトの資金提供を停止しましたが、ケン・トンプソンやデニス・リッチーを含む一群の研究者は、プロジェクトの核心原則に基づいて作業を続けました。1972年から1973年にかけて、彼らはシステムをC言語で書き直すことを決定し、これによりUnixは他の当時のオペレーティングシステムとは異なり、ハードウェアから移動し、そのハードウェアを生き延びることができるようになりました。
ベル研究所(後のAT&T)での研究開発は続き、Unix System LaboratoriesはSun Microsystemsと提携してUnixのバージョンを開発し、商業Unixベンダーに広く採用されることになりました。一方、アカデミックな環境では、カリフォルニア大学バークレー校のコンピュータシステム研究グループを中心に研究が続けられました。このグループはバークレー・ソフトウェア・ディストリビューション(BSD)を生み出し、多くのオペレーティングシステムの原動力となり、その多くが今でも使用されています。歴史的に重要な2つのBSDディストリビューションには、NeXTが開発したオペレーティングシステムであるNeXTStep(macOSなどの基礎となった)と、リーナス・トーバルズがLinuxを開発する際の比較基準となった教育用オペレーティングシステムであるMINIXがあります。
Unixの主な特徴
Unixは明確さ、移植性、および同時性の原則に基づいています。
- クラリティ:Unixのモジュラーデザインにより、機能は限定された定義された方法で実行されます。そのファイルシステムは統一され、階層的であり、データの操作を簡素化します。Unixは数千ではなく数百のシステムコールを実装しており、それぞれが明確で明確な目標を持つよう設計されています。
- ポータビリティ:Bell LabsのグループがCでUnixを書くことにより、Unixは広範な利用と採用のための地位を築きました。Cはメモリへの低レベルアクセス、最小限のランタイムサポート、言語と機械命令の効率的な関係を持つよう設計されています。Cを基盤にすることで、Unixは適応性があり、さまざまなハードウェア上で簡単に実行できます。
- 同時性:Unixのカーネルは、複数のユーザーとワークフローを維持するという目標に向けて(Multicsプロジェクトと共有される目標)、カスタマイズされています。Unixでは、カーネルスペースはユーザースペースとは異なり、複数のアプリケーションを同時に実行することが可能です。
Linuxの進化
Unixは開発者に重要な問題を提起しましたが、初期のバージョンではプロプライエタリのままでした。そのため、Unixを活用し、それに対抗しながら、無料かつオープンソースの代替案を作成する開発者たちの物語が次の章です。
オープンソースの実験
リチャード・ストールマンは、Unixに対抗する非プロプライエタリの代替手段を創造しようとした開発者たちの中心的な人物でした。MITの人工知能研究所で働いていた彼は、GNUプロジェクト(再帰的に「GNU’s not Unix!」の略)の仕事を開始し、最終的に1984年には研究所を去り、GNUコンポーネントを無料で配布できるようにしました。GNUカーネルはGNU HURDとして知られ、1985年に設立されたFree Software Foundation(FSF)の焦点となり、現在はストールマンが率いています。
一方で、別の開発者、フィンランドの大学生リーナス・トーバルズもUnixの無料代替手段に取り組んでいました。MINIXのライセンスに不満を抱いたトーバルズは、1991年8月25日にMINIXユーザーグループに対して、MINIXに似た自分のオペレーティングシステムを開発していることを発表しました。最初はGNU Cコンパイラを使用してMINIX上で開発されましたが、Linuxカーネルはすぐにトーバルズを中心とする開発者たちによるユニークなプロジェクトとなり、1994年にトーバルズと共にバージョン1.0をリリースしました。
トーバルズは、彼のカーネルでGNUのコード、GNU Cコンパイラを含めて使用していました。また、多くのLinuxディストリビューションは今でもGNUのコンポーネントを利用しています。スターマンは、「Linux」という用語を「GNU/Linux」と拡大するようロビー活動を行っており、これによってGNUプロジェクトがLinuxの開発に果たした役割と、GNUプロジェクトとLinuxカーネルを育んだ基本的な理念を捉えられると主張しています。現在、「Linux」という言葉は、LinuxカーネルとGNUの要素の存在を示すためによく使われます。同時に、多くのハンドヘルドデバイスやスマートフォンの組み込みシステムでは、Linuxカーネルが使用され、GNUのコンポーネントはほとんどない、あるいは全くない場合もあります。
Linuxの主な特徴
LinuxカーネルはUnixから多くの目標と性質を受け継いでいますが、以下の点で以前のシステムと異なります:
- Linuxの核となるコンポーネントはカーネルであり、他のオペレーティングシステムのコンポーネントとは独立して開発されています。これは、Linuxが全体のオペレーティングシステムを構成するために、GNUなどのさまざまなソースから要素を借りていることを意味します。
- Linuxは無料でオープンソースです。コミュニティの開発者によってメンテナンスされ、カーネルはGNU General Public License(FSFのGNUプロジェクトに関する作業の派生)の下でライセンスされ、ダウンロードと修正が可能です。GPLは、派生作品が元のソフトウェアのライセンス条件を維持しなければならないと規定しています。
- それは、Unixに似たモノリシックカーネルを持っていますが、カーネルコードを動的に読み込んだりアンロードしたりすることができます。
- 従来のUnix実装とは異なり、対称型マルチプロセッサ(SMP)のサポートがあります。これにより、単一のオペレーティングシステムが複数のプロセッサにアクセスできます。これらのプロセッサはメインメモリとすべてのI/Oデバイスを共有します。
- カーネルはプリエンプティブであり、これもUnixとの違いです。これは、スケジューラがドライバやカーネルの他の部分が実行中である間にコンテキストスイッチを強制できることを意味します。
- カーネルはスレッドと通常のプロセスの区別をしません。
- コマンドラインインターフェース(CLI)を含み、グラフィックユーザーインターフェース(GUI)も含まれています。
人気のあるLinuxディストリビューション
開発者は現在、多くの人気のあるLinuxディストリビューションを維持しています。最も長い歴史を持つのはDebianで、5万のソフトウェアパッケージを持つフリーでオープンソースのディストリビューションです。Debianは別の人気ディストリビューションであるCanonical Ltd.によって資金提供されるUbuntuに影響を与えました。UbuntuはDebianのdebパッケージ形式とパッケージ管理ツールを使用し、Ubuntuの開発者は変更をDebianに戻します。
A similar relationship exists between Red Hat, Fedora, and CentOS. Red Hat created a Linux distribution in 1993, and ten years later split its efforts into Red Hat Enterprise Linux and Fedora, a community-based operating system that utilizes the Linux kernel and elements from the GNU Project. Red Hat also has a relationship with the CentOS Project, another popular Linux distribution for web servers. This relationship does not include paid maintenance, however. Like Debian, CentOS is maintained by a community of developers.
結論
この記事では、Linuxのルーツとその特徴に焦点を当てました。LinuxおよびUnixの歴史やそのバリエーション(FreeBSDを含む)について詳しく知りたい場合は、FreeBSDシリーズをチェックするのが良いでしょう。別のオプションとしては、Linuxの基本について学ぶ入門シリーズを考えることもできます。また、このLinuxのファイルシステムレイアウトの紹介、find
およびlocate
を使用してLinux VPS上でファイルを検索する方法に関するディスカッション、またはコマンドラインでの正規表現の紹介もチェックできます。
Source:
https://www.digitalocean.com/community/tutorials/brief-history-of-linux