+
15
-

回答

chroot 和 pivot_root 都能改变进程的根目录,但机制和用途不同

chroot

作用:临时将进程的 / 指向一个子目录(如 /myroot),但原文件系统仍挂载,内核和其他进程仍用原根。

缺点

不能完全隔离(通过 /proc、设备等可能逃逸);

不能卸载原根文件系统;

不是真正的“切换根”。

pivot_root

作用真正切换根文件系统,把当前根“换掉”,常用于启动容器或 init 系统。

特点

原根会被移到新根下的某个目录(如 /oldroot),之后可卸载;

必须配合 mount --move 和 umount 使用;

只能在挂载了新文件系统后使用(不能直接 pivot 到普通目录)。

比喻:

chroot 像戴VR眼镜——你看到的是新世界,但身体还在原地;

pivot_root 像搬家——你真的住进了新家,旧家可以拆掉。

容器(如 systemd-nspawn)用 pivot_root 实现干净隔离;chroot 适合简单测试,不用于高安全场景。

网友回复

我知道答案,我要回答