web-dev-qa-db-ja.com

「ルートファイルシステムのマウント」とは正確にはどういう意味ですか?

Linuxのブートプロセスでは、ルートファイルシステムであるinitrdがあり、実際のルートファイルシステムをマウントする準備ができる前にマウントされます。取り付け手順は?ファイルシステムがマウントされていると言えるようにするにはどうすればよいですか?そして、なぜ「ファイルシステム」ではなく「ルートファイルシステム」と言うのでしょうか。

2
Kamran

起動時にマウントされるファイルシステムは他にもたくさんある可能性があるため、「ルートファイルシステム」と表示されます。ルートまたは/は、WindowsのCドライブに似ています。ファイルシステムは、マウントポイントを介して上位レベルのシステム機能にアクセスできるときにマウントされます。

取り付けのプロセスについて...あなたが望む答えがどれほど技術的かわからないので、この過度の単純化に腹を立てないでください。これは私が私の顧客にそれを説明する方法です:フラッシュドライブを接続します。

  1. ユーザーがUSBフラッシュドライブを接続する
  2. OSが「何か」がUSBポートXに接続されていることを検出
  3. OSがポートをプローブし、フラッシュドライブがあることを確認します
  4. OSはデバイスノードをデバイスに割り当てます(たとえば、/dev/sdb
  5. OSは/dev/sdbをプローブし、プライマリパーティションにあるパーティションテーブルを見つけます
  6. OSはデバイスノードをパーティションに割り当てます(たとえば、/dev/sdb1
  7. OSは/dev/sdb1をプローブし、FAT32ファイルシステムを認識します
  8. OSは、ファイルシステムを/dev/sdb1にある新しいマウントポイント(/media/pendrive/など)にマウントします。
  9. ファイルシステムのコンテンツは、システム、つまりユーザーがアクセスできます。

デバイスのコンテンツ(生データ)は、0と1の集まりにすぎません。デバイスをマウントするとき、システムはそれらの0と1の上に「読み取り/書き込みフィルター」のようなものを追加します。これは0と1を実際のファイルに、またはその逆に変換します。

例:「HelloWorld」を/media/pendriveのテキストファイルに保存すると、フィルターはこれをファイルシステムのルールに従って変換し、最後に一連の0と1を変換して/dev/sdb1に書き込みます。

4
user16115

* nixシステムでは、ファイルシステムが/にある必要があります。これはrootとも呼ばれます。 initrdの場合、ルートはinitrd内の仮想ファイルシステムです。システムは「ピボットマウント」を実行する必要があります。これにより、実際のファイルシステムがルートにマウントされ、その下にinitrdファイルシステムが再マウントされます。

マウントの実際の動作は、カーネル内のVFSにファイルシステムを登録するだけなので、特定のディレクトリ内のファイルを見つけるためにどこを探すべきかがわかります。