换成“替换”发行版时,应该绑定安装(或不绑定)proc,sys等中的哪一个?


9

对另一个问题的回答基本上可以归结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是明确的(可以通过网络/互联网访问),但是我不确定modules-在chroot进入Stage3 Gentoo系统时实际上似乎没有必要,对吗?
  • 但是为什么procsysdev/pts重新安装,而不是使用绑定安装?在这种情况下,“更正确” 的实际区别是什么?
  • 此HowTo绑定安装了procdev,但都dev/pts没有sys安装。此外,它将复制/etc/{hosts,fstab}到新的根目录。那有意义吗?我是否也应该包括在内/etc/mdadm.conf

1
它应该基本相同;考虑常规的文件系统:它们不能被挂载两次(除非它们是群集感知的),但是内核确实可以这样做。因此无论如何在本质上都像在内部绑定绑定一样处理它。
frostschutz

Answers:


9

复制/etc/resolv.conf以便不丢失DNS。

之所以复制/ lib / modules,是因为可能需要使用一些在设置chroot时不需要的硬件组件。您必须记住,OP中提到的原始问题涉及用Arch Linux替代NAS OS。因此,您将需要用于以太网(可能是无线的),各种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是绑定安装的,而不是重新安装的。

我实际上已经尝试过这两种方法,并且经过简短的测试运行后,我无法注意到任何区别。诚然,测试并没有多大的作用,因此我在这里休息一下,认为它不会带来太大的改变。


6
  • /etc/resolv.conf-您需要此文件来解析DNS请求。在某些情况下没有必要:

    1. chroot中有一个DHCP客户端,它会被执行,并且DHCP服务器返回适当的信息(通常是这种情况)。

    2. 您对/etc/resolv.conf从chroot内部进行联网(或更确切地说,是通过依赖的常规应用程序进行DNS查询)不感兴趣。

  • /lib/modules/$(uname -r)-在您可能需要为活动内核加载任何其他模块的情况下很有意义。没有这个,您将无法使用当前运行的任何东西。因此,如果您打算长时间运行chroot系统,则可能应该这样做。另一方面,在这种情况下,您可能应该改pivot_root而使用(这是initrd通常在其生命尽头所做的事情)。如果您只需要执行此操作(例如从chroot安装引导加载程序),则不必这样做(因为必须加载所有必需的驱动程序,以便您无论如何都可以执行chroot本身)。

  • /proc并且/dev非常明显-它们包含基本的系统接口。

  • /sys是IIRC不是那个广泛应用于早在2007年这是什么Slackware的(这本身是相当保守的)操作指南发布日期。如今,如果没有它,您的系统可能会因某种原因而失败(例如,一旦某些事情试图枚举某种类型的硬件)。

  • /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


这两个答案都
差不多

0

/proc管理进程并sys更改内核参数或访问当前内核的信息。

现在,考虑到绑定意味着双向性质,proc因此,最好不要将其安装在chroot之外。

sys可能是这样,但是它依赖于当前正在运行的内核主机,并且必须与dev作为bind挂载的相同。

/dev/pts可以通过/dev绑定安装获得,但它们是chroot的一部分,因此pts建议重新安装新的mount -t devpts none /mnt/drive/dev/pts

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.