9.10.4. Chroot 系统

chroot(8) 提供最基本的方式来运行一个不同的 GNU/Linux 系统实例,并且不需要重启原有的系统。

[小心]小心

下面的列子假设根源系统和 chroot 系统都共享相同的 CPU 架构。

你可以按下面的方式学会怎样建立和使用 chroot(8),通过在 script(1) 下运行 pbuilder(8) 程序。

  1. $ sudo mkdir /sid-root
  2. $ sudo pbuilder --create --no-targz --debug --buildplace /sid-root

你能够看到 debootstrap(8) 或 cdebootstrap(1) 是如何在 “/sid-root“ 下部署 sid 环境的系统数据.

[提示]提示

这些 debootstrap(8) 或 cdebootstrap(1) 是 Debian 安装器用来安装 Debian 的.这些也可以用来在不使用 Debian 安装盘的情况下,给一个系统安装 Debian,也可以替代安装其它 GNU/Linux 发行版。

  1. $ sudo pbuilder --login --no-targz --debug --buildplace /sid-root

你可以看到一个 sid 环境的系统 shell 是如何按下面的方式创建的。

  1. 拷贝本地配置 ("/etc/hosts“, "/etc/hostname“, "/etc/resolv.conf“)

  2. 挂载 “/proc“ 文件系统

  3. 挂载 “/dev/pts“ 文件系统

  4. 创建 “/usr/sbin/policy-rc.d“ 的过程,总是 101 退出

  5. 运行 “chroot /sid-root bin/bash -c 'exec -a -bash bin/bash'

[注意]注意

一些在 chroot 下的程序,需要访问比根源系统上的 pbuilder 能够提供的文件之外更多的文件.例如,”/sys“, “/etc/passwd“, “/etc/group“, “/var/run/utmp“, “/var/log/wtmp“等等.也许需要使用 bind-mounted 或拷贝.

[注意]注意

/usr/sbin/policy-rc.d“ 文件阻止在 Debian 系统上自动启动后台守护程序。参见 “/usr/share/doc/sysv-rc/README.policy-rc.d.gz“.

[提示]提示

专用的 chroot 软件包 pbuilder 的原始用途,是构建一个 chroot 系统,并在 chroot 里面打包软件包。它是一个理想的系统,可以用来检查软件包的安装依赖性是否正确,确保不需要的和错误的安装依赖在最终的软件包中不存在。

[提示]提示

类似的 schroot 软件包可以给你一个这样的主意,在 amd64 根源系统上运行 i386 chroot 系统。