一. 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)

 

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐