chroot大法好

chroot 是 unix 最早的监狱机制

  1. chroot 不需要特殊内核支持,只要是类unix就可以使用
  2. chroot 操作简单

举例linux上几个chroot 例子:

  1. 使用chroot 运行另一个linux (安卓的linuxdeploy)
  2. linux 的安装 (用过 gentoo 和 arch 的linux用户应该深有体会)
  3. linux 的维护 (拿其他linux chroot进需要维修的linux )
  4. bind (dns服务) 的chroot 安全机制 (隔离一部分外部系统)
  5. 依赖测试 (chroot 进busybox 运行)
  6. qemu-user-static (可以chroot 进不同构架的rootfs)
  7. linux 的定制 (树梅派镜像安装前可以挂载chroot进去卸载修改安装 得到定制的镜像)
  8. initrd switch_root (使用switch_root 切换根分区)

安卓的linuxdeploy原理:

  1. 挂载目标系统的根分区
  2. 挂载外部系统的 /dev /proc /sys 到目标系统的 /dev /proc /sys
  3. chroot进去
  4. 设置面对目标系统的环境变量
  5. 启动系统内服务 (ssh或vnc)

linux的安装

debian安装有两个 root分区

  • 一个是外面 busybox debian安装程序的root
  • 一个是安装目标分区的root

debian在安装时

  1. 先解压初始化目录结构的包
  2. 再解压最小化系统的包
  3. 更改目标分区中的/etc/apt/source.list 写入 网络/cdrom 安装源
  4. 挂载必须的/proc /dev /sys
  5. chroot进目标系统 然后 运行apt update && apt install 包
  6. 在目标系统用 chroot 运行grub / lilo 安装命令
  7. 在目标系统用 chroot 允许设置用户名和密码的命令
  8. 退出chroot
  9. 卸载chroot内的 /proc /dev /sys
  10. 卸载 目标分区

其实 有了chroot 就可以在任何运行linux的机器上chroot 一个 debian / parrot / 或者其他linux


服务器资源由ZeptoVM赞助

Partners Wiki Discord