web-dev-qa-db-ja.com

BSDとGNU / Linuxユーザーランドの主な違いは何ですか?

UnixとLinuxでBSDやGNUなどについてたくさん読んだことがあります。しかし、BSDとGNUユーザーランドの間の実際の実際的な違いが何であるかはまだわかりませんが、彼らはしばしば言及されます。

答えるときは、GNU/Linuxが主流のUNIX(OS Xを除く)でなかった時代を経験するほど長く生きていなかったことを念頭に置いて、歴史的なつながりを十分に説明してください。

40
strugee

「ユーザーランド」という用語は、さまざまなコンテキストで多くのことを指しますが、ここでは、「GNUユーザーランド」と「BSDユーザーランド」を、ディストリビューションに付属するデフォルトの最小セットのプログラムとして解釈します。

大きな主な違いは、2つのユーザーランドが完全に異なるソースコードで始まることです。 GNU catソースコードNetBSD catソースコード 。その単純な概念のプログラムから、NetBSDの猫が従来の1文字のコマンドラインフラグを使用していることがわかります。 GNUプログラムには1文字のフラグが付いている傾向がありますが、--something-longタイプのオプションもあります。GNUプログラムは、POSIX互換性に向いています。

ソースコードのこの違いにより、2つのユーザーランドの動作が異なる場合があります。

また、(少なくとも)NetBSDは独自のバージョンの標準Cライブラリであるlibcを使用しているようにも見えます。ここで頭の中に入りましたが、libcと動的リンクは奇妙に相互に関連しています。この場合も、ソースコードが異なると動作も異なります。

シェルユーザーとして、psは通常とは異なる動作をし、lsは通常とは少し異なる出力を提供する可能性があることに気付くと思います。 --long-optionタイプのコマンドラインフラグを使用する場合、一部のプログラムでは同等のコマンドラインフラグを見つける必要があります。

歴史的に、私の理解では、BSDユーザーランドは、V6およびV7 Bell Labs Unixから、32Vポートを介してVAXハードウェアに直接到達します。 GNUユーザーランドは新しいもので、コードを80年代前半に厳重に保護された秘密にしようとするAT&Tの試みに反応して少なくともある程度書かれています。1983ベルシステムの売却後、AT&TはUnixを「収益化」しようとしました。その一部は、ほとんどの人がこれを見ることができないようにソースコードをライセンスすることでした。RichardStallmanと他の人はこれに問題がありました。彼らのGNUプロジェクトは、自由に共有可能なプロジェクトを作成するために特別に存在しましたUnixライクなシステム。

その間、1993年までに、AT&Tはカリフォルニア大学のシステムをBSD(「B」はカリフォルニア大学のあるバークレー)システムで訴えた。バークレーの人々はAT&Tの元のソースをすべて新しいコードに置き換え、その新しいコードは少なくともNetBSDのユーザーランドの祖先となりました。 AT&TとUCBは1994年に和解に至り、2004年に 公開 が一般に公開されました。

当然、少なくともアイデアは相互受粉しているので、GNUとBSDユーザーランドの間には少なくとも概念的な類似点がありますが、コーナーケースは明らかに異なります。

29
Bruce Ediger