前書き
一般的な使用法では、「Linux」は多くの場合、Linuxカーネルを中心に構築されたオペレーティングシステムディストリビューションのグループを指します。 ただし、厳密な意味では、Linuxはカーネル自体の存在のみを指します。 完全なオペレーティングシステムを構築するために、Linuxディストリビューションには多くの場合、GNUプロジェクトやその他のソースのツールとライブラリが含まれています。 最近、より多くの開発者がLinuxを使用してモバイルアプリケーションを構築および実行しています。また、カーネルでオペレーティングシステムを実行するChromebookなどの手頃な価格のデバイスの開発でも重要な役割を果たしました。 一般的なクラウドコンピューティングおよびサーバー環境内では、Linuxはいくつかの実用的な理由で一般的な選択肢です。
-
そのディストリビューションは最新のものであり、他の開発者のコミュニティによってサポートされています。
-
幅広いハードウェアで実行でき、既存のシステムと一緒にインストールされます(ローカル開発環境で役立つ特性)。
-
既存のリポジトリからの集中ソフトウェアインストールをサポートします。
-
そのリソース要件は低いです。
-
開発者がサーバーのアプリケーションエコシステムとツールを構築し、高いレベルの互換性を実現している場合、多くの場合、これが最も重要です。
-
オペレーティングシステムの動作に必要な変更を加えます。
Linuxはまた、フリーでオープンソースのソフトウェアの動きにその起源をたどり、結果として一部の開発者は倫理的および実用的な理由の組み合わせのためにそれを選択します:
-
一部の開発者にとって、Linuxの使用は、アクセシビリティと表現の自由に対するコミットメントを表しています。
-
Linuxコミュニティは、一部の開発者にとっても魅力的です。質問がある場合は、このコミュニティが作成したリソースを参照したり、アクティブなメンテナの1人に直接連絡したりできます。
開発者コミュニティ(およびそれ以降)でのLinuxの役割を理解するために、この記事ではUnixによるLinuxの簡単な歴史を概説し、いくつかの一般的なLinuxディストリビューションについて説明します。
Unixのルーツ
Linuxのルーツは、堅牢なマルチユーザーオペレーティングシステムの開発という目標を共有する2つのプロジェクトであるUnixとMulticsにあります。
Unixの始まり
Unixは、Bell LaboratoriesのComputer Sciences Research CenterでのMulticsプロジェクトの反復から開発されました。 Bell Labsやその他の場所でMulticsに取り組んでいる開発者は、単一レベルのストレージ、動的リンク(実行中のプロセスが別のセグメントをそのアドレス空間に追加することを要求し、実行できるようにするマルチユーザーオペレーティングシステムの構築そのセグメントのコード)、および階層ファイルシステム。
ベルラボは1969年にMulticsプロジェクトへの資金提供を停止しましたが、ケントンプソンやデニスリッチーを含む研究者グループは、プロジェクトの基本原則に取り組み続けました。 1972-3年に、彼らはシステムをCで書き直すことを決定しました。これにより、Unixはユニークに移植可能になりました。
Bell Labs(後のAT&T)での研究開発は継続され、Unix System LaboratoriesはSun Microsystemsとのパートナーシップで、商用Unixベンダーによって広く採用されるUnixのバージョンを開発しました。 一方、研究は学界、特にカリフォルニア大学バークレー校のコンピューターシステム研究グループで継続されました。 このグループはBerkeley Software Distribution(BSD)を作成しました。これはさまざまなオペレーティングシステムに影響を与え、その多くは現在も使用されています。 歴史的なノートの2つのBSDディストリビューションは、NeXTによって開発されたオペレーティングシステムであるNeXTStepであり、これは他の製品の中でもmacOSの基礎となりました。
Unixの主な機能
Unixは、明快さ、移植性、および同時性の原則に基づいています。
-
明快さ:Unixのモジュール設計により、機能を限定的かつ定義された方法で実行できます。 そのファイルシステムは統一され、階層化されているため、データの操作が簡単になります。 Unixの前任者とは異なり、Unixは数千ではなく数百のシステムコールを実装します。それぞれのシステムコールは、目標が簡単で明確になるように設計されています。
-
移植性:CでUnixを書くことにより、Bell Labsのグループは、Unixを広範囲に使用および採用できるように位置付けました。 Cは、メモリへの低レベルアクセス、最小限のランタイムサポート、および言語とマシン命令間の効率的な関係を持つように設計されました。 Cの基礎は、Unixが適応可能であり、さまざまなハードウェアで簡単に実行できることを意味します。
-
同時性:Unixカーネルは、複数のユーザーとワークフローを維持するという目標(Multicsプロジェクトで共有)に合わせて調整されています。 カーネルスペースは、Unixのユーザースペースとは異なるため、複数のアプリケーションを同時に実行できます。
Linuxの進化
Unixは開発者に重要な疑問を提起しましたが、初期のイテレーションにおいてもプロプライエタリのままでした。 そのため、その歴史の次の章は、https://www.digitalocean.com/community/tutorials/Free-vs-Open-Source-Software [free and open-source]を作成するために開発者が内部で、そしてそれに対してどのように働いたかの物語です。代替案。
オープンソースの実験
リチャード・ストールマンは、Unixの非独占的な代替物を作成することに触発された開発者の中心人物でした。 MITの人工知能研究所で働いている間、彼はGNUプロジェクト(「GNUはnot Unix!」の再帰的)の作業を開始し、最終的に1984年にラボを離れて、GNUコンポーネントをフリーソフトウェアとして配布できるようになりました。 GNU HURDとして知られるGNUカーネルは、1985年に設立され、現在はストールマンが率いるhttp://www.fsf.org/[Free Software Foundation(FSF)]の焦点になりました。
一方、別の開発者は、Unixの無料の代替案に取り組んでいます。フィンランドの大学生Linus Torvaldsです。 MINIXのライセンスに不満を抱いたTorvaldsは、1991年8月25日にMINIXユーザーグループに、MINIXに似た独自のオペレーティングシステムを開発していることを発表しました。 最初はGNU Cコンパイラを使用してMINIXで開発されましたが、Linuxカーネルは1994年にTorvaldsでカーネルのバージョン1.0をリリースした開発者の中核を持つすぐにユニークなプロジェクトになりました。
TorvaldsはカーネルでGNU Cコンパイラを含むGNUコードを使用していましたが、多くのLinuxディストリビューションがGNUコンポーネントを利用していることは事実です。 ストールマンは、「Linux」という用語を「GNU / Linux」に拡張するよう働きかけました。これは、Linuxの開発におけるGNUプロジェクトの役割と、GNUプロジェクトとLinuxカーネルを育んだ根本的な理想の両方を捉えると主張します。 今日では、LinuxカーネルとGNU要素の両方を示すために「Linux」がよく使用されます。 同時に、多くのハンドヘルドデバイスやスマートフォンの組み込みシステムは、多くの場合、GNUコンポーネントがほとんどないLinuxカーネルを使用します。
Linuxの主な機能
LinuxカーネルはUnixから多くの目標とプロパティを継承していますが、次の点で以前のシステムとは異なります。
-
そのコアコンポーネントはカーネルで、他のオペレーティングシステムコンポーネントとは独立して開発されています。 これは、Linuxがさまざまなソース(GNUなど)から要素を借用してオペレーティングシステム全体を構成することを意味します。
-
それは無料でオープンソースです。 開発者コミュニティによって管理されているカーネルは、https://www.gnu.org/licenses/gpl-3.0.en.html [GNU General Public License](GNUプロジェクトでのFSFの作業の派生物)の下でライセンスされています。 、ダウンロードおよび変更が可能です。 GPLは、二次的著作物が元のソフトウェアのライセンス条件を維持しなければならないと規定しています。
-
Unixに似たモノリシックカーネルを備えていますが、必要に応じてカーネルコードを動的にロードおよびアンロードできます。
-
従来のUnix実装とは異なり、対称型マルチプロセッサ(SMP)をサポートしています。 これは、単一のオペレーティングシステムが、メインメモリを共有し、すべてのI / Oデバイスにアクセスする複数のプロセッサにアクセスできることを意味します。
-
そのカーネルはプリエンプティブであり、Unixとは別の違いがあります。 これは、スケジューラーが、実行中にドライバーまたはカーネルの別の部分でコンテキスト切り替えを強制できることを意味します。
-
そのカーネルは、スレッドと通常のプロセスを区別しません。
-
コマンドラインインターフェイス(CLI)が含まれており、グラフィックユーザーインターフェイス(GUI)も含めることができます。
人気のあるLinuxディストリビューション
開発者は現在、多くの人気のあるLinuxディストリビューションを維持しています。 最も長い歴史を持つのはDebianで、50,000のソフトウェアパッケージが含まれる無料のオープンソースディストリビューションです。 Debianは、Canonical Ltdが資金を提供している別の人気ディストリビューションUbuntuに影響を与えました。 UbuntuはDebianのdebパッケージ形式とパッケージ管理ツールを使用し、Ubuntuの開発者は変更をDebianにアップストリームで戻します。
Red Hat、https://www.digitalocean.com/community/tags/fedora [Fedora]、およびCentOSの間にも同様の関係が存在します。 Red Hatは1993年にLinuxディストリビューションを作成し、10年後、Red Hat Enterprise Linuxと、LinuxカーネルとGNUプロジェクトの要素を利用するコミュニティベースのオペレーティングシステムであるFedoraに取り組みを分けました。 Red Hatは、Webサーバー用のもう1つの一般的なLinuxディストリビューションであるCentOSプロジェクトとも関係があります。 ただし、この関係には有料メンテナンスは含まれません。 Debianと同様、CentOSは開発者のコミュニティによって管理されています。
結論
この記事では、LinuxのUnixのルーツと、その特徴的な機能について説明しました。 LinuxおよびUnixのバリエーション(FreeBSDを含む)の歴史について詳しく知りたい場合は、https://www.digitalocean.com/community/tutorial_series/getting-started-with-freebsd [series on FreeBSD]。 もう1つのオプションは、入門的なhttps://www.digitalocean.com/community/tutorial_series/getting-started-with-linux[Linux入門シリーズ]を検討することです。 Linuxのファイルシステムレイアウトの紹介、これもチェックできます。 +find+の使用方法の議論Linux VPSでファイルを検索するための `と
+ locate + `、またはhttps://www.digitalocean.com/community/tutorials/an-introduction-to-regular-expressions [コマンドラインでの正規表現の紹介] ]。