Поиск по блогу :

6 Февраль 2008 г.

Настройка framebuffer в Ubuntu

Для чего я себе ставил framebuffer? Объясню он мне нужен для консоли (та которая открывается по Ctrl+Alt+F(1-6)), во-первых для того чтобы поменять там разрешение на 1280х1024 (по умолчанию там 640х480), а во-вторых для просмотра фильмов именно в консоли (многие назовут это извращением, но до сих пор есть такие люди которые умудряются работать только в консоли и им этого хватает с головой) и т.п.

В версии Ubuntu 7.10 настройка отличается от предыдущих версий. Чем же?
А вот чем...

В предыдущих версиях - framebuffer был включен по умолчанию и нам оставалось лишь добавить параметр vga=xxx в строку загрузки kernel в файле /boot/grub/menu.lst . Где xxx=цифра - специальное сочетание разрешения экрана и глубины цвета, посмотреть расшифровку можно в wikipedia.

В версии 7.10 - framebuffer выключен по умолчанию. Так что прийдется немного повозиться, чтобы включить его.

1. Открываем файл /etc/modprobe.d/blacklist-framebuffer:

#
nano /etc/modprobe.d/blacklist-framebuffer

теперь закомментируем строку:
#blacklist vesafb
и сохраняем файл.
2. Открываем файл /etc/initramfs-tools/modules:
#
nano /etc/initramfs-tools/modules

добавляем строчки:
fbcon
vesafb
и сохраняем файл.
3. Пересобираем initramfs image
#
update-initramfs -u

4. Открываем файл /boot/grub/menu.lst
#
nano /boot/grub/menu.lst

В опции ядра добавляем нужные параметры. Находим строку начинающуюся примерно на kernel /boot/vmlinuz-2.6.22-14-386 root=... . Дописываем туда параметр vga=0x31b (здесь я использовал параметр для экрана 1280х1024) Если у вас другое разрешение используйте значения из таблицы приведенной ниже:

640x480800x6001024x7681280x1024
2560x3010x3030x3050x307
32 тыс0x3100x3130x3160x319
64 тыс0x3110x3140x3170x31A
16 млн0x3120x3150x3180x31B

Если вашего разрешения нет в таблице (например, у вас широкоформатный монитор), то воспользуйтесь следующим способом:
5. Устанавливаем программу hwinfo
#
apt-get install hwinfo

6. Запускаем ее с ключем --framebuffer
#
hwinfo --framebuffer

в появившемся списке выберите нужный Mode для вашего разрешения и добавьте его в vga= , как описано выше, в четвертом пункте.

Теперь перегружаемся, переходим в консоль и лицезреем красоту.

15 коммент.:

Dr.AKULAvich комментирует...

Спасибо за how-to. До этого как-то обходился без framebuffer. Набрел на заметку, ковырнул как сказано :)
Все лучше, чем прежде.

Alex комментирует...

Давно ищу режим для 1680 x 1050. Страдаю не сильно, но все же... Вы случаем не в курсе, как его высчитать?

Leolik комментирует...

2 Alex:
В данном случае, если хочешь в консоли 1680x1050, тебе необходимо использовать uvesafb. Собственно вся инструкция по установке там же, внизу страницы. Когда дойдешь до пункта 8, просто добавь в /boot/grub/menu.lst , в строку загрузки, вместо vga=... , строку:
video=uvesafb:1680x1050-16,mtrr:3,ywrap
если разрешение не поменялось, проверь в конфиге ядра есть ли строка: CONFIG_FB_UVESA=y
посмотреть можно так:
cd /usr/src/linux && cat .config | grep -i '^CONFIG_FB_'

Natan комментирует...

Leolik а ты не знаешь как framebuffer настроить на карте ATI с разрешением 1440x900 описанный метод не подошел.

Leolik комментирует...

2 Natan:
В принципе должен подойти метод, что я выше для Alex'a написал, так как у тя широкоформатник.
А вообще, для ATI, подходит все тоже, что я в статье описал, только в пунктах 1 и 2, вместо vesafb, используем radeonfb.

Satellite13 комментирует...

Ставишь hwinfo запускаешь его с ключиком --framebuffer, ищешь нужную моду и прописываешь в vga параметр

Victor комментирует...

ЭЛТ-монитор. Насколько понимаю, частота обновления в framebuffer имеет то же значение, что и в графическом режиме (с учётом режима). Каково её значение в обычном текстовом режиме (не framebuffer)?

Leolik комментирует...

2 Sattellite13:
Да действительно, отличный способ, только тебе надо было уточнить, что надо от рута запускать, иначе бы ничего не показало )) Добавлю к статье. Спасибо.
2 Victor:
ЭЛТ-монитор в обычном текстовом режиме = 60Hz.

Victor комментирует...

ЭЛТ-монитор.
В своё время А. Федорчук писал: "Начал я, естественно, с редакторов консольных. Почему? - спросите вы меня. Ведь все прогрессивное человечество уже пол-десятилетия работает в графических средах.
На этот вопрос не трудно ответить любому обладателю близорукости пяти и более диоптрий, проводящему за редактированием текстов пять и более часов. Потому что, не смотря на все безусловные достоинства графического режима, режим текстовый (даже при далеко не идеальном мониторе) обеспечивает существенно меньшую нагрузку на зрение."
Субъективно я это чувствую, но чем это объясняется? Контрастной схемой (светлые буквы на чёрном фоне)? Но это легко установить и в графическом режиме. Частотой обновления? Но, как здесь было сказано, это 60 Гц, - в графическом легко установить 85 Гц. Каким-то особым способом вывода информации на экран в текстовом режиме? Сохраняется ли в этом случае способ вывода и для framebuffer. Вопрос представляется важным при выборе режима для многочасовой работы, так как касается зрения.

Leolik комментирует...

2 Victor:
Лично я считаю, причина в 2 вещах - это контрастная схема (сам использую именно такой вариант оформления) и маленькое разрешение (когда символы большие и вам не надо вглядываться в экран). Но вы не учитываете того, сколько людей попортили себе зрение именно на мониторах с маленькой частотой, которая в сумме со схемой черное на светлом фоне - очень портит глаза. Думая вам для многочасовой работы вполне подойдет контрасная схема + увеличение размера шрифта в системе и в редакторах.

roman комментирует...

Привет! У меня ноут с матрицей 1280х800, все сделал по инструкции но программа hwinfo выдает максимальное разрешение 1024х768, может это из за встроенного видео intel? Подскажите плиз.

mihalych-by комментирует...

Попробовал на Ubuntu 8.04
Результат превзошёл все ожидания :)
С uvesafb возиться было лень, посему выбрал предложенный hwinfoй vga=0x348 (1400x1050-16), предположил что на моём LCD широкоформатнике 1680х1050 будет смотреться прилично.
Получил в консоли родное разрешение!

Spellman комментирует...

hwinfo --frambuffer выдает максимум 1024х768. Как узнать режим для 1280х800 ?

wikide комментирует...

Спасибо большое! Все заработало :)

Linderox комментирует...

на форумах для 800x1200 говорят подходит режим 0x360 или 0x361
цитирую:"vga=865 appended to the kernel line gives a 1280x800 framebuffer
865 = 0x361"

Отправить комментарий