Debian chroot阻止主机上的PTTY


8

我已经debootstrap在Arch Linux下创建了一个基于Debian的chroot环境,并使用如下代码填充了它:

#!/bin/sh

mount -t proc proc $CHROOT/proc
mount -t devpts devpts $CHROOT/dev/pts

chroot $CHROOT /bin/bash --login -c "/etc/init.d/ssh start"

问题是执行完以上脚本后,我将无法再在主机系统上打开新终端:

urxvt: can't initialize pseudo-tty, aborting.

关闭chroot(停止sshd,卸载proc和dev / pts)不会重新带回主机上的新终端。

我在这里想念什么?


1
请发布ls -l /dev/pts之前和之后的输出。在黑暗中刺刺:mount --bind /dev/pts $CHROOT/dev/pts有更好的办法吗?通过使用schroot而不是自己构建,可能会节省很多精力。
吉尔(Gilles)“所以,别再邪恶了”

mount --bind做到了,谢谢!;)的输出ls -l /dev/pts没有不同。
lynix

Answers:


4

运行时mount -t devpts devpts $CHROOT/dev/pts,这会在chroot中安装devpts文件系统的单独实例。在chroot中使devpts可用的另一种方法是使用绑定安装,它使文件系统的同一实例在新位置可用。绑定挂载就像建立硬链接,仅用于挂载点而不是文件。

mount --bind /dev/pts "$CHROOT"/dev/pts

devpt的单独实例共享相同的文件(如果您创建或删除终端或更改其元数据,它将反映在所有实例中)。但是,显然在引擎盖下存在一些差异,这使其无法正常工作。绑定安装可确保同步所有需要同步的内容,因为它是同一文件系统,而不仅仅是同一文件系统。


1
在QNAP基于QTS Linux的操作系统上运行Debian chroot时,我遇到了相反的问题。我曾使用过绑定安装,这导致屏幕出现故障,并切换到devpts安装,而不是修复了它。
markhep '16
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.