Полноценно повернуть экран Linux Remastered

Любите ремейки и ремастеры? Я не особо. Казалось бы, написал материал, опубликовал и забыл, и всё хорошо. Однако реальность сурова, и, как казалось, неплохое решение, следует переделать.

Чуть больше года назад, по просьбе одного знакомого я уже занимался этой проблемой, в результате чего появилась небольшая статья о том, как исправить ориентацию экрана в Linux-системах. Но жизнь забавная штука, и если в 2023 я смеялся с чужого китайского девайса, не способного нормально рапортовать геометрию своего дисплея, то к середине 2024 я и сам обзавёлся таковым, пусть и куда более интересным.

Да, у него точно такая же проблема — в любой ОС, кроме Windows, экран повёрнут на бок. В моём случае на правый бок. Особенно весёлым этот факт делает наличие в моём девайсе акселерометра, из-за чего его даже на бок не поставить без отключения авто-поворота, поскольку акселерометр как раз-таки ориентирован нормально, и экран вслед за ним поворачивается на ещё один шаг.

Само собой, в первый же день после получения устройства я провернул описанные в моей же статье действия, и ОС стала нормальной. Однако, решение не лишено проблем, поскольку тому же Display Manager-у абсолютно фиолетово на то, что там выбрано в настройках, и вход в систему по-прежнему отображался вертикально. Как и Plymouth, рисующий заставку системы.

В конечном итоге, почти случайно, в issue-ях этого самого Plymouth я узнал, что начиная с Linux 5.6 добавлена возможность на самом деле полноценно повернуть панель, на уровне модуля drm. И такой поворот уже будет применён абсолютно везде. Потому, начнём, пожалуй, с самого начала.

Дано: ноутбук, считающий себя планшетом. Смотрите фото выше. Позволю себе такую наглось, как украсть часть собственной статьи из прошлого года, так как первые шаги никак не отличаются.

Выбор ОС, установка

Выбран был тестовый Debian (trixie), и установлен почти без приключений, не считая необходимость повернуть голову на 90 градусов. Полагаю этот гайд подойдёт для любого относительно современного дистрибутива.

Первым же делом после установки ОС идём в настройки экрана и поворачиваем его в нормальный вид, благо большинство DE имеют такую настройку. Теперь можно будет по-человечески работать с терминалом.

Определяем идентификатор монитора

Поскольку в Wayland-средах команда xrandr возвращает исключительно чушь, посмотрим напрямую на представленные в подсистеме drm устройства. Для этого посмотрим на содержимое папки /sys/class/drm:

Тут видно довольно много директорий-устройств, и тут card0, очевидно, наша видеокарта, а card0-XXX — её видеовыходы. Тут проще всего пойти путём исключения: HDMI-X и DP-X (DisplayPort) вряд ли являются встроенной в ноутбук матрицей, и остаётся только один вариант — DSI-1. Собственно, берём.

Далее остаётся поправить буквально один файл. Идём в параметры ядра, точнее в файл /etc/default/grub и правим параметр GRUB_CMDLINE_LINUX_DEFAULT.

Нам нужно добавить в него ровно один параметр: video=УСТРОЙСТВО:panel_orientation=ПОВОРОТ, где:

  • УСТРОЙСТВО — идентификатор видеовыхода (монитора) что мы определили выше;
  • ПОВОРОТ — вариант поворота экрана, один из left_side_up, right_side_up, upside_down, значение очевидно из названий.

В моём случае получили такой вариант:

...
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=DSI-1:panel_orientation=right_side_up"
...

А что с самим GRUB? Меню загрузки повернуть скорее всего не получится, потому разумнее всего сделать так, чтобы мы его просто лишний раз не видели. Потому дополнительно добавляем эти опции:

...
GRUB_DEFAULT=0
GRUB_TIMEOUT=0
GRUB_TIMEOUT_STYLE="hidden"
GRUB_THEME=""
...

Для применения изменений вызываем sudo update-grub (или sudo grub-mkconfig -o /boot/grub/grub.cfg для не-Debian систем), и перезагружаемся. И вуаля, теперь всё как надо. Даже в настройках системы разрешение экрана верное.

thumb_up 0 thumb_down 0 chat Комментарии (0) favorite Донат