LINUX.ORG.RU

Как изменить разрешение TTY? Взаимодействие framebuffer и drm.

 , ,


0

1

Использую Arch Linux. Видеокарта nvidia gtx 1060. В системе используются проприетарные драйвера nvidia. Загрузчик - rEFInd.

Иксы работают нормально, но в виртуальных терминалах низкое разрешение. Походу 800×600. Framebuffer - vesa. Хотелось бы настроить нормальное разрешение. Еще куча непоняток с взаимодействием Фреймбуфера(далее, фб) и драйверов для видеокарты. Как я понимаю, текстовый режим в терминалах реализован через vesa фб. Где-то написано, что фб не работает с drm/kms, поэтому при компиляции ядра необходимо отключать любые VGA/VESA драйвера. Где-то написано, что KMS сам настраивает разрешение фб. Прошу разъяснить это взаимодействие.


Невидия не предоставляет драйвера веса и поэтому не поддерживает в принципе консоль нативного разрешения, только через «костыли» https://wiki.archlinux.org/title/NVIDIA/Tips_and_tricks#Fixing_terminal_resolution или использовать Nouveau где всё нормально из коробки.

Хотя может в новых дровах чё поменяли и я не прав

LINUX-ORG-RU ★★★★★
()

fbset -xres 800 -yres 600

Цифры замени, само собой. Если команда не найдена, pacman -S fbset

Dog ★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Не знаю кто там что предоставляет или не предоставляет, но в дебиане с установленными nvidia драйверами консоль высокого разрешения работает (fb там или нет - тоже не знаю), в debian 9 уже точно, в debian 8 вроде тоже было.

Разрешение настраивается в командной строке ядра (она в конфиге grub прописывается) например так

GRUB_CMDLINE_LINUX_DEFAULT="quiet video=VGA-1:1920x1080@60"

(VGA-1 - название видеовыхода, оно может быть и другое)

Эта настройка влияет и на консоль и подхватывается иксами - в итоге при переключении с консоли на графику и назад всё делается без неприятного сброса видеорежима.

Впрочем если мониторный кабель не дефективный китайский без линии автодетекта - то высокое разрешение само соой ставится.

firkax ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

с каких пор стандартные efifb/vesafb это «костыли»?

anonymous
()
Ответ на: комментарий от firkax

А хотя нет, перепутал, те настройки я делал на другом железе, там не было nvidia драйверов. Тогда не знаю.

firkax ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Nouveau

Я бы сабж уже в оффтопик-лист внёс, он выше 900 серии толком не работает и в свете последних антимайнерских ограничений очевидно, что работать не будет примерно никогда.

izzholtik ★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Nouveau где всё нормально из коробки

отсутствие vulkan, работа на 10% частоты и прочая убогость это на лоре называется «всё нормально из коробки»

anonymous
()
Ответ на: комментарий от izzholtik

он выше 900 серии толком не работает

Просто не давитесь кактусом, продайте nvdia майнерам и купите радеон какой-нибудь. Можно старый типа hd6800, что бы недорого.

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

ага, чтоб амуде дрова зависали с ring gfx timeout, как у страдальцев в соседнем треде

anonymous
()

Пропиетарные дрова нвидии не имеют своего фреймбуфера, но прекрасно работают с ядерными efifb и simplefb, оба умеют в kms. vesafb сильно устарел, оставлен для совместимости со всякой древностью и не умеет в kms. Если у тебя UEFI используй efifb, если классический старый бивис - simplefb. vesafb использовать не должен ты.


dmesg | grep efifb
[    0.892541] pci 0000:03:00.0: BAR 1: assigned to efifb
[    1.038296] efifb: probing for efifb
[    1.038311] efifb: framebuffer at 0xb0000000, using 8640k, total 8640k
[    1.038312] efifb: mode is 1920x1080x32, linelength=8192, pages=1
[    1.038312] efifb: scrolling: redraw
[    1.038314] efifb: Truecolor: size=8:8:8:8, shift=24:16:8:0

вот так у меня, 1660печ, nvidia-drivers-470.42.01, ядру сказано

video=1920x1080
Но у меня efifb единственный фреймбуфер в ядре. Если у тебя их несколько вкомпилено скажи ядру
video=efifb:1920x1080

Документацию на фреймбуферы ищи в /usr/src/linux/Documentation/fb

PS. Пропиетарные дрова nvidia несовместимы с nouveau, в котором как раз ЕСТЬ фреймбуфер. Поэтому nouveaufb, если он включен в ядре, будет захватывать видеокарту и конфликтовать. Значит нужно либо исключить его из ядра, либо внести модуль в blacklist. Так же желательно убедиться что он отсутствует в initrd.

Jameson ★★★★★
()
Последнее исправление: Jameson (всего исправлений: 9)
Ответ на: комментарий от Jameson

Благодарю за ответ, помогло. Странно, почему половина форумов в инете указывают на невозможность установки разрешения efifb(он у меня используется). Еще вопрос, почему если hwinfo –framebuffer Указывает VESA framebuffer, а не efifb?

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

невозможность установки разрешения efifb

Потому что efifb, как и simplefb, предельно тупые фреймбуферы и используют то разрешение, которое уже выставлено кем то - прошивкой, загрузчиком и т.п. Сами изменять они его не умеют. Но обычно это и не требуется, так как видеорежим сейчас чаще всего уже согласован с монитором и инициализирован UEFI до загрузки ядерного фреймбуфера, задача фреймбуфера этим воспользоваться и ничего не испортить. (могу наврать, я это так понял, но я не настоящий сварщик)

почему если hwinfo –framebuffer Указывает VESA framebuffer, а не efifb

В душЕ не того самого. У меня этой утилиты нет, ставить мне её лень. Я верю тому что ядро в dmesg написало, а не утилитам.

Jameson ★★★★★
()
Последнее исправление: Jameson (всего исправлений: 4)
Ответ на: комментарий от Xenius

Красные уже умеют в CUDA и RTX? Или хотя бы чтобы OpenCL рандомно гпу не вешал?

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