这是对另一个问题的回答基本上可以归结chroot
为另一个 Linux 发行版,以便主要使用它来替代其过于受限(但不可替代)的父版本。chroot
我想更好地理解运行之前建议的操作是:
cp /etc/resolv.conf etc/resolv.conf
cp -a /lib/modules/$(uname -r) lib/modules
mount -t proc archproc proc
mount -t sysfs archsys sys
mount -o bind /dev dev
mount -t devpts archdevpts dev/pts
- 复制
resolv.conf
是清晰的(网络/互联网访问),虽然我不确定- 当进入 stage3 Gentoo 系统modules
时这实际上似乎是不必要的,对吧?chroot
- 但为什么要重新安装、 和
proc
,而不是使用绑定安装呢?是什么sys
dev/pts
实际的在这种情况下,哪个是“更正确”? - 本操作方法绑定挂载
proc
和dev
,但根本没有挂载dev/pts
或。sys
此外,它还会复制/etc/{hosts,fstab}
到新的根目录。那有意义吗?我不应该/etc/mdadm.conf
也包括在内吗?
答案1
复制 /etc/resolv.conf 是为了不丢失 DNS。
复制 /lib/modules 是因为可能需要使用一些在设置 chroot 时不需要的硬件组件。您必须记住,您在 OP 中提到的原始问题涉及用 Arch Linux 替换 NAS 操作系统。因此,您将需要以太网、可能是无线、各种 USB 组件等的驱动程序。复制 /lib/modules 文件夹可确保新环境能够应对其未来的任务。
关于重新安装与绑定安装,您确实是正确的。这chroot 上的 Arch Linux Wiki 页面确实按照您指定的方式使用重新安装和绑定安装,根据您引用的帖子的答案:
cd /mnt/arch
mount -t proc proc proc/
mount -t sysfs sys sys/
mount -o bind /dev dev/
mount -t devpts pts dev/pts/
(我认为这显示了你的行的语法,复制自这个帖子,是错误的:要挂载的 dev 在挂载点之前)。
但是,那chroot 上的 Ubuntu 手册页讲述了一个不同的故事:
sudo mount -o bind /proc /var/chroot/proc
这里/proc是绑定挂载的,而不是重新挂载的。
我实际上已经尝试过这两种方法,并且经过短暂的测试运行后,我无法注意到任何差异。诚然,这并不是一个太大的测试,因此我将在这里搁置我的观点,因为它不会产生太大的影响。
答案2
/etc/resolv.conf
- 您需要此文件来解析 DNS 请求。在某些情况下没有必要:DHCP 客户端在 chroot 中可用,它确实会被执行,并且 DHCP 服务器会返回适当的信息(通常是这种情况)。
/etc/resolv.conf
您对chroot 内部的网络(或者更准确地说,从依赖于 的常用应用程序进行 DNS 查询)不感兴趣。
/lib/modules/$(uname -r)
- 如果您可能需要为活动内核加载任何其他模块,则有意义。如果没有这个,您将无法继续执行当前正在运行的任何操作。因此,如果您打算长时间运行 chroot 系统,您可能应该这样做。另一方面,在这种情况下,您可能应该使用pivot_root
它(这通常是 initrd 在其生命周期结束时所做的事情)。如果您只需要执行此操作,例如从 chroot 安装引导加载程序,则没有必要(因为必须加载所有需要的驱动程序才能使您能够执行 chroot 本身)。/proc
并且/dev
相当明显 - 它们包含基本的系统接口。/sys
IIRC 不是吗?那早在 2007 年就被广泛使用,这也是 Slackware(它本身相当保守)How-to 的过时之处。如今,如果没有它,您的系统可能会以某种方式失败(例如,一旦某些东西尝试枚举某种类型的硬件)。/dev/pts
- 多年来,/dev
树木的处理方式发生了一些变化。在某些时候,设备/dev/pts
由devfs
- 参见例如这个 LKML 线程以便讨论可能出现的问题。绑定安装 - 绑定安装有一些有趣的方面(在
mount(8)
手册页中有很好的解释)。例如,如果您有:/some/device on /x/a (rw) /x/a/A on /x/b (rw)
然后重新以
/x/a
只读方式安装,您将无法更改/x/B
.这是可以理解的,但可能会让你第一次感到惊讶。另一个好问题是,/x/b
当您使用上面的示例时,会发生什么情况umount /x/a
。对我来说,你仍然可以访问它下面的树这一点远非显而易见。因此绑定安装可能会很棘手。从功能上来说,当在整个文件系统上使用时,它是相同的。来自的其他内容
/etc/
- 复制有用的相关配置绝对是有意义的。复制例如/etc/passwd
,/etc/shadow
,/etc/groups
可能有意义,以及 的服务器密钥sshd
。
答案3
/proc
管理进程并sys
更改内核参数或当前内核的访问信息。
现在,考虑到绑定意味着双向性质,proc
最好不要安装在 chroot 之外。
sys
可以,但它依赖于当前运行的内核主机,并且必须与 相同dev
,挂载为绑定。
/dev/pts
已经可以作为/dev
绑定安装使用,但它们是 chroot 的一部分,因此pts
建议重新安装新的mount -t devpts none /mnt/drive/dev/pts
。