5

Не получается открывать псевдотерминалы в BSD стиле.

Система:

avp@avp-ubu1:hashcode$ uname -a
Linux avp-ubu1 4.4.0-104-generic #127-Ubuntu SMP Mon Dec 11 12:16:42 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
avp@avp-ubu1:hashcode$ cat /etc/issue
Ubuntu 16.04.3 LTS \n \l

После загрузки в /dev/ не было файлов pty.. и соответствующих им tty...

Создание их

cd /dev; MAKEDEV pty; MAKEDEV tty

руками не помогло. Т.е. файлы в /dev теперь есть (с правами все вроде бы нормально), но программа их не открывает (cat: /dev/ptya0: No such device or address).

Добавление создания pty в /etc/rc.local (т.е. попробовал (зачем?) делать при загрузке) тоже не помогло.

Вопрос -- как сделать в Ubuntu работающие /dev/pty...?

P.S.
Я подозреваю, что ядро собирается без нужных модулей, т.е. при сборке нет CONFIG_LEGACY_PTYS, CONFIG_LEGACY_PTY_COUNT

Update
Оказывается система все же собрана с BSD style CONFIG_LEGACY_PTYS = y, но CONFIG_LEGACY_PTY_COUNT = 0 (смотрел в /boot/config-4.4.0-104-generic).

Кто знает (не получается найти в сети), как динамически (пересобирать ее мне все равно не из чего), т.е. меняя какой-то из файлов в /proc/sys (или другим способом?), изменить этот параметр?
В выводе sysctl -a этого параметра похоже нет (кстати, а как он должен в выводе sysctl называться?), из относящихся к pty там только kernel.pty.max = 4096, kernel.pty.nr = 11 (ну, это текущее количество открытых pts) и kernel.pty.reserve = 1024. Насколько я понимаю это параметры UNIX98 pseudoterminals

avp
  • 46,098
  • 6
  • 48
  • 116
  • @PavelMayorov, а чего ему не работать через /dev/ptmx -- /dev/pts/... ? – avp Dec 17 '17 at 14:08
  • http://manpages.ubuntu.com/manpages/xenial/man7/pty.7.html – Raz Galstyan Dec 17 '17 at 15:14
  • @StackOverflow, в самом деле думаете, что я все это не читал? Вопрос же, что делать, если созданный /dev/ptyp1 (к примеру) не открывается? Видимо как-то надо добавить драйвер (для его major) к ядру. Причем, сам я ядро не собираю, это LTS, поэтому интересна инструкция, когда после автообновлений все опять не ломается. – avp Dec 17 '17 at 15:44
  • /proc/config.gz есть? в убунтах обычно есть. посмотри там флаги – eri Dec 20 '17 at 10:33
  • а /dev/ptmx может всетаки использовать? Since kernel 2.6.4, BSD-style pseudoterminals are considered deprecated (they can be disabled when configuring the kernel); UNIX 98 pseudoterminals should be used in new applications. – eri Dec 20 '17 at 10:38
  • @eri, в самом деле в /boot/config-4.4.0-104-generic (у меня похоже конфиг там) CONFIG_LEGACY_PTYS=y (значит драйвер в сборку включен?) CONFIG_LEGACY_PTY_COUNT=0. Интересно, как этот COUNT поменять где-нибудь в /sys, чтобы LEGACY_PTYS заработали – avp Dec 20 '17 at 22:41
  • @eri, /dev/ptmx использовать можно, только proxy с чтением-записью мастеров надо делать для пары pty (слейвы отдаем аппликайшенам). Мне самому стало интересно, получится ли с LEGACY pty/tty обмен между программами без всяких прокси (только создатель псевдотерминала, но он не должен ничего в процессе обмена делать) – avp Dec 20 '17 at 22:50
  • что-то не нахожу – eri Dec 21 '17 at 12:30
  • 1
    Через sys или proc поменять в принципе не возможно... но можно во время загрузки передать ядру pty.legacy_count=<n>. – Fat-Zer Jan 16 '18 at 01:11
  • @Fat-Zer, спасибо. На днях попробую – avp Jan 16 '18 at 18:36
  • @Fat-Zer, попробовал, добавлял в /etc/default/grub, получил после перзагрузки в /proc/cmdline BOOT_IMAGE=/boot/vmlinuz-4.4.0-109-generic root=UUID=a0373d84-7984-4f4a-abbf-190b26f83255 ro quiet pty.legacy_count=64 splash, но пока ничего не изменилось. cat /dev/ttya1 говорит no such address. Попробую завтра-послезавтра программно с pty поработать, как положено, но чую не пройдет... – avp Jan 16 '18 at 22:14
  • @avp, первый подчинённый терминал /dev/ttyp0. /dev/ttya1 — 177-й, а их создано только 64, понятно, что его нет. Устройства /dev/{pty,tty} появились? – Fat-Zer Jan 16 '18 at 22:39
  • @Fat-Zer, ага (ну, устройства у меня были (только не функционировали), я их в /etc/rc.local MAKEDEV-ом делал). Теперь заработали. Надо было не жмотничать а сразу pty.legacy_count=256. Спасибо. А оформите, как ответ, может кто-то набредет через гугл? (комментарии-то не индексируются) – avp Jan 17 '18 at 17:45
  • @avp лучше самостоятельно... мне, честно сказать, не особо хочется формулировать и вылизывать это до полноценного ответа... – Fat-Zer Jan 18 '18 at 14:38

0 Answers0