私たちが毎日実行している Linux システムとは何でしょうか?現在広く使用されている GNU のバージョンは「Linux」と呼ばれることが多く、多くのユーザーはそれが本質的に GNU プロジェクトによって開発された GNU システムであることを認識していません。 LinuxカーネルとGNUシステムの紹介確かに Linux は存在し、これらの人々はそれを使用していますが、それは彼らが使用するシステムの一部にすぎません。 Linux はカーネルです。つまり、マシンのリソースを他の実行プログラムに割り当てるシステム内のプログラムです。カーネルはオペレーティング システムの重要なコンポーネントですが、それ自体では役に立たず、完全なオペレーティング システムのコンテキスト内でのみ実行できます。 Linux は GNU オペレーティング システムと組み合わせて使用されることが多く、システム全体は基本的に GNU と Linux、つまり GNU/Linux です。いわゆる「Linux」ディストリビューションはすべて、実際には GNU/Linux のディストリビューションです。 多くのユーザーは、カーネル (Linux) とシステム全体 (「Linux」とも呼ばれます) の違いを理解していません。名前を曖昧に使うと、人々の理解を助けません。これらのユーザーは、Linus Torvalds が 1991 年に少しの助けを借りてオペレーティング システム全体を開発したと考える傾向があります。 LinuxカーネルとGNUシステムの関係の詳細な説明プログラマーは一般的に、Linux がカーネルであることを知っています。しかし、システム全体が「Linux」とも呼ばれていることを一般的に耳にしているため、システム全体をカーネルにちなんで命名することを正当化する歴史を想像することがよくあります。たとえば、多くの人は、Linus Torvalds が Linux カーネルを書き終えたら、そのユーザーは他のフリー ソフトウェアを探し、(特に理由もなく) Unix のようなシステムを作るために必要なもののほとんどがすでに利用可能であることに気づくだろうと考えています。 彼らが見つけたのは偶然ではありませんでした。それは不完全な GNU システムでした。 GNU プロジェクトは 1984 年以来、完全なシステムの構築に取り組んでおり、利用可能なフリー ソフトウェアを組み合わせることで完全なシステムが構築されます。 GNU 宣言では、GNU と呼ばれる無料の Unix ライクなシステムを開発するという目標を設定しました。 GNU プロジェクトの最初の発表では、GNU システムの当初の計画の一部も概説されました。 Linux がリリースされた頃には、GNU はほぼ完成していました。 ほとんどのフリーソフトウェア プロジェクトの目標は、特定のジョブ用の特定のプログラムを開発することです。たとえば、Linus Torvalds は Unix ライクなカーネル (Linux) の作成に着手し、Donald Knuth はテキスト フォーマッタ (TeX) の作成に着手し、Bob Scheifler はウィンドウ システム (X Window System) の開発に着手しました。このようなプロジェクトの貢献度を、そこから生じる特定の手順によって測定するのは当然です。 このように GNU プロジェクトの貢献を測定しようとすると、どのような結論に達するでしょうか?ある CD-ROM ベンダーは、自社の「Linux ディストリビューション」では GNU ソフトウェアが最大の単一コンポーネントであり、ソース コード全体の約 28% を占めていることを発見しました。これには、システムの存在に不可欠ないくつかの主要コンポーネントが含まれています。 Linux自体は約3%を占めています。 (2008 年も割合は同様で、gNewSense の「メイン」リポジトリでは Linux パッケージが 1.5%、GNU パッケージが 15% でした。) したがって、システム内のプログラムを誰が書いているかに基づいてシステムの名前を選択する場合、最も適切な選択肢は「GNU」です。 しかし、これはそれについて考える最も深い方法ではありません。 GNU プロジェクトは、特定のソフトウェア パッケージを開発するプロジェクトではありませんし、過去もそうではありませんでした。これは C コンパイラを開発するためのプロジェクトではありませんが、私たちは C コンパイラを開発しています。テキストエディタを開発しましたが、テキストエディタを開発するプロジェクトではありません。 GNU プロジェクトは、完全に無料の Unix ライクなシステムである GNU の開発を目指しました。 多くの人々がシステム上のフリーソフトウェアに重要な貢献をしており、彼らのソフトウェアは賞賛に値します。しかし、それが単なる便利なプログラムの集まりではなく統合されたシステムである理由は、GNU プロジェクトがそれをシステムにしようとしたからです。私たちは、完全に自由なシステムを作るために必要なプログラムのリストを作成し、リストにあるすべてのものを体系的に探し、書き、あるいは誰かに書いてもらいました。必須だが退屈な[1]コンポーネントについて書いたのは、それらがなければシステムが成り立たないからです。私たちのシステムコンポーネントの一部、つまりプログラミングツールはプログラマーの間で人気を博しましたが、ツールではないコンポーネントも多く作成しました[2]。完全なシステムにはゲームも必要だったため、チェスゲームであるGNU Chessも開発しました。 1990 年代初頭までに、カーネルを除くシステム全体が完成しました。また、Mach 上で動作するカーネルである GNU Hurd も起動しました。このカーネルの開発は予想以上に困難でした。GNU Hurd は 2001 年に確実に動作し始めましたが、一般に使用可能になるまでにはまだまだ時間がかかりました。 幸いなことに、Linux のおかげで、Hurd を待つ必要はありません。トルバルズ氏は 1992 年に Linux をリリースし、GNU システムの最後の大きなギャップを埋めました。人々は Linux と GNU システムを組み合わせて、完全に自由なシステム (Linux も含まれる GNU システムのバージョン) を形成できます。つまり、GNU/Linux システムです。 それらをうまく連携させるのは簡単なことではありません。一部のGNUコンポーネント[3]は、Linuxで動作させるために大幅な変更が必要です。完全なシステムを「すぐに使える」ディストリビューションに統合することも難しい作業です。システムをインストールして起動する方法の問題を解決する必要がありますが、まだその段階に達していないため、この問題はまだ解決されていません。そのため、さまざまなシステムディストリビューションを開発する人々は、多くの重要な作業を行っています。しかし、物事の性質上、それは誰かが必ず行う仕事です。 GNU プロジェクトは、GNU システムだけでなく、GNU/Linux システムもサポートしています。 FSF は、Linux 関連の拡張機能を備えた GNU C ライブラリの書き換えに資金を提供しました。その結果、現在では、変更なしでライブラリの現在のバージョンを使用して、最新の GNU/Linux システムに完全に統合されています。 FSF は Debian GNU/Linux の初期開発段階にも資金を提供しました。 現在、さまざまな GNU/Linux システムのバリエーション (多くの場合、「ディストリビューション」と呼ばれます) が利用可能です。そのほとんどには非フリーのプログラムが含まれています。開発者は、GNU の「フリー ソフトウェア」哲学ではなく、Linux に関連する「オープン ソース」哲学に従っています。しかし、完全に無料の GNU/Linux ディストリビューションも存在します。 FSF はこれらのサイトの一部でコンピュータ設備をサポートしています。 自由な GNU/Linux ディストリビューションを作るということは、さまざまな非自由なプログラムを排除するだけの問題ではありません。現在では、通常の Linux ディストリビューションには非フリーのプログラムも含まれています。これらのプログラムは、システムの起動時に I/O デバイスにロードされるように設計されており、長い数字の文字列として Linux の「ソース コード」に含まれています。したがって、無料の GNU/Linux ディストリビューションを維持するには、無料のバージョンの Linux も維持する必要があります。 GNU/Linux を使用するかどうかに関わらず、「Linux」という名前を使用して一般の人々を混乱させないでください。 Linux はカーネルであり、システムに不可欠な主要コンポーネントの 1 つです。システム全体は基本的に Linux が追加された GNU システムです。この組み合わせについて話すときは、「GNU/Linux」と呼んでください。 要約するLinux と GNU システムの関係について詳しく説明したのはこれで終わりです。Linux と GNU システムに関するより詳しい内容については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: CSS を使用して、画像に 3D の凸型と凹型のエフェクト (フレーム外に凸型、またはフレーム内に凹型) を実現します。
前述のこの記事はとても短いです〜主な目的は、モバイル端末上のクリックと js イベントのメカニズムに...
ステップ 1: メモ帳を使用して、MySQL インストール ディレクトリの「my.ini」ファイルを...
html4:コードをコピーコードは次のとおりです。 <フォーム> <p>&l...
目次歴史pushState() メソッドpushState() の使用シナリオreplaceStat...
1 MySQLの自動コミット設定MySQL はデフォルトで自動的にコミットします。つまり、各 DML...
目次概要二分木からB+木へクラスター化インデックス非クラスター化インデックスジョイントインデックスと...
データを挿入するとき、以前オフィス システムに取り組んでいたときにはデータベースのパフォーマンスにつ...
1. フロントエンドエンジニアリングの複雑さいくつかの小さなデモ プログラムを開発するだけであれば、...
この記事では、MySQL 8.0.23のインストールと設定方法を参考までに紹介します。具体的な内容は...
通常、コンポーネントのライフサイクルは、ビジネス ロジックが始まる場所です。ビジネスシナリオが複雑で...
アパッチ スカイウォーキングApache SkyWalking は、マイクロサービス、クラウド ネイ...
JavaScript の if ステートメントで英語のカンマ「,」が表示されることがあります。これは...
序文最近、MySQL 6.0.x 以降の jar を使用する場合、コード URL リンクで serv...
この記事では、画像フォロー効果を実現するためのjQueryの具体的なコードを参考までに紹介します。具...
スタイル シートは、ドキュメントの表示方法、発音方法、または入力方法を記述します。XSL 言語は、X...