[+] Kompilacja modu

Ogólne pytania dotyczące systemu
ArnVaker

[+] Kompilacja modułów dla innego kernela

Post 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?
Awatar użytkownika
darkwater
Junior Member
Posty: 828
Rejestracja: 25 stycznia 2007, 14:01
Lokalizacja: Częstochowa

Post 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.
ArnVaker

Post 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?
Awatar użytkownika
darkwater
Junior Member
Posty: 828
Rejestracja: 25 stycznia 2007, 14:01
Lokalizacja: Częstochowa

Post 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.
ArnVaker

Post 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.
Awatar użytkownika
darkwater
Junior Member
Posty: 828
Rejestracja: 25 stycznia 2007, 14:01
Lokalizacja: Częstochowa

Post 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.
ArnVaker

Post 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?
Awatar użytkownika
darkwater
Junior Member
Posty: 828
Rejestracja: 25 stycznia 2007, 14:01
Lokalizacja: Częstochowa

Post 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.
ArnVaker

Post 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.
Awatar użytkownika
darkwater
Junior Member
Posty: 828
Rejestracja: 25 stycznia 2007, 14:01
Lokalizacja: Częstochowa

Post autor: darkwater »

ODPOWIEDZ