Вопрос или проблема
Недавно я экспериментировал с изменением максимального числа tty
в системе с 63 до 128. Мне это удалось, и теперь я столкнулся с очень странной проблемой.
Я запускаю gdm
на /dev/tty1
и сеанс Xfce4 через него (который работает на /dev/tty2
). У меня также работает getty
на /dev/tty63
и /dev/tty64
.
Проблема в том, что когда я запускаю команду chvt 2
из tty63 (предыдущее значение MAX_NR_CONSOLES
, указанное в include/uapi/linux/vt.h
), все переключается успешно, и я могу использовать Xfce4. Но если я запускаю chvt 2
из tty64, система зависает (без паники ядра), и я не могу использовать мышь/клавиатуру/другие устройства ввода. Забавно, что при запуске gdm
через strace -f
все начинает работать нормально (переключение с 64 на 2 tty работает).
Проблема возникает исключительно при использовании gdm
в Xorg/Wayland сеансах. При использовании другого дисплейного менеджера/ручного запуска все работает нормально.
Мой вопрос: что может быть не так? Почему при переключении на второй tty из любого другого tty, который <=63, все зависает? Кого винить? Какой системный вызов/программное обеспечение?
Ответ или решение
Ваш вопрос касается проблемы зависания системы при переключении с виртуального терминала /dev/tty64
на сессию Xfce4, которая запускается через GDM. Описание вашей ситуации предполагает несколько уровней анализа. Ниже изложены основные причины и возможные способы устранения проблемы.
Проблема с переключением терминалов
-
Количество виртуальных терминалов:
Вы увеличили максимальное количество виртуальных терминалов с 63 до 128. Это изменение потенциально может воздействовать на работу системы, особенно в области менеджеров окон и дисплейных менеджеров, которые могут не ожидать появления терминалов с номерами выше 63. -
Проблемы с GDM:
GDM (GNOME Display Manager) может не корректно управлять сессиями, если количество виртуальных терминалов больше стандартного. Это может быть связано с конфигурационными файлами или особенностями инициализации сессий в рамках GDM, так как некоторые из них могут обращаться к фиксированным адресам. -
Системные вызовы:
Зависание может свидетельствовать о том, что GDM или Xorg не обрабатывают корректно переключение терминалов, что приводит к блокировке операций ввода-вывода. Использованиеstrace -f
позволяет временно обойти эту проблему, поскольку это может затруднить синхронизацию между процессами и системным вызовами.
Рекомендации по устранению проблемы
-
Возврат к 63 терминалам:
Рассмотрите возможность возврата к стандартному количеству виртуальных терминалов. Это может оказаться наиболее простым и эффективным способом устранить проблему, особенно если расширение количества терминалов не является критично необходимым. -
Координация с дисплейным менеджером:
Попробуйте использовать другой дисплейный менеджер, например, LightDM или SDDM, чтобы выяснить, сохраняется ли проблема. Это может помочь определить, связано ли поведение именно с GDM. -
Обновление и конфигурация:
Убедитесь, что у вас установлены последние обновления всех пакетов, включая GDM, Xorg и ядро. Проверьте конфигурацию GDM для специфических настроек, касающихся виртуальных терминалов. -
Отладка:
Если проблема сохраняется, попробуйте увеличить уровень логирования для GDM и Xorg, чтобы получить больше информации о том, что происходит в момент зависания. Эта информация может указать на конкретные системные вызовы, которые вызывают зависание. -
Сообщество и проникновение в документацию:
Исследуйте соответствующие форумы и обсуждения в сообществе Linux, настраивает ли кто-то еще систему с большим количеством терминалов. Убедитесь, что вы ознакомились с обновленной документацией, включаяman
страницы для всех используемых компонентов.
Заключение
Вопрос о том, почему система зависает при попытке переключения с /dev/tty64
, требует комплексного подхода к анализу как конфигурации системы, так и особенностей используемого ПО. Следуя вышеуказанным шагам, вы сможете получить больше информации о причинах проблемы и, возможно, найти путеводитель к её разрешению.