chroot,pivot_root和switch_root 区别
一. chroot
- chroot 机制目的
为了进一步提高系统的安全性,linux引入了chroot机制,chroot是一个系统调用,可以更改一个进程所能看到的根目录。
类似创建一个沙盒,进程运行在沙盒之内,进程运行正常与否,并不会影响这个台器的其他进程。
- chroot(change to root)
改变根目录,也就是改变一个程序运行时参考的根目录位置。例如:

由上图可以看出,ls 命令参考的根是不同, 以此来形成简单的隔离.
二. pivot_root
- pivot_root 机制目的
改变当前工作目录的所有进程或线程的工作目录. 这个跟chroot的就有很大的区别,chroot是只改变即将运行的
某进程的根目录。pviot_root主要是把整个系统切换到一个新的root目录,然后去掉对之前rootfs的依赖,以便于可以umount 之前的文件系统(pivot_root需要root权限)
三. switch_root
- switch_root 机制目的
专为initramfs设计, 通常initramfs都是为了安装最终的根文件系统做准备工作,然后切换到新的根文件系统上去。
initramfs 是rootfs, 且不能umount, 所以不能使用pivot_root.
- switch_root做的工作:
1. 删除早的rootfs内的全部内容,目的是为了释放空间,因为用的内存空间.
2. 安装新的根文件系统.
3. 切换到新的文件系统,并执行新文件系统的init程序.
(switch_root必须由pid=1的进程调用,否则会错误,例如在init脚本: exec switch_root new_rootfs /init)
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)