Случайные сбои на XFCE – как диагностировать, что происходит?

Я нахожусь на Parabola (вилка Arch), и я запускаю среду рабочего стола XFCE. Тем не менее, я периодически получаю эти странные сбои, где мой рабочий стол замерзает. У меня нет возможности перемещать курсор (на самом деле, я даже не вижу мой курсор), моя машина не отвечает на любой ввод с клавиатуры (я даже не могу переключиться на другой tty), и в основном только кнопка питания работает. Однако, в то же время, если у меня (например) есть музыка, играющая в фоновом режиме, то она продолжает играть без проблем.

Я совершенно не уверен, как диагностировать источник моей проблемы. Где я могу посмотреть, и что я буду искать, чтобы обнаружить, что вызывает такое поведение?

Если ваша музыка продолжает воспроизводиться более нескольких секунд, это означает, что система работает нормально, за исключением того, что X-сервер настолько заморожен, что не отвечает на любой ввод в консоль. Переключение между tty требует взаимодействия с сервером X, как для обработки комбинации клавиш, так и для сброса видеокарты.

Если у вас есть другой способ входа в систему, вы можете запускать команды и пытаться отладить проблему или, по крайней мере, выполнить чистое завершение работы. Для большинства людей способ входа в систему будет SSH с другого компьютера (который может быть смартфоном – есть терминальные эмуляторы и SSH-клиенты для основных операционных систем смартфонов).

Из командной строки вы можете попробовать запустить chvt 1 как root для переключения на другую текстовую консоль. Это может работать или не работать, в зависимости от того, что делает сервер X. Если сервер X не отвечает, коммутатор может выйти из строя, или вы можете опечатать, потому что графический режим текстовой консоли настроен неправильно.

Еще одна полезная вещь – магия SysRq : нажмите и удерживайте Alt , нажмите SysRq (вы можете ее отпустить), нажмите мнемоническую букву и отпустите все клавиши. Это напрямую обрабатывается ядром, поэтому оно будет работать до тех пор, пока ядро ​​не будет полностью заблокировано. Если у вас нет доступа к SSH, попробуйте нажать Alt + SysRq + R, чтобы переключить клавиатуру из режима raw, затем нажмите Ctrl + Alt + F1, чтобы переключиться на текстовую консоль. Когда клавиатура больше не находится в сыром режиме, привязка ключа обрабатывается непосредственно ядром, поэтому у этого есть возможность работать. Подобно запуску chvt , фактический переключатель VT может быть поврежден X-сервером.

Если вам удастся получить командную строку, вот некоторые вещи, на которые вы можете посмотреть как первый уровень расследования:

  • Запустите htop или top и посмотрите, какие процессы поддерживают загрузку процессора.
  • Проверяйте сообщения в /var/log/Xorg.0.log , /var/log/kern.log (или везде, где ваш дистрибутив хранит журналы ядра) или ~/.xsession-errors (или везде, где ваши руководители сеансов направляют stdout и stderr) ,

Если какой-то процесс X занимает 100% процессорного времени или использует его с X-сервером, попробуйте его убить. Compiz является частым преступником.

Вы можете использовать Alt + SysRq + K, затем Alt + SysRq + R, чтобы убить X-сервер и все процессы в X-сеансе. Это также оставляет графическую карту в плохом состоянии. Затем вы можете запустить новый X-сервер, есть хороший шанс, что он сможет повторно инициализировать графическую карту.

Обычными проблемами, вызывающими блокировки, являются:

  • Драйвер 3D-графики. 3D-драйверы намного сложнее, чем 2D (это понятно, поскольку они новее, сложнее и даже хуже поддерживаются производителями оборудования). Постарайтесь меньше полагаться на 3D-материал. В частности, избегайте компиляции.
  • Ошибочный графический драйвер. Если вы используете бесплатный драйвер для своего GPU, попробуйте фирменный, или наоборот. Попробуйте более позднюю или более старую версию.
  • Плохое ОЗУ. Запустите тест памяти .