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