Tty

Debian chroot 阻止主機上的 PTTY

  • October 15, 2019

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)不會在主機上恢復新終端。

我在這裡想念什麼?

當您執行時mount -t devpts devpts $CHROOT/dev/pts,這會在 chroot 中安裝 devpts 文件系統的單獨實例。使 devpts 在 chroot 中可用的另一種方法是使用綁定掛載,它使文件系統的相同實例在新位置可用。綁定掛載就像建立一個硬連結,只針對掛載點而不是文件。

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

devpts 的不同實例共享相同的文件(如果您創建或刪除終端或更改其元數據,它會反映在所有實例中)。但是,引擎蓋下顯然存在一些差異,這使其無法正常工作。綁定掛載確保需要同步的所有內容都是同步的,因為它是同一個文件系統,而不僅僅是一個相同的文件系統。

引用自:https://unix.stackexchange.com/questions/90285