Uvesafb

Материал из Ай да Linux Wiki
Перейти к навигации Перейти к поиску
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Uvesafb является новым framebuffer-драйвером для консоли, добавлен в ядро начиная с версии 2.6.24. Поддерживает больше функций, чем стандартный vesafb и является более предпочтительным в использовании (особенно касается систем с nvidia-видеокартами с проприетарным видеодрайвером). Требования к поддержке оборудования такие же, как и для vesafb.

Демон виртуализации

Особенностью этого драйвера является то, что для него требуется демон визуализации в userspace, называемый v86d. Возможно, кто-то подсчитает глупым решением то, что в x86-системе эмулируется x86-код, однако не стоит забывать о других платформах (в частности, не-x86 платформы), где может использоваться uvesafb. Пакет v86d включает в себя initcpio HOOK, называемый v86d, который по необходимости будет загружать модуль и запускать демон виртуализации.

Дальнейшие инструкции предназначены для ArchLinux.

v86d

Установите v86d с помощью pacman

pacman -S v86d

Следует обратить внимание на то, что v86d нуждается в перекомпилировании klibc.

Настройка uvesafb

  1. Удалите любые параметры ядра, относящиеся к настройке фреймбуфера: vga=xxx принудительно загружает старый vesafb; video=xxx не используется uvesafb в случае, если последний скомпилирован как модуль (как в стандартном ядре Arch Linux).
  2. Отключите KMS, иначе во время загрузке вы увидите черный экран. Если это произошло, перезагрузите машину с помощью комбинации Ctrl+Alt+Del. Для карт Intel укажите в конфиг-файле Grub`a параметр i915.modeset=0

Параметры uvesafb

Все параметры модуля Вы сможете найти в /etc/modprobe.d/uvesafb.conf (или в общем конфиге /etc/modprobe.d/modprobe.conf). Исходный файл пакета v86d содержит информацию о синтаксисе конфиг-файла и ссылку на дополнительную информацию:

 # В этом файле задаются параметры uvesafb.
 # Используется следующий формат: 
 # options uvesafb mode=<xres>x<yres>[-<bpp>][@<refresh>] scroll=<ywrap|ypan|redraw>
 #
 #For more details see: 
 #http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/fb/uvesafb.txt 
  
 options uvesafb mode=1280x800-32 scroll=ywrap

C 2.6.27 и выше строчка options должна выглядеть так:

options uvesafb mode_option=1280x800-32 scroll=ywrap

Для получения списков поддерживаемых режимов экрана наберите

 cat /sys/bus/platform/drivers/uvesafb/uvesafb.0/vbe_modes

Настройка обработчиков (HOOKS)

Добавьте v86d в строку HOOKS содержащую обработчики используемые при создании initramfs образа. Строка имеет следующий формат:

Файл: /etc/mkinitcpio.conf
HOOKS="base udev v86d ..."

Если вы хотите перегенерировать initramfs образ, используйте команду:

mkinitcpio -p linux

или

mkinitcpio -p kernel26

Возможные проблемы

Uvesafb cannot reserve memory

Скорее всего Вы забыли удалить "vga=xxx", из-за чего происходит конфликт между uvesafb и vesafb

pci_root PNP0A08:00 address space collision + Uvesafb cannot reserve memory

Даже без другого фреймбуфера, uvesafb не может зарезервировать необходимую область памяти. Вы можете исправить эту проблему, добавив следующие параметры ядра в конфигурацию вашего загрузчика.

pci=nocrs