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( sshdproc 및 dev/pts 중지, 마운트 해제)해도 호스트에 새 터미널이 복원되지 않습니다.

내가 여기서 무엇을 놓치고 있는 걸까요?

답변1

이를 실행하면 mount -t devpts devpts $CHROOT/dev/ptschroot에 devpts 파일 시스템의 별도 인스턴스가 마운트됩니다 . chroot에서 devpt를 사용 가능하게 만드는 또 다른 방법은 바인드 마운트를 사용하는 것입니다. 이는 파일 시스템의 동일한 인스턴스를 새 위치에서 사용 가능하게 만듭니다. 바인드 마운트는 파일 대신 마운트 지점에 대해서만 하드 링크를 생성하는 것과 같습니다.

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

별도의 devpts 인스턴스는 동일한 파일을 공유합니다(터미널을 생성 또는 삭제하거나 해당 메타데이터를 변경하면 모든 인스턴스에 반영됩니다). 그러나 작동을 방해하는 이면에는 분명히 몇 가지 차이점이 있습니다. 바인드 마운트를 사용하면 동기화해야 하는 모든 항목이 동일한 파일 시스템이 아니라 동일한 파일 시스템이기 때문에 동기화됩니다.

관련 정보