web-dev-qa-db-ja.com

/ usrをどのパーティションに置くべきか

this document /binおよび/sbinには、システムの起動と修復のための最小限のファイルが含まれており、/usrは個別のパーティションであるため、修復のために簡単にマウント解除できます。

ただし、パーティションに関する this infoに従って、ブートに不可欠なすべてのディレクトリ(/bootを除く)は、/と同じパーティション上にある必要があります。これらの重要なディレクトリは/etcおよび/usrです。

この2つのドキュメントは矛盾しています。

  1. 最初のリンクによると、/bin/sbinは起動に必須ですが、なぜ/etc/usrだけが2番目のリンクで必須であると言われていますか?システムは/binおよび/sbinのみを使用してシングルユーザーモードで起動できますが、フルモードの場合は/usrおよび/etcも必要ですか?
  2. /usr/etcがrootと同じパーティション上にある必要があるのに、/boot/bin、および/sbinではないのはなぜですか
  3. なぜ/usrを読み取り専用にすることができますか?私の知る限り、/usr/binはパッケージマネージャーによってバイナリを格納するために使用されます。
  4. また、/bin/sbinには、/をマウントする場合、他のファイルシステムをマウントするためのコードが含まれていると読みました。 ISそれはgrubによって行われましたか?
1
krrish

あなたは2006年からドキュメントを読んでいますが、彼らの中で言及されている実践は矛盾しているように見えるという考えは驚くことではありません。

しかし、Linuxディストリビューションの最新の状況を考えてこれに答えましょう。

  • / sbinはシステムバイナリです
  • / etcは、ホスト固有のシステム全体の構成データです
  • / usrは共有され、読み取り専用データ
  • / varはホスト固有の永続的な可変データです
  • / runは実行時(最後のブート以降)の可変データです

それがあなたのポイントのそれぞれを考慮できることを考えると:

  1. これは、init.dを含むサービスマネージャーがプログラムのホスト構成と共有(ユーザー)/ usr/binの両方を必要とするためです。 2番目のリンクは、通常の起動時と同様に、最初のリンクがシステム回復などの管理タスクを参照していることを意味します。コンテキストを考えると両方とも正しいです。

  2. 最近のLinuxには/ usr/binに/ binがありませんが、2番目のドキュメントで必須と見なされています。/bootには同じパーティション上にある必要はありません。ブートローダーのデータが含まれているため、Linuxはブートローダーの後にブートするときに必ずしも必要ではありません。さらに/ bootは通常、ブートローダーがサポートするファイルシステムを備えた別個のパーティションになります。これは/ sbinを残すだけで、Linuxカーネルはある時点でinitを呼び出しますが、ファイルシステムはinitramの一部としてマウントされます。/etc/fstabに含まれる情報には、/ sbin/initが呼び出される前に/ sbin /がマウントされる場所が含まれている場合があります。

  3. 2番目のリンクは、実際には/ usrが読み取り専用でマウントされる必要があると言っているのではなく、アプリケーションの観点から読み取り専用であることが意図されています。ただし、ソフトウェアのインストールおよび更新の管理タスクの一部として、ファイルは引き続き変更されます。ここにデータを書き込むためのパッケージマネージャーなどの特定のツール。

  4. GRUBはファイルシステムを認識していますが、Linuxの観点からはそれほど重要ではないことに注意してください。たとえば、Androidでは、カーネル(システムプログラム)とinitramはファイルシステムのないパーティションに保存されます。次に、ブートローダーがLinuxとinitramをメモリにロードし、Linuxを呼び出します。 Linuxは、initramからルートをマウントします。 initramには、ハードウェアにアクセスしてルートファイルシステムをマウントするために必要なカーネルモジュールとソフトウェアが含まれており、ブートローダーから渡されたため、これを行うための設定は必要ありません。ただし、/ etc/fstabなどのファイルにアクセスし、必要に応じて/ sbin/initを呼び出す前に/ sbinをマウントします。

2
jdwolf

Ubuntuのドキュメントによると

次のディレクトリは、独自のパーティションに配置しないでください。

  • / bin-このディレクトリには、ほとんどのユーザーがアクセスできるシステム全体の実行可能ファイルが格納されます。
  • / sbin-このディレクトリは、コアシステム機能に使用される実行可能ファイルを保持し、システム管理者がシステムのメンテナンスに使用します。
  • / proc-これは、プロセス情報を含むシステム使用ディレクトリです。ユーザーがアクセスすることはほとんどありません。
  • / dev-このディレクトリには、インストールされたハードウェアへのシステム作成リンクが含まれ、/ procのように直接アクセスされることはほとんどありません。

/ etc/fstabにマウントが正しく記載されていれば、他のディレクトリを別のパーティションに配置できます。ただし、これを行うと、パフォーマンスに大きな影響を与える可能性があります。

Grubカーネルとinitramfs(初期RAMファイルシステム)をロードします。ドライブをチェックしてマウントし、ブートプロセスを開始するのはinitramfsです。

注:/etcにはシステム構成ファイルが含まれています。マウントポイントを指定するfstabを含みます。 initramfsがこれをどのように処理するのかわかりません。しかし、私は、/etcをリ​​ストに追加する必要があると言うでしょう。なぜなら、/etcを別のパーティションに移動するために、ブートファイルまたはカーネルの変更が必要だからです。

参照

https://help.ubuntu.com/community/DiskSpace

2
ravery

これはsystemdによって導入されたリグレッションであり、デスクトップ環境へのより緊密な統合があり、したがってブート時にライブラリとデーモンが必要であり、従来のUnixシステムでは最小コアシステムの一部とは見なされません。

最新のハードウェアでは、個別の/usrパーティションは通常ほとんどのユーザーにとって価値がないため、許容できるトレードオフと見なされます。

1
Simon Richter