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:
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
Dodajemy „
blacklist uvesafb
” na koniec/etc/modprobe.d/blacklist.conf
Dodajemy
„uvesafb”
na koniec/etc/modules
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.