switch_rootがinitramfsのすべてのファイルを削除するのはなぜですか?

switch_rootがinitramfsのすべてのファイルを削除するのはなぜですか?

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

--from 、man switch_rootバージョンutil-linux2.32-2.fc28.x86_64

なぜ?

答え1

の正確な動作をswitch_root以下に説明します。

https://github.com/torvalds/linux/blob/v4.17/Documentation/filesystems/ramfs-rootfs-initramfs.txt

別のルートデバイスに切り替えるときは、initrdivov_rootを実行してRAMディスクを取り外します。しかし、initramfsはrootfsです。 ivot_root rootfsを使用またはマウント解除できません。代わりに、rootfsのすべてのエントリを削除してスペースを解放してください(find -xdev / -exec rm '{}' ';')...

Linuxが初期rootfsの削除をサポートしていない理由は次のとおりです。

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

関連情報