Linuxのルートファイルシステムをアンマウントできますか?

Linuxのルートファイルシステムをアンマウントできますか?

ここではそれについて話しませんrootfs。 Linuxで実行されているプロセスが1つだけで、その作業ディレクトリがある場合は/削除できますか?何が残りますかrootfs?マウント解除できない場合は、rootfsその種類のファイルシステムをマウントできますか?

ベストアンサー1

rootfsまず、それが実際に何であるかを知る必要があります。

~からLinuxカーネルのソースコードドキュメント:

rootfsとは何ですか?

Rootfs は、2.6 システムに常に存在していた ramfs (またはアクティブな場合は tmpfs) の特別なインスタンスです。 rootfsをアンマウントできない理由は、initプロセスを終了できないのとほぼ同じです。空のリストを確認して処理するために特別なコードを使用する代わりに、カーネルは特定のリストが終了しないように小さく、簡単に保証できます。空になる。

ほとんどのシステムはrootfsに他のファイルシステムをマウントして無視します。 ramfsの空のインスタンスは非常に少量のスペースを占めています。

CONFIG_TMPFSが有効な場合、rootfsはデフォルトでramfsではなくtmpfsに設定されます。 ramfsを強制するには、カーネルコマンドラインに「rootfstype = ramfs」を追加してください。

したがって、実際のファイルシステムタイプではありません。カーネルの設定によっては、rootfs最初はインスタンスのインスタンスにすることもできますramfstmpfsただし、initramfsが操作を完了すると、rootfs本質的に仮想プレースホルダになり、カーネルのマウントされたファイルシステムのリストが完全に空にならないようにすることで、この状況を処理するための特別なケースコードが不要になります。

通常、実際のルートファイルシステムを直接マウント解除することはできません。以前のルートファイルシステムでファイルを開くことができないため、ファイルを開くことができない状況が発生します。マウント解除が防止されます)。この時点では、新しい実行可能ファイルをロードできません。また、デバイスを/dev取り付け/procたり設置したりする場所がないため、ほとんどのデバイスにアクセスできません/sys。したがって、ルートファイルシステムを使用してシステムをアンマウントすることは、再起動または終了する前の最後の手順を除いてあまり役に立ちません。

あるルートファイルシステムから別のルートファイルシステムに切り替える実際の方法(ブート時に実際のinitramfsルートファイルシステムに切り替える)は、次のようにします。pivot_root(2)システムコール

コマンドラインツールもありますswitch_root(8)しかし、これはinitramfsから実際のルートファイルシステムへの移行のために特別に設計されています。

警告:switch_rootは、現在のルートファイルシステム上のすべてのファイルとディレクトリを繰り返し削除します。

これが、システムがブート時にinitramfsから実際のルートファイルシステムに切り替わると、initramfsが空で重要ではなく縮小される理由です。ただし、switch_root実際のルートファイルシステムから別のルートファイルシステムに変換しようとすると、以前のルートファイルシステムの内容が削除されるため、あるディスクベースのルートファイルシステムから別のルートファイルシステムへの非破壊変換には役立ちません。

2.6.xxカーネル以前は、誰かがネットワークインターフェイス、ルーティング、ipchains / iptablesファイアウォールのみを設定する概念を証明するLinuxファイアウォールを作成し、カーネルを停止したようです。当時の停止は、単にカーネルの実行中にユーザー空間プロセスを停止することを意味しました。私はこれがどんな真剣なデザインよりも面白いスタント/会話に近いと思います。ただし、アンマウントされたルートファイルシステムで実行できる唯一の作業は、おそらく次のとおりです。

おすすめ記事