|
Dwie osobne wersje jądra i dwa sterowniki xorg
pavbaranov - 13-03-2010 20:17
Normalnie jest tak:lmogę mieć kilka wersji jądra w systemiel
l podczas inicjowania Xorgów, system czyta sobie m.in. xorg.conf.l
lnawet ten obecnie okrojony, czy nawet jeśli go usunę, xorg usiłuje znaleźć jakieś rozwiązanie dla mojej karty; jeśli w xorg.conf jest cokolwiek wpisane, niekiedy przeczyta i uruchomi ten sterownik, który tam jest zadeklarowanyl
loczywiście w systemie mogę mieć zainstalowanych więcej niż jeden sterownik do mojej karty (w moim przypadku: fglrx, ati, radeon, radeonhd, ostatecznie vesa).l
Zatem pytanie:lczy istnieje możliwość, by np. system uruchamiany na jądrze 2.6.31 uruchamiał się ze sterownikiem fglrx, zaś w przypadku uruchomienia z jądrem 2.6.32/33 uruchamiał się z ati/radeon/radeonhd?l
Problem jest prozaiczny: obecne sterowniki własnościowe pochodzące od ATI nie uruchamiają się z Xorgiem 1.7 i na jądrze 2.6.32/33. Dostarczane przez Ubuntu rozwiązanie ,,restricted'' również nie potrafi sobie poradzić z tymi paczkami. Stąd też, jeśli uruchomi się "standardowo" komputer na jądrze 2.6.32/33 z ustawieniami dla sterowników własnościowych, to działa wadliwie (no bo ich nie ma). Nie podpowiadajcie, bym ustawił sterowniki opensource dla 2.6.31. O tym wiem, wówczas nie mam problemów z 2.6.32/33, bowiem tam one działają. Problem jednakże, że nie działają one jeszcze najlepiej (nie dają wsparcia 3D, nie dają przeźroczystości, nie umożliwiają uruchomienia efektów kompozycji dla Kwina w KDE4 itd.). Jest zatem możliwa jakaś automatyzacja?
darkwater - 13-03-2010 20:56
radeonhd, xorg 1.7, radeon hd 4670 i "sidowy" kernel 2.6.32 amd64 - działają bez problemów, efekty w kwin/kde4 również działają, tak samo jak pozostała akceleracja 3d, z wyjątkiem wine. Wydajność, około 1/3 tego co osiąga fglrx (wg glxgears).
Wpisy w xorg.conf, sekcja Device:
Driver "radeonhd" Option "AccelMethod" "exa" Option "DRI" "on"
panjandrum - 13-03-2010 21:12
Na pewno da się to rozwiązać za pomocą skryptu, który przed uruchomieniem serwera X sprawdzałby jaka wersja jądra jest uruchomiona i odpowiednio ustawiał xorg.conf
pavbaranov - 13-03-2010 21:13
To, że radeon/hd działa na kernelach wyższych niż 2.6.31 to wiem. Mi chodzi o to, by używać właśnie jego w przypadku, gdy odpalę system na tym kernelu, ale jeśli odpalę na 2.6.31 (lub niższym), to chciałbym mieć fglrx, bo po prostu jest lepszy. Normalnie, przy ustawieniu w xorg.confie fglrx, w przypadku odpalenia z kernela wyższego niż 2.6.31 uruchamia się "coś", co trudno uznać za kartę graficzną. Wyświetlać wyświetla i tyle. Użytkowanie jest żadne. Jak do tej pory niestety nie uruchomię fglrx ani ze sterowników udostępnianych przez Cannonicala, ani ze sterowników udostępnianych przez ATI (wersja 10.2 Catalysta), albowiem nie dają się one skonfigurować. Nawet przy użyciu znanych z netu sztuczek. W sumie problemu nie ma - mogę odinstalować 2.6.32/33. Instalując go miałem nadzieję jednak na lepsze wsparcie innych urządzeń.
darkwater - 13-03-2010 21:20
OIDP fglrx podczas instalacji trochę miesza w /lib lub /usr/lib z dowiązaniami do bibliotek, libGL i kilku innych, tak więc skrypt musiałby przy starcie sprawdzać wersję kernela, a następnie odpowiednio "pomieszać" ww. linkami, na końcu zaś podmienić /etc/X11/xorg.conf. W zasadzie wykonalne, ale mnie by się nie chciało dla tych kilku/nastu FPS więcej. Zresztą, podobno AMD ma w końcu zauważyć nowy xorg w nadchodzącym wydaniu, więc może warto poczekać te parę dni?
pavbaranov - 13-03-2010 21:31
Jasne. Nowy sterownik winien się pojawić z końcem przyszłego tygodnia, choć... Z ATI nigdy nic nie wiadomo. Raczej chciałem wiedzieć, czy i jak w ogóle takie zadanie jest możliwe, zwłaszcza, że są np. notebooki które mają 2 karty graficzne (spotkałem się z GeForce+zintegrowany Intel; pierwsza daje dużą wydajność, ale zżera akumulator mlaszcząc przebrzydle, drugi daje długą pracę na bateriach, ale znacznie gorzej z jakością). Osobiście mogę poczekać na nowe fglrx, bowiem wolnościowe sterowniki, jak do tej pory nie zadowalają mnie. Przynajmniej ja na nich nie jestem w stanie uzyskać takich efektów, jakbym chciał.
tremor - 13-03-2010 22:33
Jak zauważyli poprzednicy można napisać skrypt uruchamiany przy starcie systemu. Przygotować dwie wersje xorg.conf, np. /etc/X11/xorg.conf31 /etc/X11/xorg.conf32 i na podstawie komendy WERSJA=uname -r
zrobić case "$WERSJA" in 2.6.31) CONF=/etc/X11/xorg.conf31;; 2.6.32) CONF=/etc/X11/xorg.conf32;; *) echo "Nieznana wersja jadra: $WERSJA" exit 1;; esac
a następnie podlikować właściwy plik konfiguracyjny: ln -s $CONF /etc/X11/xorg.conf
No i skrypt prawie jest. Zapisać, przetestować, wrzucić do /etc/init.d i dać jako startowy np. za pomocą komendy udpate-rc.d
.
pavbaranov - 14-03-2010 08:09
Dzięki, biorę się za testy.
panjandrum - 14-03-2010 10:16
Prawdopodobnie można też go umieścić w globalnym xinitrc lub xserverrc
Katiusha - 14-03-2010 14:05
Jak to właściwie jest z tymi jądrami i sterownikiem GPU? Mam w Debianie zainstalowanych kilka wersji jądra - 2.6.26-2-686, 2.6.30-bpo.2-686, 2.6.30-bpo.1-686 i skompilowany przeze mnie 2.6.30.
Przeważnie uruchamiam Debiana na jądrze tym "moim" 2.6.30 i na nim też instalowałam sobie sterownik do karty graficznej (nVidia 190.53 - zamknięte).
I teraz jakbym chciała odpalić sobie system na powiedzmy, jądrze 2.6.30-bpo.2-686, to muszę znowu dla niego instalować sterownik GPU, czy wystarczy tylko raz zainstalować do obojętnie jakiego jądra aby działał na wszystkich?
Druga sprawa, po wydaniu poprawki z http://security.debian.org/ do np. 2.6.30-bpo.2-686 i zainstalowaniu jej podczas uaktualniania systemu przez aptitude, jądro jest przeinstalowywane, czy muszę znowu instalować od nowa sterownik karty graficznej? I jeśli tak, to w jaki sposób, (cały czas ta sama wersja sterownika) odinstalować sterownik i ponownie zainstalować, czy zrobić nakładkę tzn. nie odinstalowywać "starego" i zainstalować ponownie od nowa?
Trochę można się w tym wszystkim pogubić... ;)
darkwater - 14-03-2010 15:28
Nie potrzebna jest reinstalacja całego sterownika, wystarczy ponowna kompilacja modułu jądra. Szczegóły prawdopodobnie w dokumentacji sterownika. Pardon że tak lakonicznie ale aktualnie nie mam GPU Nvidia pod ręką.
Katiusha - 14-03-2010 15:35
Nie potrzebna jest reinstalacja całego sterownika, wystarczy ponowna kompilacja modułu jądra.
Nie za bardzo rozumiem, kompilacja jakiego modułu?
darkwater - 14-03-2010 15:44
Części sterownika, która musi być kompilowana "pod" konkretny kernel. Moduł to takie coś co w linuksach ładujemy poleceniem modprobe.
http://pl.wikipedia.org/wiki/Jądro_monolityczne
button - 14-03-2010 16:01
@Katiusha chyba troszke OT, ale:
to jest to czego szukasz:
-K, --kernel-module-only Install a kernel module only, and do not uninstall the existing driver. This is intended to be used to install kernel modules for additional kernels (in cases where you might boot between several different kernels). To use this option, you must already have a driver installed, and the version of the installed driver must match the version of this kernel module.
Tak jak jest napisane, sterownik musi być wcześniej zainstalowany, i musi to być zawsze ta sama wersja.
Katiusha - 14-03-2010 22:50
Czyli jeśli dobrze rozumiem to wystarczy włączyć odpowiedni moduł w jądrze przez modconf lub modprobe lub dopisać
/etc/modules
nazwę modułu nVidii (który to?) aby nie kompilować od nowa jądra lub instalować ponownie sterowników jeśli chce odpalić system na innym jądrze tzn. na tym na którym nie instalowałam sterownika GPU?
darkwater - 14-03-2010 22:58
Rozumiesz według mnie źle. Do każdej wersji jądra potrzebujesz modułu kompilowanego pod tą właśnie wersję jądra. Być może da się skompilować sobie kilka różnych modułów, pod różne wersje jądra, i ładować je w zależności od tego jakie jądro jest właśnie uruchomione.
Sam jednak nie bawiłem się w nic takiego, tak więc nie pomogę ci w szczegółach. Być może wersje z repozytorium własnościowego sterownika NVIDII współpracują z DKMS, automatyzowałoby to cały proces, kosztem wydłużenia czasu uruchamiania systemu.
button - 14-03-2010 23:05
Dla każdego jądra musisz mieć skompilowany inny moduł jądra. Po to właśnie instalator wymaga linux-headers. Opcja którą Ci podałem umożliwia skompilowanie tego modułu bez usuwania wcześniejszej zainstalowanego sterownika, co pozwala później ładować różne jądra bez konieczności reinstalacji sterownika. Ale dla każdego nowego jądra trzeba wywołać instalator (w dokładnie tej samej wersji, w jakiej jest już zainstalowany wcześniej sterownik) z przełącznikiem -K.
Katiusha - 14-03-2010 23:35
Dobra teraz rozumiem, czyli dla każdego zainstalowanego jądra oprócz tego na którym instalowałam sterownik odpalam skrypt sterownika z przełącznikiem -K:
# sh ./NVIDIA-Linux-x86-190.53-pkg1.run -K
i skrypt włącza odpowiednie dla jądra moduły, tak? I po aktualizacji jądra przez http://security.debian.org/ to samo?
button - 14-03-2010 23:59
Dobra teraz rozumiem, czyli dla każdego zainstalowanego jądra oprócz tego na którym instalowałam sterownik odpalam skrypt sterownika z przełącznikiem -K:
# sh ./NVIDIA-Linux-x86-190.53-pkg1.run -K
Dokładnie.
i skrypt włącza odpowiednie dla jądra moduły, tak?
Żeby być już ścisłym. Instalator po prostu zbuduje odpowiedni dla jadra moduł.
I po aktualizacji jądra przez http://security.debian.org/ to samo?
Jeżeli aktualizacja dotyczy jednej wersji, to tak jak zwykle, nic nie trzeba ruszać. Dopiero, kiedy zmienia się wersja, trzeba zbudować nowy moduł.
Dodam jeszcze od siebie, że taki sposób instalacji jest dość uciążliwy na dłuższą metę, jeżeli często się zmienia sterownik w systemie. Zmiana sterownika wymaga później ręcznego czyszczenia, bo instalator przy deinstalacji sterownika usunie tylko moduł jądra, które aktualnie jest załadowane.
Katiusha - 15-03-2010 00:10
Zmiana sterownika wymaga później ręcznego czyszczenia, bo instalator przy deinstalacji sterownika usunie tylko moduł jądra, które aktualnie jest załadowane.
Hmm, skoro już to poruszyłeś, to co i gdzie należy wyczyścić przed instalacją powiedzmy nowszej wersji sterownika karty graficznej? Pokasować jakieś katalogi czy pliki czy też trzeba edytować wpisy w jakiś plikach systemowych? Ręcznie - czyli nie ma żadnego programu czy skryptu który "wie" co automatycznie wyczyścić?
button - 15-03-2010 00:44
Moduły leżą w /lib/modules/wersja_jadra/kernel/drivers/video/nvidia
Katiusha - 15-03-2010 14:48
Moduły leżą w
/lib/modules/wersja_jadra/kernel/drivers/video/nvidia
Czyli przy czyszczeniu po starych sterownikach kasować wszystkie pliki z katalogu */nvidia?
button - 15-03-2010 16:24
Przepraszam, troszkę nieprecyzyjnie napisałem. Sterownik to:
/lib/modules/wersja_jadra/kernel/drivers/video/nvidia.ko
Zawartości folderu:
/lib/modules/wersja_jadra/kernel/drivers/video/nvidia
raczej nie trzeba ruszać.
Katiusha - 15-03-2010 21:40
Dziękuję za wyjaśnienie wszystkiego. :)
zanotowane.pldoc.pisz.plpdf.pisz.plminister.pev.pl
|