chroot (Change root)是一个用于改变当前进程及其子进程根目录的操作命令。这个命令允许用户在一个与系统其他部分隔离的文件系统环境中运行程序。chroot 环境可以用于多种目的,包括系统维护、安全隔离、测试和开发。

Section 19.1: chroot的前提

root 特权

拥有另一个工作的 Linux 环境,例如 Live CD 启动或现有的发行版

确保 chroot 源和目标的环境架构相匹配(可以使用uname -m检查当前环境架构)

在 chroot 环境中可能需要用到的内核模块有被加载(例如,使用 modprobe 命令)

Section 19.2: 手动更改目录中的根目录

确保您满足所有要求,如要求所述

挂载临时 API 文件系统:

cd /location/of/new/root
mount -t proc proc proc/
mount --rbind /sys sys/
mount --rbind /dev dev/
mount --rbind /run run/ (optionally)

如果您需要在 chroot 环境中使用互联网连接,请复制 DNS 详细信息:

cp /etc/resolv.conf etc/resolv.conf

将根目录更改为 /location/of/new/root,指定 shell(此示例中为 /bin/bash):

chroot /location/of/new/root /bin/bash

chroot过程完成之后可能需要加载本地 bash 配置:

source /etc/profile
source ~/.bashrc

甚至,还可以创建一个独特的提示符以区分您的 chroot 环境:

export PS1="(chroot) $PS1"

当完成 chroot 后,你可以通过以下方式退出:

exit

卸载临时文件系统:

cd /
umount --recursive /location/of/new/root

Section 19.3: 使用chroot的原因

更改根用户通常是为了在无法启动或者登录的系统上执行系统维护而进行的。

常见的例子有:

重新安装引导加载程序

重建initramfs镜像

升级或降级软件包

重置忘记的密码

在干净的 root 环境中构建软件