Free Software Foundation は、Linux ディストリビューションの大半は実際には GNU システムであり、たまたま Linux カーネルを使用していると主張しています。彼らの主張は、Linux が登場する前に、GNU がフリーのオペレーティング システムを開発するための長年のプロジェクトであり、カーネルは最後の欠片にすぎなかったという事実に基づいています。実質的にすべての Linux ベースのデスクトップおよびサーバー ディストリビューションが少なくともいくつかの GNU コンポーネントを使用しているという点で、彼らは正しいです。おそらく最も重要なのは、GNU C ライブラリ (glibc)、GNU コア ユーティリティ (coreutils)、および Bash シェルです。さらに、GCC 拡張機能を利用しているため、Linux カーネル開発は本質的に GCC に関連付けられています。
一部の組み込みシステム、おそらく最も顕著なのは Google の Android で、GNU コンポーネントやライブラリを使用していません。たとえば Android では、GNU C ライブラリが Google 独自の BSD ベースの Bionic C ライブラリに置き換えられています。 FSF は、そのようなシステムを「GNU システム」または「GNU/Linux」と呼ぶのは適切ではないことに同意しますが、一方で、これらのシステムを単に「Linux」システムと呼ぶことも望んでいません。少なくとも、GNU ツールを使用してカーネルを構築することはしないという事実についてコンセンサスがあるように見えるという結論を導き出すことができます。 システムを「GNU システム」にします。
GNU/Linux 用語の歴史は 1990 年代初頭にさかのぼります。
1991 年、Linus Torvalds はヘルシンキの寝室で Linux カーネル プロジェクトを開始しました。その後まもなく、インターネットの台頭に助けられて、Linux カーネルがかなりの勢いを増し始めました。
当時、Richard Stallman の GNU プロジェクトは、計画中の GNU オペレーティング システムのカーネルとして HURD マイクロカーネルを使用する計画を立てていました。しかし、新しい Linux カーネル プロジェクトを中心に Linux ディストリビューション (Linux カーネルに基づく無料の Unix ライクなオペレーティング システム) が形成され始めたとき、ストールマンは興味を持った。 1993 年に Debian プロジェクトが開始されたとき、Ian Murdock のリーダーシップの下で、FSF はこの若いプロジェクトにいくらかの財政的支援を行いました。しかし、Debian 開発者は、技術的な問題もあり、すぐに Stallman と FSF と別れました。たとえば、Stallman はプログラム内のデバッグ シンボルを保持したいと考えていましたが、Debian はそれらを取り除きたいと考えていました。
Debian と FSF が決別すると、ストールマンは、Debian が自分自身を GNU/Linux と呼ぶように要求しました。マードックがリーダーシップを彼に引き渡したので、要求はブルース・ペレンズになされました。これらの組織は良い条件で別れ、共通の目標を共有 (および共有) していたため、Debian 開発者は彼の要求どおりに行動しました。もちろん、ストールマンがそのような名前を独自に宣伝したのは事実ですが、実際の Linux ベースのオペレーティング システムが協力して、自分自身をそのように呼んだことは、そのような名前の使用を促進する上で重要でした。
ストールマンが示した理論的根拠には、(a) Linux カーネル以外のシステムのコアは、大部分が GNU ツールであり、(b) Linux カーネルは、ある意味で、GNU プロジェクトの集大成/完成であり、GNU プロジェクトは、しばらくの間、動作するカーネルを入手してください。そのため、GNU プロジェクトの理想を認識し、人々に思い出させる方法として、この名前を使用する必要があります。理由 (a) はかなり頻繁に言及される傾向がありますが、当時は正確には当てはまりませんでしたが、現在ではさらに当てはまりません。Linux ベースのオペレーティング システムの明らかに重要な部分は、GNU ツールに依存しています。 bash、gcc、binutils、gdb、libc など。場合によっては、これらを他のツールに置き換えることができます。したがって、そのような議論は少なくとも議論の余地があり、実際、多くの議論がなされてきました.
私が知る限り、Debian と (その一部の) その派生物 (その親のリードに従う) だけが、自分自身を GNU/Linux と呼んでいます。ただし、Fedora、Gentoo などの他のいわゆる Linux ディストリビューションは、実質的に Debian と何ら変わりはありません。ほとんど同じソフトウェアです。そのため、それらを GNU/Linux と呼ぶのにも十分な理由があります。
GNU ユーザーランドなしで Linux カーネルを使用するシステムは多くありません。これは、2 つの大部分が一緒に開発され、さまざまな方法で絡み合っているためです。 (たとえば、Linux カーネルは gcc の拡張 (GNU) C で書かれており、標準の C コンパイラではビルドされません。) Thomas が言ったように、明らかな例は Android ですが、Google によって非常に多くフォークされているためです。将来的には統合/調整の話がありますが、Android カーネルを Linux と呼ぶのが正しいかどうかは疑問です.
余談ですが、ストールマンと FSF が GNU/Linux の用語をかなり強く押し付けているように見えるのは残念です。たとえば、Jonathan Corbet は、LWN のコメントで、彼が GNU/Linux という用語を使用しない限り、FSF は彼と話すことを拒否すると書いています。 Jon は LWN の創設者であるだけでなく、尊敬されているシニア カーネル開発者でもあります。全体として、コメントには次のように書かれています。
<ブロック引用>これについてはっきりさせておくと、何年も前に FSF にコメントを求めるのをやめたのは、FSF が、私たちが何を言うか、どの用語を使用するかについて、私たちからの事前の約束なしに私たちと話をすることを拒否したからです。私たちはそのような約束をしたくありません。そのような事柄に関する FSF のポリシーが変更された場合は、喜んでお知らせいたします。
これは明らかに、とりわけ GNU/Linux 用語の主張への言及です。
上記の歴史は、Glyn Moody 著「Rebel Code」の第 6 章 (「Boot Then Root」) である程度詳しく説明されています。
オペレーティング システムは、カーネルとユーザーランドの組み合わせです。基本的に、カーネルはハードウェアを管理し、ユーザーランドはユーザーに包括的なインターフェイスを提供します。
一般的な GNU/Linux ディストリビューションでは、Linux がカーネルを提供し、GNU プロジェクトがユーザーランド ツールを提供します。 GNU は Linux よりずっと前に開始され、完全なオペレーティング システムを構築するための大量のユーティリティを提供します。
ただし、カーネルがありませんでした。彼らは Hurd カーネルを持っていましたが、準備が整うまでに時間がかかりすぎていました。そして、大きな熱意の助けを借りて Linux が登場しました。Linux は Hurd よりも速く進化しました。
これで、2 つの異なるプロジェクトからユーザーランドとカーネルが作成されました。また、それぞれがオペレーティング システムを持つために不可欠であるため、協会に GNU/Linux という名前を付けて、各プロジェクトにクレジットの分け前が与えられるようにしてみませんか?
BSD utils や BusyBox などの他のユーザーランドがあります。ただし、それらは GNU ユーティリティと比較して多かれ少なかれ完全であり、一部のソフトウェアは GNU ユーザーランドでのみ動作します。たとえば、ほとんどの BSD オペレーティング システムはコンパイラとして GCC を使用していますが、LLVM はまもなくこの状況を変えるでしょう.
また、ユニバーサル オペレーティング システムとして、FreeBSD カーネルと GNU ユーザーランドで Debian を実行できます。