home.social

#uvesa — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #uvesa, aggregated by home.social.

  1. Как известно, при работе с проприетарным драйвером nvidia-drivers , невозможно использовать фреймбуфер через nouveau  или доступный в ядре фреймбуфер для NVIDIA, так как они конфликтуют с драйвером, который используется в X-сервере. Добиться работы фреймбуфера в консоли без костылей типа выгрузки nouveau перед запуском X-сервера можно только используя uvesafb .

    Однако, подавляющее большинство инструкций описывают настройку uvesafb в сочетании с initrd, что бесполезно, если ядро собрано без его поддержки.

    Само собой, необходимо выполнить все инструкции, которые необходимы для работы драйверов от NVIDIA без конфликтов:

    • Включить поддержку модулей
      [*] Enable loadable module support --->
    • Включить MTRR
      Processor type and features --->    [*] MTRR (Memory Type Range Register) supportProcessor type and features --->    [*] MTRR (Memory Type Range Register) support
    • Отключить встроенные драйверы ядра для фреймбуфера на видеокартах NVIDIA
      Device Drivers --->    Graphics support --->        Frame buffer Devices --->             Support for frame buffer devices --->            < >   nVidia Framebuffer Support            < >   nVidia Riva support
    • Собрать DRM модулем или вовсе выключить его в ядре (NVIDIA использует свой DRM)
      Device drivers --->    Graphics support --->        < > Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)

      У меня при встроенном модуле DRM в dmesg  можно было наблюдать ошибки и конфликт с драйвером nvidia , но как ни странно, в итоге всё работало. Когда я убрал модуль, вместе с ним пропали и ошибки.

    Здесь путь с обычной инструкцией расходится, так как мы не используем initrd при загрузке. В ядре нужно включить поддержку uvesafb в виде модуля:

    Device Drivers  --->     Connector - unified userspace  kernelspace linker  --->    Graphics support  --->        [*] Support for frame buffer devices  --->            [*]   Enable firmware EDID               Userspace VESA VGA graphics support            [*]   Simple framebuffer support

    И собрать нужные для uvesafb пакеты:

    emerge -aq v86d

    Теперь прописываем загрузку модуля uvesafb с параметрами:

    # ...modules="uvesafb"# ...module_uvesafb_args="mode_option=1920x1080-24 mtrr=2 scroll=ywrap"

    Альтернативой module_uvesafb_args  может быть создание конфига в /etc/modprobe.d/  c такими же параметрами:

    options uvesafb mode_option=1920x1080-24 mtrr=2 scroll=ywrap

    Здесь важно задать параметры, подходящие под вашу текущую конфигурацию системы:

    • mode_option — разрешение и глубина цвета (также можно указать частоту обновления в виде 1920×1080-24@60 , но лучше оставить автоматическое значение)
    • mtrr — доступный режим MTRR. Узнать, какие режимы доступны можно в файле /proc/mtrr. Таблица соответствия выглядит так:
      0 - Disabled (equivalent to nomtrr) (default)1 - Uncacheable2 - Write-back3 - Write-combining4 - Write-through
    • scroll — режим прокрутки. Типичное значение — ywrap. Посмотреть подробнее можно в документации.

    Можно собирать ядро и устанавливать его. Если у вас используется отдельный раздел под /boot , то нужно сначала смонтировать его: mount /boot. Также, если были убраны какие-то модули, а версия ядра не менялась, не лишним может быть и удаление установленных в данный момент модулей из /lib64/modules/. Сделать это можно, например, так:

    rm -rf /lib64/modules/`uname -r`

    В /usr/src/linux выполняем:

    make -j4 && make modules_install && make install

    Теперь подправим конфиг GRUB2 (для GRUB первой версии настройки будут другими):

    # ...GRUB_GFXMODE=1920x1080# ...GRUB_GFXPAYLOAD_LINUX=keep

    Кстати, здесь мы заодно и в GRUB2 выставили высокое разрешение первым параметром. Остаётся сгенерировать новый конфиг для GRUB2:

    grub2-mkconfig -o /boot/grub/grub.cfg

    Не стоит забывать и о том, что не лишним будет пересобрать драйвера — особенно, если изменилась версия ядра:

    emerge -aq nvidia-drivers

    Отмонтируем /boot  и перезагружаемся, чтобы проверить.

    Gentoo uvesafb

    Удачи!

    Полезная информация:

    https://skobk.in/2015/01/gentoo-nvidia-drivers-uvesafb-framebuffer-without-initrd/