chroot 和 pivot_root 都能改变进程的根目录,但机制和用途不同:
chroot
作用:临时将进程的 / 指向一个子目录(如 /myroot),但原文件系统仍挂载,内核和其他进程仍用原根。
缺点:
不能完全隔离(通过 /proc、设备等可能逃逸);
不能卸载原根文件系统;
不是真正的“切换根”。
pivot_root
作用:真正切换根文件系统,把当前根“换掉”,常用于启动容器或 init 系统。
特点:
原根会被移到新根下的某个目录(如 /oldroot),之后可卸载;
必须配合 mount --move 和 umount 使用;
只能在挂载了新文件系统后使用(不能直接 pivot 到普通目录)。
比喻:
chroot 像戴VR眼镜——你看到的是新世界,但身体还在原地;
pivot_root 像搬家——你真的住进了新家,旧家可以拆掉。
容器(如 systemd-nspawn)用 pivot_root 实现干净隔离;chroot 适合简单测试,不用于高安全场景。
网友回复
gpt-image2能直接将图片转成分层透明的psd设计文件?
claude code、codex、gemini cli如何切换国内大模型使用?
蒸馏最强ai大模型是中小ai模型低成本升级的最好通道?
arena.ai上为啥没有最新的claude4.7及gpt5.5呢?
ai大模型公司为啥开始大量招聘文科生了?
cloudflared如何在低版本centos6或7上安装?
bfwsoa框架如何开启异步缓存与异步任务模式?
selenium如何获取网页js加载渲染后的真实dom结构?
go编写的Eino与python编写的langchain如何选择?
LangChain如何编写多个agent协同工作的代码?


