Debian chroot 阻止主机上的 PTTY

Debian chroot 阻止主机上的 PTTY

我在 Arch Linux 下创建了一个基于 Debian 的 chroot 环境debootstrap,并用这样的方式填充它:

#!/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

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

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

devpts 的单独实例共享相同的文件(如果您创建或删除终端或更改其元数据,它会反映在所有实例中)。然而,在幕后显然存在一些差异,导致它无法工作。绑定安装可确保需要同步的所有内容都得到同步,因为它们是相同的文件系统,而不仅仅是相同的文件系统。

相关内容