Блокировка PTTY Debian на хосте

8

Я создал среду chroot на основе Debian, используя debootstrapArch Linux, и наполнил ее такой жизнью:

#!/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) не возвращает новые терминалы на хосте.

Что мне здесь не хватает?

lynix
источник
1
Пожалуйста, опубликуйте результаты ls -l /dev/ptsдо и после. Ударить в темноте: что mount --bind /dev/pts $CHROOT/dev/ptsлучше? Вы, вероятно, сэкономите много усилий, используя schroot вместо того, чтобы создавать свой собственный.
Жиль "ТАК - перестань быть злым"
mount --bindсделал свое дело, спасибо! ;) Выходы ls -l /dev/ptsне отличались.
Lynix

Ответы:

4

При запуске mount -t devpts devpts $CHROOT/dev/ptsэто монтирует отдельный экземпляр файловой системы devpts в chroot. Альтернативный способ сделать devpts доступным в chroot - это использовать привязку, которая делает тот же экземпляр файловой системы доступным в новом месте. Связывание монтируется как создание жесткой ссылки, только для точек монтирования вместо файлов.

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

Отдельные экземпляры devpts делят одни и те же файлы (если вы создаете или удаляете терминал или меняете его метаданные, это отражается во всех экземплярах). Однако под капотом явно есть какая-то разница, из-за которой он не работает. Привязка позволяет синхронизировать все, что нужно для синхронизации, поскольку это одна и та же файловая система, а не просто идентичная.

Жиль "ТАК - перестань быть злым"
источник
1
У меня просто была противоположная проблема с chroot Debian, работающим в ОС QNAP на базе Linux QTS. Я использовал привязку, которая приводила к сбою экрана и переключению на devpts mount вместо того, чтобы исправить это.
отмечается