Hatred's Log Place

DON'T PANIC!

Jan 14, 2010 - 4 minute read - Comments - linux

EeePC: uvesafb + родное разрешение в консоли и X11

Пришло время ядра 2.6.32 (уже 2.6.32.3) в core репозитория ArchLinux, да вот незадача: поломали они графику.

Проявляется так: через некоторое время работы, в иксах начинает дергаться экран, как в дерьмовом фильме, где после крутого взрыва на космическом корабле все мониторы взорвались, а последний, для связи с Землей, перед последним вздохом показывает дерганное изображение оператора с того конца. Еще через некоторое время графика фризится, на некоторых версиях иксовых дров (2.9.1) это финиш, для тех что из git - можно переключиться в консоль и там вырубить иксы, да вот запустить их не получится до полной перезагрузки. Да это не паника - система продолжает работать.

Если задать опцию powersave=0 для модуля i915, проявление вышеописанных багов несколько снижается, но не исчезает. Кроме того, после suspend-to-ram фейл появляется почти сразу.

Подумав, решил на время отказаться от родных драйверов в сторону vesa, мне главное нормальная и стабильная работа (да, Арч, что бы моск не заплыл :))

Собственно, все свелось к следующему

Для начала ставим пакет v86d из extra: pacman -S v86d

После установки редактируем файл /etc/modprobe.d/uvesafb.conf на предмет нужного нам разрешения экрана, ставим сразу (верно для моего EeePC 1000H) 1024x600-32

И загружаем модуль usevafb: modprobe uvesafb

Ииии облом :) получим разрешение 800x600 и растянутое изображение - приятного мало.

Связано с тем, что видеобиос на некоторых чипах не поддерживает переключение в нативное разрешение, глюк, согласно статье в вики: http://wiki.archlinux.org/index.php/Uvesafb#Uvesafb_and_915resolution

Там же находим способ как обходить - использовать хак под названием 915resolution лежит он в AUR, только берите версию 915resolution-static - там содержится патч для поддержки 945GME. Собираем этот пакет и ставим.

Дальше запускаем: sudo 915resolution -l

смотрим какие режимы предоставляет. Я для переопределения под номером 54 (в hex виде) - бывший 1024x768-32.

Если поддержки чипа нет - то будет об этом сказано, в этом случае - гуглите, патчите.

Дальше, нужно соблюдать порядок: * сначал хачим биос:915resolution 54 1024 600 * потом уже загружаем модуль uvesafb:modprobe usevafb (при наличии настройки в /etc/modprobe.d/uvesafb.conf)

В случае ArchLinux данную загрузку можно осуществить через initrd, для этого: 1. редактируем хук: /lib/initcpio/hooks/915resolution на предмет нужного режиме (смотрим выше что написал, про хачим биос) 2. редактируем /etc/mkinitcpio.conf и дабавляем в строку HOOKS следующие хуки: 915resolution и v86d (сначала первые потом второй - порядок важен) 3. запускаем: mkinitcpio -p kernel26

Все, при перезагрузке все станет на свои места, либо вручную вызвать нужные команды. Кстати на официальном сайте uvesafb есть информация (http://dev.gentoo.org/~spock/projects/uvesafb/faq.php) как при работе выключить фреймбуфферную консоль и вернуть текстовую моду: > Can I unload the uvesafb module and switch back to a text mode? > > Yes, provided your Video BIOS supports saving the VBE state. This is supported by the vast majority of the currently available BIOS-es. If yours does not support this feature, you will get an appropriate warning in the kernel log. In order to switch back to a text mode, you will need to detach fbcon: echo 0 > /sys/class/vtconsole/vtcon1/bind (make sure the VT_HW_CONSOLE_BINDING kernel config option is selected, otherwise this will do nothing). After you do that, you should be automatically switched back a text mode console. You will also be able to unload uvesafb and fbcon if they have been built as modules.

Уже мы все такие радостные, да? :) а теперь сделайте suspend-to-ram, ога, у меня не проснулось :) точно проснулось но графика слетела. В попытках исправить (для засыпания использую pm-utils с модулем uswsusp) поместил два скрипта в /etc/pm/sleep.d * скрипт 10_915resolution:```bash#!/bin/bash

case $1 in hibernate|resume) /usr/sbin/915resolution 54 1024 600 ;; esac

  * скрипт **10fbcon**:```bash#!/bin/bash

case $1 in
    hibernate|resume)
    echo 0 > /sys/class/graphics/fbcon/subsystem/fb0/state
    ;;
esac

Первый запустит хак, т.к. после сна/гибернейта он имеет тенденцию сбрасываться, а система находится в тупняке - а чо происходит то! Второй, скорее традиция - когда после сна консоль не просыпалась, исправляло ситуацию.

В общем, пока все, огромная просьба - протестить, отписаться.

Да! после сна, бывает черный экран - переключаемся в консоль и обратно. И для иксов достаточно прописать нужный режим (Modes “1024x600”) и драйвер vesa.

ЗЫ жду когда родные дрова починят, поставил бы Торвальдс Арч, что ли :)