LINUX.ORG.RU
ФорумTalks

Про кривизну VT-switching/KMS/иксов

 


0

1

Понадобилось переключиться в другой vt, иксы блокируют Ctrl+Alt+Fx. Выполняю sudo chvt 1. Ничего не происходит. strace показывает, что был выполнен сисколл VT_ACTIVATE 1 на /dev/tty0. В /sys/class/tty/tty0/active tty1. Не трогая клавиатуру переключаюсь в текстовый редактор, набираю текст, ввод которого в консоли залогинил бы меня и выполнил бы парочку команд в шелле. В эмуляторе терминала выполняю sudo chvt 7. Смотрю процессы - так и есть, на tty1 запущен шелл, команды выполнились. Безобразие. Зато у ретроградов никаких претензий.

Насколько я понимаю, средств для revoke дисплея и устройств ввода у ядра нет и не планируется, и даже поступление VT_RELDISP от процесса, контролирующего source vt, находящийся в KD_GRAPHICS, оно не проверяет перед тем, как сменить /sys/class/tty/tty0/active и начать передавать события ввода запущенному на target vt процессу. И это еще мультисита нет.

★★

Насколько я понимаю, средств для revoke дисплея и устройств ввода у ядра нет и не планируется

Типа Alt+SRq+R?

Bfgeshka ★★★★★
()
Ответ на: комментарий от Bfgeshka

У меня в /proc/sys/kernel/sysrq 1, на иксы unraw не действует.

shatsky ★★
() автор топика
Ответ на: комментарий от Bfgeshka

Вывод kbd_mode до unraw:

The keyboard is in raw (scancode) mode
После:
The keyboard is in Unicode (UTF-8) mode
Т. е. он сработал, но иксам не мешает. Полагаю, он предназначен именно для того, что обозначает его название - для переключения клавиатурного ввода из raw-режима в translate, см. https://unix.stackexchange.com/questions/16530/what-is-raw-keyboard-mode

shatsky ★★
() автор топика

Ещё один всё понял.

intelfx ★★★★★
()

> Понадобилось переключиться в другой vt, иксы блокируют Ctrl+Alt+Fx

Это ненормально

ZenitharChampion ★★★★★
()
Ответ на: комментарий от question4
Linux nixos 4.14.91 #1-NixOS SMP Sat Dec 29 12:39:11 UTC 2018 x86_64 GNU/Linux
X.Org X Server 1.19.6

Возможное решение проблемы: если с устройствами ввода-вывода взаимодействует процесс дисплейного сервера/композитора, и такую возможность он должен иметь лишь тогда, когда контролирует vt - ведро должно возвращать ошибку при попытке доступа к нодам соответствующих устройств в случае, если vt процесса не совпадает с текущим vt, даже если по ACL'ам и прочим правам процесс имеет право на доступ.

shatsky ★★
() автор топика
Ответ на: комментарий от shatsky

Т. е. определенные устройства объявляем vt-bound, и определенные сисколлы/ioctl'ы на них проверяем на предмет наличия у процесса (или его родителя) контроля над активным vt, если нет - возвращаем какой-нибудь EWRONGVT. Интересно, мешает ли что-нибудь сделать подобное.

shatsky ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.