Uvesafb: различия между версиями

Материал из Ай да Linux Wiki
Перейти к навигации Перейти к поиску
м
 
(не показано 5 промежуточных версий 2 участников)
Строка 1: Строка 1:
Uvesafb является новым framebuffer-драйвером для консоли, добавлен в ядро начиная с версии 2.6.24. Он поддерживает больше функций, чем стандартный vesafb и является более предпочтительным в использовании (особенно это касается систем с nvidia-видеокартами с проприетарным видеодрайвером). Требования к поддержке оборудования такие же, как и для vesafb.  
+
Uvesafb является новым framebuffer-драйвером для консоли, добавлен в ядро начиная с версии 2.6.24. Поддерживает больше функций, чем стандартный vesafb и является более предпочтительным в использовании (особенно касается систем с nvidia-видеокартами с проприетарным видеодрайвером). Требования к поддержке оборудования такие же, как и для vesafb.  
  
 
= Демон виртуализации  =
 
= Демон виртуализации  =
Строка 5: Строка 5:
 
Особенностью этого драйвера является то, что для него требуется демон визуализации в userspace, называемый v86d. Возможно, кто-то подсчитает глупым решением то, что в x86-системе эмулируется x86-код, однако не стоит забывать о других платформах (в частности, не-x86 платформы), где может использоваться uvesafb. Пакет v86d включает в себя initcpio HOOK, называемый v86d, который по необходимости будет загружать модуль и запускать демон виртуализации.  
 
Особенностью этого драйвера является то, что для него требуется демон визуализации в userspace, называемый v86d. Возможно, кто-то подсчитает глупым решением то, что в x86-системе эмулируется x86-код, однако не стоит забывать о других платформах (в частности, не-x86 платформы), где может использоваться uvesafb. Пакет v86d включает в себя initcpio HOOK, называемый v86d, который по необходимости будет загружать модуль и запускать демон виртуализации.  
  
Дальнейшие инструкции предназначены для ArchLinux. Для остальных дистрибутивов инструкции будут дополнены позднее.  
+
Дальнейшие инструкции предназначены для ArchLinux.
  
 
== v86d  ==
 
== v86d  ==
Строка 11: Строка 11:
 
Установите v86d с помощью pacman  
 
Установите v86d с помощью pacman  
  
# pacman -S v86d
+
<source lang="bash">pacman -S v86d</source>
  
 
Следует обратить внимание на то, что v86d нуждается в перекомпилировании klibc.  
 
Следует обратить внимание на то, что v86d нуждается в перекомпилировании klibc.  
  
= Подготовка к установке =
+
= Настройка uvesafb =
  
#Удалите любые параметры ядра, относящиеся к настройке фреймбуфера с конфигурации загрузчика: vga=xxx принудительно загружает старый vesafb; video=xxx не используется uvesafb в случае, если последний скомпилирован как модуль (как в стандартном ядре Arch Linux).
+
#Удалите любые параметры ядра, относящиеся к настройке фреймбуфера: vga=xxx принудительно загружает старый vesafb; video=xxx не используется uvesafb в случае, если последний скомпилирован как модуль (как в стандартном ядре Arch Linux).
 
+
#Отключите KMS, иначе во время загрузке вы увидите черный экран. Если это произошло, перезагрузите машину с помощью комбинации ''Ctrl+Alt+Del''. Для карт Intel укажите в конфиг-файле Grub`a параметр <nowiki>i915.modeset=0</nowiki>
#Отключите KMS, иначе во время загрузке вы увидите черный экран. Если это произошло, перезагрузите машину с помощью комбинации ''Ctrl+Alt+Del''. Для карт Intel укажите в конфиг-файле Grub параметр <nowiki>i915.modeset=0</nowiki>
 
  
 
== Параметры uvesafb  ==
 
== Параметры uvesafb  ==
  
 
Все параметры модуля Вы сможете найти в /etc/modprobe.d/uvesafb.conf (или в общем конфиге /etc/modprobe.d/modprobe.conf). Исходный файл пакета v86d содержит информацию о синтаксисе конфиг-файла и ссылку на дополнительную информацию:  
 
Все параметры модуля Вы сможете найти в /etc/modprobe.d/uvesafb.conf (или в общем конфиге /etc/modprobe.d/modprobe.conf). Исходный файл пакета v86d содержит информацию о синтаксисе конфиг-файла и ссылку на дополнительную информацию:  
 
+
<source lang="bash">
  #This file sets the parameters for uvesafb module.  
+
  # В этом файле задаются параметры uvesafb.
  #The following format should be used:  
+
  # Используется следующий формат:  
  #options uvesafb mode=&lt;xres&gt;x&lt;yres&gt;[-&lt;bpp&gt;][@&lt;refresh&gt;] scroll=&lt;ywrap|ypan|redraw&gt; ...
+
  # options uvesafb mode=&lt;xres&gt;x&lt;yres&gt;[-&lt;bpp&gt;][@&lt;refresh&gt;] scroll=&lt;ywrap|ypan|redraw&gt;
 
  #
 
  #
 
  #For more details see:  
 
  #For more details see:  
 
  #http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/fb/uvesafb.txt  
 
  #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</source>
  options uvesafb mode=1280x800-32 scroll=ywrap
+
 
+
C 2.6.27 и выше строчка options должна выглядеть так:  
C 2.6.27 и выше строчка options должна выглядеть так:  
+
 
+
<source lang="bash">options uvesafb mode_option=1280x800-32 scroll=ywrap</source>
... options uvesafb mode_option=1280x800-32 scroll=ywrap  
 
  
 
Для получения списков поддерживаемых режимов экрана наберите  
 
Для получения списков поддерживаемых режимов экрана наберите  
  
cat /sys/bus/platform/drivers/uvesafb/uvesafb.0/vbe_modes
+
<source lang="bash"> cat /sys/bus/platform/drivers/uvesafb/uvesafb.0/vbe_modes</source>
 +
 
 +
== Настройка обработчиков (HOOKS)  ==
 +
 
 +
Добавьте v86d в строку HOOKS содержащую обработчики используемые при создании initramfs образа. Строка имеет следующий формат:
 +
{{file|/etc/mkinitcpio.conf|<source lang="bash">
 +
HOOKS="base udev v86d ..."</source>}}
  
== Hooks  ==
+
Если вы хотите перегенерировать initramfs образ, используйте команду:
  
Добавьте <nowiki>v86d</nowiki>
+
<source lang="bash">mkinitcpio -p linux</source>
 +
или
 +
<source lang="bash">mkinitcpio -p kernel26</source>
  
 +
=Возможные проблемы=
 +
== Uvesafb cannot reserve memory ==
 +
Скорее всего Вы забыли удалить "vga=xxx", из-за чего происходит конфликт между uvesafb и vesafb
  
 +
== pci_root PNP0A08:00 address space collision + Uvesafb cannot reserve memory ==
 +
Даже без другого фреймбуфера, uvesafb не может зарезервировать необходимую область памяти.
 +
Вы можете исправить эту проблему, добавив следующие параметры ядра в конфигурацию вашего загрузчика.
 +
<source lang="bash">pci=nocrs</source>
  
[[Категория:Man]]
 
  
 +
[[Категория:Руководства]]
 
[[Категория:Графика]]
 
[[Категория:Графика]]

Текущая версия на 02:12, 16 марта 2012

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=&lt;xres&gt;x&lt;yres&gt;[-&lt;bpp&gt;][@&lt;refresh&gt;] scroll=&lt;ywrap|ypan|redraw&gt;
 #
 #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