uvesafb w Debianie

Kategoria: FAQ, etykiety: kernel, system

Dodany: 2010-02-05 11:08 (zmodyfikowany: 2010-02-06 19:57)
Przez: Huk

Wyświetleń: 13281

Tekst pisany dla Debian Testing (aktualnie Squeeze) 05-02-2010

uvesafb – to nowa, nowocześniejsza wersja sterownika framebuffera dla Linuksa, o zaletach można przeczytać na stronie domowej, tutaj opiszę sposób instalacji który zastosowałem na własnym komputerze.

Małe „ale” na początek – wg danych które posiadam, uvesafb znajduje się w kernelu od wersji 2.6.24 wzwyż, poniższy sposób był testowany na kernelu 2.6.30 oraz 2.6.26, nie wiem czy na innych będzie działać poprawnie (raczej powinien, ale nigdy nie wiadomo).

Zaczynamy:

Zakładam że czytający korzysta z "sudo" w przeciwnym wypadku, należy zaznaczyć że wszystkie komendy z "sudo" należy wykonywać z konta root'a.

Najpierw pobieramy wrapper v86d wymagany do działania uvesafb:

sudo apt-get install v86d

Następnie sprawdzamy czy v86d jest w initrd:

zcat /boot/initrd.img-2.6.30-2-686 | cpio -t | grep v86d 
(oczywiście wpisujemy numerki dla naszego jajka – w tym wypadku 2.6.30-2-686)

Jeżeli w wyniku otrzymamy „sbin/v86d/” to znaczy że nasze initrd nie wymaga updatowania, w przeciwnym wypadku regenerujemy je komendą:

sudo update-initramfs -u -k 2.6.30-2-686

i znowu sprawdzamy.

Jeżeli v86d jest w initrd to jedyne co pozostaje to dopisanie opcji kernela (a dokładniej:video=uvesafb:mode_option=1024x768-16@60,mtrr:3,scroll=ywrap) w grub, u mnie dla grub-0.97 wygląda to tak:

kernel  /vmlinuz-2.6.30-2-686 root=/dev/sda6 ro video=uvesafb:mode_option=1024x768-16@60,mtrr:3,scroll=ywrap

Dokładne znaczenie opcji można znaleźć na google – jedyne co powinno nas interesować to rozdzielczość – w tym wypadku 1024x768 w 16 bitowej głębi kolorów z odświeżaniem 60 herców, dostępne rozdzielczości można sprawdzić po załadowaniu uvesafb komendą:

cat /sys/bus/platform/drivers/uvesafb/uvesafb.0/vbe_modes

Jeżeli v86d nie ma w initrd (lub jeżeli w ogóle nie korzystamy z initrd) to mamy problem, jednakże spokojnie, jest jeszcze alternatywny sposób włączenia nowego framebuffera, mianowicie:

  1. Tworzymy plik /etc/modprobe.d/uvesafb.conf w którym dopisujemy taką oto linijkę

    options uvesafb mode_option=1024x768-16@60 mtrr=3 scroll=ywrap
    
  2. Dodajemy „blacklist uvesafb” na koniec /etc/modprobe.d/blacklist.conf

  3. Dodajemy „uvesafb” na koniec /etc/modules

  4. Odpalamy sudo update-initramfs -u -k 2.6.30-2-686

I już – bez dopisywania niczego przy botowaniu kernela, framebuffer powinien się włączyć (przy czym, należy zaznaczyć że nieco później niż zwykle (u mnie tak po 10 sekundach od startu systemu bo wtedy kernel ładuje ręcznie zdefiniowane moduły).

W wypadku starszych kerneli może być konieczne zmodyfikowanie powyższych wpisów, a dokładniej zastąpienie „mode_option” słowem „mode” (np. na testowanym kernelu 2.6.26, była taka konieczność), wynika to ze zmiany nazewnictwa parametrów uvesafb pomiędzy wersjami.

Tyle ode mnie – mam nadzieję że komuś się przyda.

OSnews Wykop Blip Flaker Kciuk Śledzik Facebook Identi.ca Twitter del.icio.us Google Bookmarks