Strona 1 z 2

[+] Kompilacja modułów dla innego kernela

: 02 października 2009, 20:00
autor: ArnVaker
Witam wszystkich użytkowników.

Jak w Debianie skompilować zewnętrzne moduły (np. sterowniki Nvidii, moduły VirtualBoxa) dla kernela innego niż aktualnie uruchomiony? Ktoś z Was robi tak przy zmianie kernela?

: 02 października 2009, 20:58
autor: darkwater
NVIDIA-Linux-x86_64-190.32-pkg2.run -A

Kod: Zaznacz cały

-k, --kernel-name=KERNEL-NAME
      Build and install the NVIDIA kernel module for the
      non-running kernel specified by KERNEL-NAME (KERNEL-NAME
      should be the output of `uname -r` when the target kernel
      is actually running).  This option implies               
      '--no-precompiled-interface'.  If the options            
      '--kernel-install-path' and '--kernel-source-path' are not
      given, then they will be inferred from KERNEL-NAME; eg:   
      '/lib/modules/KERNEL-NAME/kernel/drivers/video/' and      
      '/lib/modules/KERNEL-NAME/build/', respectively.     
Analogicznie zapewne w wypadku VB. Sam nie stosuję w praktyce.

: 02 października 2009, 22:54
autor: ArnVaker

Kod: Zaznacz cały

sh NVIDIA-Linux-wersja_sterowników.run -kwersja_kernela
Działa, choć trochę topornie. Trzeba wyłączyć środowisko graficzne i wiąże się to z usunięciem obecnego modułu. W przypadku VirtualBoxa budowaniem modułów zajmuje się skrypt:

Kod: Zaznacz cały

/etc/init.d/vboxdrv
Generalnie niezupełnie o to mi chodziło. Myśl wziąłem z Gentoo, gdzie do przebudowania zewnętrznych modułów dla innego kernela wystarczy jedno polecenie:

Kod: Zaznacz cały

module-rebuild rebuild
Powyższe przebuduje zewnętrzne moduły w oparciu o źródła na które wskazuje symlink:

Kod: Zaznacz cały

/usr/src/linux
Nie wymaga usunięcia obecnych modułów ani wyłączenia środowiska graficznego. Wiem, że jest to zintegrowane z portage, ale może w Debianie też podobna "sztuczka" jest możliwa?

: 02 października 2009, 23:23
autor: darkwater
Ja moduły VirtualBoxa przebudowuję przy pomocy module-assistant , a on ma taką opcję jak --kernel-dir. Sam, jak już wspominałem, nie praktykuję takiej kompilacji, więc nie wiem jak sprawdzi się to w praktyce.

: 02 października 2009, 23:41
autor: ArnVaker
darkwater pisze:Sam, jak już wspominałem, nie praktykuję takiej kompilacji
W takiej postaci faktycznie nie ma to większego sensu. Co innego, gdyby analogicznie do Gentoo dało się "załatwić" wszystkie moduły jednym poleceniem po instalacji nowego jądra.

: 03 października 2009, 02:12
autor: darkwater
Da się, przynajmniej te do których źródła masz w /usr/src/.

Kod: Zaznacz cały

m-a prepare
m-a update
m-a a-i NAZWY_MODU£ÓW
Inna sprawa, że robię to PO uruchomieniu na nowym kernelu.

: 03 października 2009, 13:55
autor: ArnVaker
Przetestowałem module-assistant i przyznaję, że jestem pozytywnie zaskoczony. Zainstalowałem zamknięte sterowniki Nvidii (185.18.36-2) metodą "z repozytorium" we współpracy z module-assistant. Budowanie modułu dla innego kernela działa wręcz idealnie.

Dla nieuruchomionego kernela 2.6.31-1.slh.7-sidux-amd64:

Kod: Zaznacz cały

m-a -l 2.6.31-1.slh.7-sidux-amd64 prepare
m-a -l 2.6.31-1.slh.7-sidux-amd64 a-i nvidia
Tyle, nie ma potrzeby opuszczania X-ów ani usuwania obecnych modułów. Można uruchomić system na nowym kernelu od razu ze środowiskiem graficznym i zamkniętymi sterownikami.

Wielkie dzięki, głównie o to mi chodziło. Czas jednak na głupie pytanie... ;) Jak zbudować moduły zamkniętej wersji VirtualBoxa (tej od Sun) przy użyciu module-assistant?

: 03 października 2009, 14:15
autor: darkwater
Szczerze mówiąc nie wiem. Dla wersji z repozytorium buduję w następujący sposób

Kod: Zaznacz cały

m-a -t a-i virtualbox-ose-source
Nie przypuszczam aby dla wersji zamkniętej wiele się różniło. Warto pamiętać że w m-a działa autouzupełnianie [tab] nazw możliwych do zainstalowania/kompilacji modułów.

: 03 października 2009, 15:06
autor: ArnVaker
Na moje oko, to auto-uzupełnianie odnosi się zwyczajnie do nazw plików/katalogów w katalogu, w którym się znajdujemy. Za to w trybie interaktywnym jest lista wszystkich obsługiwanych modułów. Niestety nie ma na niej zamkniętej wersji VirtualBoxa, jedynie wersja "ose".

Trudno, głównie chodziło mi o usprawnienie budowania modułów Nvidii przy zmianie kernela i ten efekt został osiągnięty. Odpalenie skryptu:

Kod: Zaznacz cały

/etc/init.d/vboxdrv setup
Po uruchomieniu systemu na nowym jądrze to już żaden problem.

: 03 października 2009, 15:18
autor: darkwater