나는 이 질문과 같은 실수를 저질렀습니다.Debian chroot는 호스트에서 PTTY를 차단합니다.
chroot에 "devpts" 파일 시스템을 마운트했는데 이제 urxvt가 ptys를 생성할 수 없습니다. 이상하게도 xterm은 여전히 작동합니다. /dev/pts를 다시 마운트해도 문제가 해결되지 않습니다.
재부팅하지 않고 시스템이 다시 제대로 작동하도록 하려면 어떻게 해야 합니까?
답변1
@mikeserv 님의 댓글 덕분에 복원 방법을 알아냈습니다.
나는 이것을 Linux 4.0.7에서만 테스트했기 때문에 이전 버전이나 이후 버전에서는 작동하지 않을 수 있습니다.
마운트 /dev/pts -o 다시 마운트, gid=5, 모드=620
이 옵션을 사용하지 않고 파일 시스템을 마운트하면 devpts
동일한 pty를 포함하는 동일한 "인스턴스"가 마운트됩니다. 매뉴얼 페이지에 따르면 인수를 전달하지 않으면 이를 생성한 프로세스와 동일한 gid를 사용하여 새 pty가 생성됩니다. 분명히 이 (누락된) 마운트 옵션은 전체 인스턴스에 영향을 미치므로 원래 인스턴스는 더 이상 ptys를 그룹에 재할당하지 않습니다. urxvt가 pty가 이 그룹에 있어야 하는 이유를 아직도 모르겠습니다. 하지만 xterm은 그렇지 않습니다.chroot
newinstance
/dev/pts
gid
devpts
/dev/pts
tty
이에 대한 몇 가지 추가 참고 사항:
/dev/pts/ptmx
모드 000(root:root) 및/dev/ptmx
모드 666(root:tty)은 정상인 것 같습니다. 그러나 동일한 블록 장치를 가리키므로 설정이ptmxmode
불필요해 보이지만 무해해 보입니다.- 기본값
mode
(600)은 작동하는 것처럼 보이지만 어쨌든 tty는 모드 620으로 생성됩니다. 뭔가 패턴이 바뀌고 있을 수도 있습니다. 내 시스템이 부팅되면mode=620
기본값이 무시 되므로mode
/dev/pts의 기본 기능을 더 잘 복원하기 위해 이를 위의 명령줄에 넣었습니다. - 설정하지 마십시오
uid
. 보안 문제 또는 터미널에서 생성되지 않는 것과 동일한 문제가 발생할 수 있습니다. - 추가는
newinstance
선택 사항이지만 보안이 향상됩니다. 이 옵션을 사용하면 컨테이너는/dev/pts
호스트 시스템에서 사용되지 않으므로 "실제"를 마운트할 수 없습니다. 이것을 사용하는 경우ptmxmode=666
이것이/dev/ptmx
에 대한 심볼릭 링크인지 확인해야 합니다pts/ptmx
. 새devpts
인스턴스를 설치하면/dev/pts
기존 터미널이 이상하게 동작(예:gpg
작동하지 않음)할 수 있으므로 이 옵션을 사용하는 경우 해당 터미널을 다시 시작해야 합니다.