chroot 环境搭建
安装 debootstrap:
确保你的系统已有debootstrap工具。如果没有,可以通过包管理器安装。例如,在 Ubuntu 上可以运行:1
2sudo apt-get update
sudo apt-get install debootstrap使用 debootstrap 安装:
执行你已经写的命令来初始化新的 Debian 系统:1
sudo debootstrap trixie /home/yuki/debian
挂载必要的文件系统:
在进入 chroot 环境之前,通常需要挂载一些系统文件系统,比如/proc,/sys, 和/dev。可以使用以下命令:1
2
3
4sudo mount -t proc /proc /home/yuki/debian/proc
sudo mount --rbind /sys /home/yuki/debian/sys
sudo mount --rbind /dev /home/yuki/debian/dev
sudo mount --rbind /run /home/yuki/debian/run进入 chroot 环境:
可以使用chroot进入新的 Debian 系统:1
sudo chroot /home/yuki/debian
配置新系统:
在进入的 chroot 环境中,配置系统。例如,设置网络、安装基本软件包:1
2
3apt update
apt install locales
dpkg-reconfigure locales # 配置所需的区域设置其它配置:
根据需要,还可以编辑/etc/fstab,/etc/hosts, 和/etc/hostname等文件。清理与退出:
从 chroot 环境退出,然后卸载挂载的文件系统:1
2
3
4
5exit
sudo umount -l /home/yuki/debian/proc
sudo umount -l /home/yuki/debian/sys
sudo umount -l /home/yuki/debian/dev
sudo umount -l /home/yuki/debian/run
/proc文件系统
- 是什么?
/proc是一个虚拟文件系统,提供了内核和进程的运行时信息。它不存储真实数据,而是实时生成数据,比如当前运行的进程信息、系统内核参数、内存使用情况等。- 为什么挂载?
在 chroot 环境中,很多系统命令(比如ps、top、free)依赖/proc来读取系统状态信息。没有挂载/proc,这些命令不会工作,脚本或程序也会因为无法访问内核信息而失败。
2.
/sys文件系统
- 是什么?
/sys也是一个虚拟文件系统,用于展示内核中的设备和驱动程序状态信息,是sysfs的挂载点。它提供硬件、设备和驱动的相关数据,允许用户空间查看和修改内核设备参数。- 为什么挂载?
许多硬件相关命令和服务需要访问/sys里的信息。比如udev(设备管理器)需要从这里获取设备事件和状态,网络配置工具可能读取网络设备的状态等。- 你可以理解:
/sys是内核与用户空间交互的重要桥梁,许多现代服务和脚本依赖它。
3.
/dev目录
- 是什么?
/dev里面包含设备文件,它们是内核“与外部设备交互”的接口,比如硬盘(/dev/sda)、终端设备(/dev/tty)等。- 为什么挂载?
chroot 是改变根目录的环境,但原来的设备文件默认还留在主系统里,不会自动出现在新系统里。挂载/dev,可以让新系统访问到实际的设备文件,从而能读写磁盘、输入输出、操作终端等。- 挂载方式
使用--rbind递归绑定,确保所有子目录(如/dev/pts、/dev/shm)也被包含。
4.
/run目录
- 是什么?
/run是一个临时文件系统,存放运行时需要的进程数据和锁文件,比如 pid 文件、Unix 套接字。- 为什么挂载?
某些服务和程序在运行时会往/run写锁文件或者状态文件,如果不挂载,某些程序可能无法正常运行。
总结一下挂载的意义
- 虚拟文件系统(/proc, /sys) 提供内核信息接口,chroot 环境需要它们以保证系统工具和服务正确运行。
- 设备文件系统(/dev) 提供硬件设备的访问接口。
- 运行时目录(/run) 支持服务和程序写入运行时状态数据。
举个例子:
假设你已经用
debootstrap搭好了一个最小系统,现在想在里面用ps查看运行进程,或者用udevadm管理设备,如果你没有挂载/proc和/sys,ps就会显示空白或者错误,udevadm也会报错,因为这些工具依赖于在这两个文件系统中的内核接口。同理,如果没挂载/dev,你的 chroot 根本没法访问控制台设备,甚至无法执行基本输入输出。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 YuKiFuHaNeの博客!





