警告:switch_root 会递归删除当前根文件系统上的所有文件和目录。
--man switch_root
来自util-linux
, 版本2.32-2.fc28.x86_64
为什么?
答案1
的确切行为switch_root
解释如下:
https://github.com/torvalds/linux/blob/v4.17/Documentation/filesystems/ramfs-rootfs-initramfs.txt
当切换另一个根设备时,initrd 会pivot_root,然后卸载ramdisk。但 initramfs 是 rootfs:您既不能使用ivot_root rootfs,也不能卸载它。相反,删除 rootfs 中的所有内容以释放空间 (
find -xdev / -exec rm '{}' ';'
) ...
Linux不支持卸载初始rootfs的原因是:
Rootfs 是 ramfs(或 tmpfs,如果启用的话)的一个特殊实例,它始终存在于 2.6 系统中。您无法卸载 rootfs 的原因与您无法终止 init 进程的原因大致相同;内核不必使用特殊的代码来检查和处理空列表,而是更小、更简单地确保某些列表不会变空。