10 Wrzesień 2007

NVidia i nowe jaja…

Problem pojawia się ponoć od wersji jajka 2.6.20, na moim *.21 z pewnością zaistniał… W efekcie czekała mnie kilkugodzinna (przedzielona snem, szkoleniem i pracą) próba uruchomienia leciwych sterowników, do jeszcze leciwszej karty NVIDIA GeForce4 MX 400. Nie wiem czy wszystko zakończyło się sukcesem, ale wiem, że póki co okienka się odpaliły… Zagadką jednak będzie restart komputera i ponowne odpalenie iXów. Jeśli wszystko się powiedzie, znaczy się – że pokonałem zabezpieczenia GPL w jaju i posiadam nowiuteńkie sterowniki do karty pod Lennym…

Na tej stronie jest przepyszny sposób na rozwiązanie problemu z prawidłową instalacją oryginalnych sterowników ze strony NVidii. Całość sprowadza się do rozpakowania zawartości pliku .run, doklejeniu dwóch linijek kodu w jednym pliku i uruchomieniu instalatora.
Czy zadziała?
Mi po przeprowadzeniu tej modyfikacji zadziałało lepiej niż te gotowe paczki dostępne na owej stronie.

Ale to nie był koniec moich zmagań z iXami. Zachowałem stary plik konfiguracyjny do Xorga, a wersję miałem nowszą (nie wiem czy są aż tak istotne zmiany, ale faktem jest iż… Xorg nie startował).

W logach odnalazłem, że niemożliwe stawało się załadowanie modułu nvidii kernela. Dziwne, gdyż na samym początku ładował kartę jak i glx. Pytanie zatem – o co kurwa biega?
Wykonanie polecenia:

modprobe -ls nvidia

pokazywało jak w mordę strzelił załadowaną nvidię.
Walczyłem dość długo, aż w końcu w akcie desperacji przekonfigurowałem (przed chwilą) Xorga:
(ważna komenda więc warto sobie gdzieś ją zapisać)

dpkg-reconfigure xserver-xorg

odpaliłem ponownie GDM i… to samo…

Nosz kurwa mać… Wkurwiony już nie na żarty walnąłem z palca:

modprobe -i nvidia

i ponownie

/etc/init.d/gdm start

w efekcie…
Przywitało mnie mignięcie loga NVidii, i ekran logowania.
- O kurwa – pomyślałem – ciekawe czy po restarcie też będzie tak cudnie…

Jakie wyciągnąłem wnioski?

Googlując w poszukiwaniu rozwiązania tego problemu mogę powiedzieć jedynie, że… wiele osób miało podobny (a nawet identyczny problem), wydawałoby się zatem, że istnieje jakieś jedno i skuteczne dla wszystkich rozwiązanie. Otóż nie… Dziwne było też to, iż w pewnym momencie zmuszony zostałem do tworzenia pliku, którego nie posiadałem, a który wchodził w skład pakietu linux-modules-restriction (czy jakoś podobnie), co ciekawe dzisiaj rano odkryłem, że pakiet ów jest w reprezytoriach… Ubuntu. Stworzyłem zatem plik /sbin/lrm-video z zawartością:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/bin/sh
 
PATH=/sbin:/bin
 
MODULE="$1"
shift
 
if [ "$MODULE" = "nvidia" ]; then
        if [ -e /lib/linux-restricted-modules/.nvidia_legacy_installed ]; then
                MODULE="nvidia_legacy"
        fi
        if [ -e /lib/linux-restricted-modules/.nvidia_new_installed ]; then
                MODULE="nvidia_new"
        fi
        XORG="nvidia";
elif [ "$MODULE" = "nvidia_legacy" -o "$MODULE" = "nvidia_new" ]; then
        XORG="nvidia";
elif [ "$MODULE" = "fglrx" ]; then
        XORG="fglrx";
fi
 
if cat /etc/X11/xorg.conf 2>/dev/null | 
  sed -n -e '/^[ t]*section[ \t]*"device"/I,/^[ t]*endsection/I{/^[ t]*driver[ t]*/I{s/^[ t]*driver[ t]*"*//I;s/"*[ t]*$//
;p}}' | 
  grep -q -w $XORG; then
        modprobe --ignore-install -Qb $@ $MODULE
else
        echo "Not loading $MODULE module; not used in /etc/X11/xorg.conf" 1>&2
fi

(Zawartość pliku oczywiście uzyskałem przez Google)

Aktualnie zastanawiam się nad całkowitym usunięciem wzmianki o tym cudzie w katalogu

/etc/modprobe.d

Póki co przymierzam się do restartu (a nad

/etc/modprobe.d/lrm-video

jeszcze pomyślę…)

P.S.
Usunąłem zatem plik

/etc/modprobe.d/lrm-video

Zrestartowałem komputer i… przywitał mnie ekran logowania GDM. Domyślam się skąd u diabła wzięło mi się to cudo. Poszukując wczoraj rozwiązania, skusiłem się na Envy, że niby i z Debianem działa. Gówno prawda, a przynajmniej nie z moim… Miał oczyścić mój system z wcześniejszych instalacji NVidii, a podociągał kilka pakietów mesy, a kiedy chciałem przez niego zainstalować sterowniki poinformował mnie o jakiś błędach, wiec wyjebałem go w kosmos, ale widocznie drań pozostawił po sobie jakieś Ubuntowskie naleciałości…

Czas na podsumowanie:

Posiadając kartę NVidii i jajko w wersji >=2.6.20 należy zastosować się do podanych zaleceń na stronie, które ująłem w kilku punktach:

  • pobrać sterowniki dla swojej karty ze strony producenta
  • rozpakować je przy użyciu komendy
    NVIDIA*.run -x
  • wyedytować plik usr/src/nv/Makefile.kbuild (wewnątrz rozpakowanego katalogu) wstawiając za tym:
    EXTRA_CFLAGS += -Wall -Wimplicit -Wreturn-type...

    poniższe dwie linijki

    PARAVIRT_OPS := $(shell grep "D paravirt_ops" /boot/System.map-$(shell uname -r) | colrm 9)
    EXTRA_LDFLAGS := --defsym paravirt_ops=0x$(PARAVIRT_OPS)
  • uruchomić instalatora NVidii (oczywiście wcześniej wychodząc z iXów)
    ./nvidia-installer

    wewnątrz rozpakowanego pliku .run(!)

  • wykonać
    dpkg-reconfigure xserver-xorg

    i z listy sterowników karty graficznej wybieramy nvidia.

  • załadować moduł nvidii (a jednak trzeba było z palucha!)
    modprobe -i nvidia
  • uruchomić iXy i cieszyć oko grafiką wypaśną w akcelerację 3D

No to czas na Compiz-Fusion…

P.S. 2
Przypomniałem sobie, że przed wykonaniem

modprobe -i nvidia

warto utworzyć dowiązania symboliczne (jeżeli ich nie ma):

ln -s /usr/X11R6/lib/modules/drivers/nvidia_drv.so /usr/lib/xorg/modules/drivers
     ln -s /usr/X11R6/lib/modules/extensions/libglx.so.1.0.9639 /usr/lib/xorg/modules/extensions</code>
     ln -s /usr/X11R6/lib/modules/extensions/libglx.so.1.0.9639 /usr/lib/xorg/modules/extensions/libglx.so

i to tyle w tym temacie…