Режимы работы фреймбуфера
Введение
При использовании терминальной консоли, а так-же при использования драйвера fbdev в X-сервере, бывает нужно задать разрешение, в котором работает фреймбуфер.
Для этого надо при загрузке передать ядру параметр работы его работы. Обычно для этого в lilo или в grub задаётся параметр VGA из следующеёй таблицы:
Стандартные режимы fbdev
Стандартные режимы fbdev в 16-ном виде
Кол-во цветов | Число бит | 640x480 | 800x600 | 1024x768 | 1280x1024 | 1440x900 | 1600x1200 |
256 | 8 | 0x301 | 0x303 | 0x305 | 0x307 | 0x360 | 0x31c |
32k | 15 | 0x310 | 0x313 | 0x316 | 0x319 | 0x361 | 0x31d |
64k | 16 | 0x311 | 0x314 | 0x317 | 0x31A | 0x362 | 0x31e |
16M | 24 | 0x312 | 0x315 | 0x318 | 0x31B | 0x363 | 0x31f |
или в 10-чном:
Кол-во цветов | Число бит | 640x480 | 800x600 | 1024x768 | 1280x1024 | 1440x900 | 1600x1200 |
256 | 8 | 769 | 771 | 773 | 775 | 864 | 796 |
32k | 15 | 784 | 787 | 790 | 793 | 865 | 797 |
64k | 16 | 785 | 788 | 791 | 794 | 866 | 798 |
16M | 24 | 786 | 789 | 792 | 795 | 867 | 799 |
Задание режима через lilo
Для задания режима в lilo, надо добавить к параметрам передаваемым ядру параметр VGA с заданным значением, например:
image="/boot/vmlinuz"
label="ALTLinux4.1"
initrd="/boot/initrd.img"
root="UUID=28c12a86-fbfc-4d94-8824-284bd3e2fdb5"
vga="0x31b"
Задание режима через grub2
- Первый вариант (уже как правило не работает), как пример добавляем в переменную параметр vga=0x314. Этот параметр не работает напрямую с 64-битным ядром Linux архитектуры x86, так как grub использует 32-битный протокол загрузки.
GRUB_CMDLINE_LINUX_DEFAULT='quiet=1 panic=30 splash vga=0x314'
- Второй вариант - использование переменных [1] gfxmode и gfxpayload
- Параметра 'GRUB_GFXMODE' задаёт значение переменной gfxmode, которая определяет разрешение монитора в графическом терминале grub. Устанавливает разрешение, используемое в графическом терминале grub. Можно использовать только те режимы, которые поддерживает видеокарта через расширения VESA BIOS (VBE), поэтому, например, собственное разрешение ЖК-панели может быть недоступно. По умолчанию - режим 'auto', который пытается выбрать разрешение автоматом.
Возможные значения:
- Напрямую заданные режимы. Разрешения задаются в виде ширина x высота или ширина x высота x глубина разделённые через запятую или точку с запятой. Заданные режимы проверяются слева направо.
- auto1080p - выбор режима Full HD
- auto - автоматический выбор видеорежима.
Параметр GRUB_GFXPAYLOAD_LINUX задаёт значение параметра gfxpayload, которая определяет с какими параметрами будет загружаться ядро Linux, заменяя режим vga. Возможные значения:
- text - ядро загружается в станадартном текстовом режиме (vga=normal).
- keep - ядро загружается в текущем режиме консоли GRUB.
- режимы, задаваемые напрямую, аналогично gfxmode.
Пример задания параметров grub в /etc/sysconfig.grub2
GRUB_TERMINAL_OUTPUT='gfxterm'
GRUB_GFXMODE='1920x1080,auto'
GRUB_GFXPAYLOAD_LINUX='keep'
Поддерживаемые монитором разрешения
- Если задать параметр в настройках lilo строчку vga=ask, то lilo выдаст все параметры, поддерживаемые монитором (для этого надо еще при загрузке выдать команду scan).
- Список всех разрешений поддерживаемых данным монитором можно получить, выполнив следующую команду:
# hwinfo --framebuffer<pref>по какой-то причине эта команда не всегда работает</pref>
- Если команда не найдена, значит, надо установить пакет hwinfo:
# apt-get update; apt-get install hwinfo
- Получение возможных видеорежимов с помощью консольной команды grub videoinfo.
Для того, чтобы попасть в консоль grub, надо нажать кнопку с (латинская), другой вариант - кнопка e и потом нажать F2. После попадания в консоль grub, даём команду videoinfo, которая тестирует и выдаёт возможные режимы работы графической консоли grub (соответственно режимы работы фреймбуфера ядра Linux).
Ссылки
- https://www.opennet.ru/base/X/framebuffer_setup.txt.html
- https://www.gnu.org/software/grub/manual/grub/html_node/index.html