bin、sbin、usr/bin、usr/sbin の違い

30 年 2010 月 XNUMX 日、David Collier は次のように書きました。

ビジーボックスでは、リンクがこれら XNUMX つのディレクトリに分割されていることに気付きました。
どのディレクトリにどのリンクを配置するかを決定するための簡単なルールはありますか...
たとえば、kill は /bin にあり、killall は /usr/bin にあります。この分割にはロジックが見当たりません。

Ken Thompson と Dennis Ritchie が 7 年に PDP-1969 上で Unix を作成したことはおそらくご存知でしょう。 そこで、1971 年頃に、11 組の RK05 ディスク (それぞれ 1,5 メガバイト) を備えた PDP-XNUMX にアップグレードしました。

オペレーティング システムが成長し、最初のディスク (ルート FS が存在する) に収まらなくなると、一部をホーム ディレクトリが存在する XNUMX 番目のディスクに移動しました (そのため、マウント ポイントは / usr という言葉から呼ばれました)ユーザー)。 古いディスクの容量が足りなくなったため、必要なすべての OS ディレクトリ (/bin、/sbin、/lib、/tmp ...) をそこに複製し、新しいディスクにファイルを置きました。 次に、XNUMX 番目のディスクを用意し、それを /home ディレクトリにマウントし、ユーザーのホーム ディレクトリをそこに移動して、OS が XNUMX つのディスクの残りのスペースをすべて占有できるようにしました。 最大XNUMXメガバイト (おお!)。

もちろん、「オペレーティング システムの起動時に、/usr に 6 番目のディスクをマウントできる必要があるため、/usr の 35 番目のディスクに mount などのプログラムを置かないでください。そうしないと、鶏が先か卵が先かの問題だ。」 それはとても簡単です。 それは XNUMX 年前の Unix VXNUMX でのことでした。

/bin と /usr/bin (およびそのようなディレクトリすべて) の分割は、これらの出来事の遺産であり、70 年代の実装の詳細であり、官僚によって何十年にもわたってコピーされてきました。 彼らは決して質問しなかった 理由彼らはそれをやっただけです。 この区分は、Linux が作成される前から意味を失いました。その理由は次のとおりです。

  1. ブート時に initrd または initramfs が使用され、「あのファイルの前にこのファイルが必要だ」などの問題が処理されます。 したがって、私たちは、 すでに持っている 他のすべてをロードするために使用される一時ファイル システム。
  2. 共有ライブラリ (Berkley の人たちが Unix に追加したもの) では、/lib と /usr/lib の内容を個別に変更することはできません。 これら 1974 つの部分は一致する必要があり、一致しないと機能しません。 XNUMX 年にはこのようなことは起こりませんでした。当時は静的リンクによりある程度の独立性があったからです。
  3. 100 年頃には、安価なハード ドライブが 1990 メガバイトの壁を破り、同時期にパーティション サイズ変更ソフトウェアが登場しました (パーティション マジック 3.0 は 1997 年に登場しました)。

もちろん、分断があるので、それを正当化するルールを考え出す人もいます。 同様に、ルート パーティションはあらゆる種類の一般的な OS 機能に必要であり、ローカル ファイルを /usr に置く必要があります。 または、/ には AT&T が配布するものを入力し、/usr には使用しているディストリビューション、IBM AIX、Dec Ultrix、または SGI Irix が追加したものを入力します。また、/usr/local にはシステム固有のファイルが含まれます。 そして誰かが、/usr/local は新しいソフトウェアをインストールするのに適切な場所ではないと判断したので、/opt を追加しましょう! /opt/local も表示されても驚かないでしょう...

もちろん、この分離により、30 年間にわたって、あらゆる種類の興味深いディストリビューション固有のルールが生まれては消えていきました。 たとえば、「/tmp は再起動時にクリアされますが、/usr/tmp はクリアされません。」 (そして、Ubuntu には原則として /usr/tmp はありません。Gentoo では /usr/tmp は /var/tmp へのシンボリック リンクであり、これはそのルールの対象となり、再起動時にクリアされません。はい、これはルート FS が読み取り専用である場合もあり、その場合は /usr には何も書き込む必要はありませんが、/var には書き込む必要があります。 基本的に /etc 以外に書き込むことはできません。/var に移動しようとすることもありました ...)

Linux Foundation (数年前の拡大中に Free Standards Group を吸収した) のような官僚は、なぜそのルールが存在するのかを理解しようともせずに、喜んでこれらのルールを文書化し、複雑にしています。 彼らが気づいていないのは、PDP-05 上の RK11 ディスクが小さすぎたため、ケンとデニスが OS の一部をホーム ディレクトリに移動しただけだということです。

きっと、busybox はこれまでと同じ方法でファイルを配置しているだけだと思います。 今のところそうする本当の理由はありません。 個人的には、/bin、/sbin、/lib を /usr 内の同様のディレクトリにリンクするだけです。 結局のところ、組み込みソフトウェアを扱う人は、ソフトウェアを理解し、簡素化しようとします。

出所: habr.com

コメントを追加します