2010-07-18 19:06:10 +0000 2010-07-18 19:06:10 +0000
92
92

在chroot环境下挂载dev, proc, sys?

我想用自定义的包创建一个Linux镜像。

我想做的是在XO笔记本上手工制作我要用的包,因为在真正的XO硬件上编译包需要很长时间,如果我可以把所有需要的包都建立起来,然后直接把映像闪现到XO上,可以节省时间和空间。于是,我从其他地方了解到,我需要将主机的proc、…目录 “挂载 "到我的chroot环境中。

我看到有两种语法,不知道该用哪一种。

答案 (6)

118
118
118
2012-04-26 06:10:11 +0000

Arch Linux Wiki](https://wiki.archlinux.org/index.php/Chroot)建议使用以下命令:

cd /mnt/arch # or where you are preparing the chroot dir
mount -t proc proc proc/
mount --rbind /sys sys/
mount --rbind /dev dev/
45
45
45
2010-07-19 01:02:06 +0000

对于/proc/sys,我想你可以使用任何一种方法。它们都是特殊的文件系统,所以可以重复创建任何次数(绑定挂载方法使用与主机系统完全相同的挂载,而另一种方法使用新的挂载)。我一直看到指南中推荐使用绑定挂载,所以我会使用这种方法。据我所知,并没有真正重要的区别。

但是,/dev通常是由udev管理的tmpfs挂载,所以它必须和主机上的文件系统是一样的。这意味着你需要使用绑定挂载的方法。

如果这个chroot会存在一段时间,你可以把这些条目放在主机系统的/etc/fstab中,以简化事情。

13
13
13
2010-07-19 00:05:08 +0000

Gentoo Handbook](http://www.gentoo.org/doc/en/handbook/handbook-amd64.xml?full=1 “Gentoo Handbook”)特别提到了这两个命令来重新挂载/proc和/dev。

mount -t proc none /mnt/chroot/proc
mount -o bind /dev /mnt/chroot/dev

我怀疑/sys只是一个普通的文件夹,所以应该可以做一个硬链接。

1
1
1
2016-04-17 15:36:51 +0000

值得注意的是,在这个流行的问题中,Arch Linux做了一个脚本 arch-chroot ; 下载arch-install-scripts-15-1-any.pkg.tar.xz

,它可以处理Arch-LinuxManjaro中的各种相关问题,我也成功地使用了它。虽然在Manjaro的二次安装中,简单的标准chroot并不能让你运行

pacman --sync linux

(系统崩溃后的银弹),但用 arch-chroot /run/media/*YOURSELF*/manja-disk2

替换成 pacman --sync linux

,就能让你的二次Arch-derivate安装通过 &001

就能像魔术般地修复你的二次Arch-derivate安装。bash脚本arch-chroot可以处理/dev /sys /proc和更多的问题,这些问题都是由标准的chroot来解决。使用arch-chroot](https://wiki.archlinux.org/index.php/Change_root#Using_arch-chroot)

-1
-1
-1
2019-01-20 13:32:32 +0000

最简单的方法是使用for循环:

cd /

for i in proc sys dev; do mount -o bind $i /folder/$i; done
```。
-1
-1
-1
2012-10-15 21:06:00 +0000

还有其他的伪文件系统和tmpfs位置。这是在 debian 上的:

/dev/pts 
/run
/run/shm
/proc/sys/fs/binfmt_mist
/var/lib/nfs/rpc_pipefs
/proc/fs/nfsd
/proc/bus/usb

在 chroot 中挂载 usbfsrpc_pipefsdevpts 伪文件系统应该没问题。我建议****不要将/proc绑定到chroot的/proc中,因为内核有命名空间的概念,实际上可以在chroot的proc中放入不同的东西。

更新:根据这个邮件列表线程,/sys不应该被绑定挂载,特别是如果chroot进程使用自己的网络命名空间的话。