OSBoy notes.

Записки обо всём...

Настройка фреймбуфера в Debian 9 Stretch

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

По сути, данная статья является вольным переводом этой англоязычной статьи.

Устанавливаем необходимые пакеты:

# apt update
# apt install v86d hwinfo -y

Выполняем команду:

# hwinfo --framebuffer

В результате мы должны получить информацию о видеокарте со списком всех возможных видеорежимов. В моём случае вывод такой:

# hwinfo --framebuffer
02: None 00.0: 11001 VESA Framebuffer
  [Created at bios.459]
  Unique ID: rdCR.VICk_A_ErH4
  Hardware Class: framebuffer
  Model: "Oracle VM VirtualBox VBE Adapter"
  Vendor: "Oracle Corporation"
  Device: "Oracle VM VirtualBox VBE Adapter"
  SubVendor: "VirtualBox VESA BIOS"
  SubDevice:
  Revision: "Oracle VM VirtualBox Version 5.2.20"
  Memory Size: 64 MB
  Memory Range: 0xe0000000-0xe3ffffff (rw)
  Mode 0x0300: 640x400 (+640), 8 bits
  Mode 0x0301: 640x480 (+640), 8 bits
  Mode 0x0302: 800x600 (+100), 4 bits
  Mode 0x0303: 800x600 (+800), 8 bits
  Mode 0x0304: 1024x768 (+128), 4 bits
  Mode 0x0305: 1024x768 (+1024), 8 bits
  Mode 0x0306: 1280x1024 (+160), 4 bits
  Mode 0x0307: 1280x1024 (+1280), 8 bits
  Mode 0x030d: 320x200 (+640), 15 bits
  Mode 0x030e: 320x200 (+640), 16 bits
  Mode 0x030f: 320x200 (+960), 24 bits
  Mode 0x0310: 640x480 (+1280), 15 bits
  Mode 0x0311: 640x480 (+1280), 16 bits
  Mode 0x0312: 640x480 (+1920), 24 bits
  Mode 0x0313: 800x600 (+1600), 15 bits
  Mode 0x0314: 800x600 (+1600), 16 bits
  Mode 0x0315: 800x600 (+2400), 24 bits
  Mode 0x0316: 1024x768 (+2048), 15 bits
  Mode 0x0317: 1024x768 (+2048), 16 bits
  Mode 0x0318: 1024x768 (+3072), 24 bits
  Mode 0x0319: 1280x1024 (+2560), 15 bits
  Mode 0x031a: 1280x1024 (+2560), 16 bits
  Mode 0x031b: 1280x1024 (+3840), 24 bits
  Mode 0x0340: 320x200 (+1280), 24 bits
  Mode 0x0341: 640x400 (+2560), 24 bits
  Mode 0x0342: 640x480 (+2560), 24 bits
  Mode 0x0343: 800x600 (+3200), 24 bits
  Mode 0x0344: 1024x768 (+4096), 24 bits
  Mode 0x0345: 1280x1024 (+5120), 24 bits
  Mode 0x0346: 320x200 (+320), 8 bits
  Mode 0x0347: 1600x1200 (+6400), 24 bits
  Mode 0x0348: 1152x864 (+1152), 8 bits
  Mode 0x0349: 1152x864 (+2304), 15 bits
  Mode 0x034a: 1152x864 (+2304), 16 bits
  Mode 0x034b: 1152x864 (+3456), 24 bits
  Mode 0x034c: 1152x864 (+4608), 24 bits
  Config Status: cfg=new, avail=yes, need=no, active=unknown

В данном случае, я буду использовать разрешение 1024x768, с глубиной цвета 24бита.

Создаём файл /etc/initramfs-tools/conf.d/splash и добавляем в него строку:

FRAMEBUFFER=y

Затем открываем файл /etc/initramfs-tools/modules и добавляем в него строку, с нужным резрешением и глубиной цвета:

uvesafb mode_option=1024x768-24 mtrr=3 scroll=ywrap

Теперь редактируем конфигурационный файл GRUB. Для GRUB2 это - /etc/default/grub . Приводим его к следующему виду:

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
#GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX="video=uvesafb:mode_option=1024x768-24,mtrr=3,scroll=ywrap"
GRUB_BACKGROUND="/usr/share/images/grub/Debian.jpg"

GRUB_GFXMODE=1024x768x24
GRUB_GFXPAYLOAD_LINUX=keep

Здесь:
GRUB_CMDLINE_LINUX_DEFAULT - опции ядра для обычного режима (по умолчанию тут было задано quiet (тихая загрузка) - для вывода подробного лога загрузки я эту строку закомментировал;
GRUB_CMDLINE_LINUX - опции ядра для обычного режима и режима восстановления, тут указываем видеорежим такой же, как и для initramfs;
GRUB_GFXMODE - разрешение для экрана загрузчика GRUB;
GRUB_GFXPAYLOAD_LINUX - это разрешение, которое будет применяться при передаче управления Linux. Здесь можно использовать значение keep, чтобы использовалось то же разрешение, что указано для GRUB_GFXMODE, либо можно задать нужное разрешение.
GRUB_BACKGROUND - путь до изображения, которое будет использоваться как фоновое (splash) на экране загрузчика (подробнее о выборе изображения - см. ниже).

Следует обратить внимание, что синтаксис тут немного отличается: в параметрах GRUB_GFXMODE и GRUB_GFXPAYLOAD_LINUX - для разделения разрешения и глубины цвета используется символ x (икс), в то время, как в параметре GRUB_CMDLINE_LINUX, так же, как и в файле initramfs - для разделения используется символ - (тире).

Теперь нужно применить настройки для initramfs и GRUB:

# update-initramfs -k all -u
# update-grub2

На этом настройка практически завершена. Единственное, если мы выставим достаточно высокое разрешение в консоли, то шрифты могут отображаться слишком мелко. Поэтому можно переконфигурировать консоль и выбрать шрифт покрупнее:

# dpkg-reconfigure console-setup

Выбор фонового изображения для GRUB2

GRUB2 может использовать в качестве фоновых - PNG, JPG / JPEG и TGA изображения. Изображение должно соответствовать следующим требованиям:

  • Изображения JPG / JPEG должны быть 8-битными (256 цветов). Иначе мы получим ошибки, типа «Too many Huffman tables». Поэтому, предпочтительнее использовать изображения PNG (если мы не хотим ограничиваться 256 чветами).
  • Изображения должня быть в цветовом режиме RGB.

Изображения моэно проверить на соответствие стандартам GRUB2 в GIMP редакторе: открываем меню изображение > режим и проверяем, что выбран режим "RGB" и НЕ установлена опция "индексированное".

Так же, можно установить пакет grub2-splashimages, содержащий несколько тестовых изображений в TGA формате, которые устанавливаются в директорию: /usr/share/images/grub .

 

Полезные ссылки:
BITS AND NIBBLES - Debian 9.1 (Stretch) With Proprietary Nvidia-Driver And Uvesafb
Ubundu documentation - Grub2/Displays
Википедия - Linux Framebuffer

Теги : linux, debian, framebuffer, grub2, splash

Комментариев: 0

Добавить комментарий

Отменить