在chroot环境下挂载dev, proc, sys?
我想用自定义的包创建一个Linux镜像。
我想做的是在XO笔记本上手工制作我要用的包,因为在真正的XO硬件上编译包需要很长时间,如果我可以把所有需要的包都建立起来,然后直接把映像闪现到XO上,可以节省时间和空间。于是,我从其他地方了解到,我需要将主机的proc、…目录 “挂载 "到我的chroot环境中。
我看到有两种语法,不知道该用哪一种。
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/
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只是一个普通的文件夹,所以应该可以做一个硬链接。
值得注意的是,在这个流行的问题中,Arch Linux做了一个脚本 arch-chroot ; 下载arch-install-scripts-15-1-any.pkg.tar.xz
,它可以处理Arch-Linux和Manjaro中的各种相关问题,我也成功地使用了它。虽然在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)
还有其他的伪文件系统和tmpfs位置。这是在 debian 上的:
/dev/pts
/run
/run/shm
/proc/sys/fs/binfmt_mist
/var/lib/nfs/rpc_pipefs
/proc/fs/nfsd
/proc/bus/usb
在 chroot 中挂载 usbfs
、rpc_pipefs
和 devpts
伪文件系统应该没问题。我建议****不要将/proc
绑定到chroot的/proc
中,因为内核有命名空间的概念,实际上可以在chroot的proc中放入不同的东西。
更新:根据这个邮件列表线程,/sys不应该被绑定挂载,特别是如果chroot进程使用自己的网络命名空间的话。