dkms + fglrx + custom kernel telepítés és beállítás

Fórumok

Sziasztok!

A minap forgattam magamnak egy kernel-t Ubuntu 8.04.2-re. (2.6.28.6 vanilla). Minden működik, ahogy szerettem volna, kivéve az ATI Radeon X1400-amat. Ez nem meglepő, zárt forrású driver, dkms-t használ.

Viszont a nagy szívfájdalmam, hogy az apt-vel telepíthető dkms 2.6.24-es kernelre van beállítva, illetve az alábbi csomagokat tartalmazza a függőségi listája:

Depends: awk, bash, gcc, linux-headers-generic | linux-headers, linux-image, module-init-tools

Viszont a saját kernelem miatt ez semmit se ér. Ezen az oldalon http://linux.dell.com/dkms/ megtaláltam a dkms forrását, de nekem a telepítése és beállítása túl nehéz. Nem sikerül. Így az fglrx telepítő hibát dob.

http://pastebin.com/f17645fab

Tudna nekem valaki segíteni abban, hogy a saját kernelemhez hogyan állítom be a dkms-t?

Először is a Dell oldalán szereplő dkms-t szeretném telepíteni. Viszont nem igazán értem, mit jelent a README.dkms megfelelő része:

http://pastebin.com/f4425ad45

A dkms man oldalán a következő paramétereket találtam, amik fontosak lehetnek a későbbiekben:

-k kernel version
--config
--kernelsourcedir

Ez mind adott. Viszont az fglrx telepítőt ennek a használatára hogy veszem rá? Utólag hogyan állítható be mindez?

A dkms.conf-ot jól értem, hogy az fglrx tartalmazza?

Nagyon szépen köszönöm előre is a segítséget vagy ötleteket!

Hozzászólások

Frissítés:

A dkms weboldaláról letöltöttem az ott található deb csomagot. dpkg -i --force depends-el felraktam. Majd az ATI telepítőt futtattam, ami végigment, de megint jelezte a hibát.

Ezután:

root@zolinux:/home/zed# dkms build -m fglrx -v 8.573 -k 2.6.28.6-zed-amilo-rt --config /home/zed/kernel/linux-2.6.28.6_new/.config --kernelsourcedir /home/zed/kernel/linux-2.6.28.6_new/

Preparing kernel 2.6.28.6-zed-amilo-rt for module build:
(This is not compiling a kernel, just preparing kernel symbols)
Storing current .config to be restored when complete
Running Generic preparation routine
make mrproper............
using /home/zed/kernel/linux-2.6.28.6_new/.config
cp: `/home/zed/kernel/linux-2.6.28.6_new/.config' and `.config' are the same file
make oldconfig........
make prepare-all....(bad exit status: 2)

Building module:
cleaning build area....
pushd /var/lib/dkms/fglrx/8.573/build; sh make.sh --nohints; popd....

Error! Build of fglrx.ko failed for: 2.6.28.6-zed-amilo-rt (i686)
Consult the make.log in the build directory
/var/lib/dkms/fglrx/8.573/build/ for more information.

A make.log tartalma pedig hihetetlenül informatív:

root@zolinux:/home/zed# cat /var/lib/dkms/fglrx/8.573/build/make.log
DKMS make.log for fglrx-8.573 for kernel 2.6.28.6-zed-amilo-rt (i686)
Fri Feb 20 16:45:15 GMT 2009
/var/lib/dkms/fglrx/8.573/build
root@zolinux:/home/zed#

Még egy kicsit kutakodtam:

zed@zolinux:/var/lib/dkms/fglrx/8.573/build$ sudo ./make.sh
AMD kernel module generator version 2.1
kernel includes at /lib/modules/2.6.28.6-zed-amilo-rt/build/include not found or incomplete
file: /lib/modules/2.6.28.6-zed-amilo-rt/build/include/linux/version.h
zed@zolinux:/var/lib/dkms/fglrx/8.573/build$ cd /lib/modules/2.6.28.6-zed-amilo-rt/build
zed@zolinux:/lib/modules/2.6.28.6-zed-amilo-rt/build$ ls
arch COPYING crypto drivers fs init Kbuild lib Makefile net README samples security usr
block CREDITS Documentation firmware include ipc kernel MAINTAINERS mm NEWCONFIG REPORTING-BUGS scripts sound virt

Ezt találtam a make.sh-ban: (Nem linkelhetem be az egész szkriptet gondolom, mert AMD copyright van rajta.)

src_file=$linuxincludes/linux/version.h

if [ ! -e $src_file ]; then
echo "kernel includes at $linuxincludes not found or incomplete" | tee -a $logfile
echo "file: $src_file" | tee -a $logfile
exit 1
fi

Arra rájöttem, hogy a /lib/modules/2.6.28.6-zed-amilo-rt/build egy symlink a /home/zed/kernel/linux-2.6.28.6_new-ra, ahová kitömörítettem a kernel-t, amit forgattam. Ha itt nincs version.h, akkor hol van?

Köszönöm.

Én máshogy csinálnám (csinálom) a helyedben...

Ubuntu alatt saját kernelből jobb csomagot készíteni aztán azt feltelepíteni aztán a dkms dolog megy magától.


cd SAJÁT_KERNEL_FORRÁS
make-kpkg --initrd linux-image linux-headers
cd ..
dpkg -i *.deb

és DKMS megcsinálja amit meg kell tennie....
(lehet hogy nem voltam pontos, de neten biztos van bővebb infó...)

Szia!

Köszönöm az ötletet. Mindent úgy csináltam, ahogy Te, (illetve az ötletedből kiindulva a Google) mondta. A kernelt a generált deb-ekből pakoltam föl.

A dkms-nél még mindig ugyanúgy és ugyanott az AMD/ATI-os make.sh meghalt. Az első hiba, amivel küzdöttem:

FATAL: modpost: GPL-incompatible module fglrx.ko uses GPL-only symbol '__rcu_read_lock'

Erre itt találtam megoldást (mellesleg elég ciki ez a hibaüzenet):

http://ubuntuforums.org/archive/index.php/t-756236.html

Viszont a licenszes header megpiszkálása után se sikerült nagyot alkotnom. (A make megint eldobta magát, a hibaüzenetet nem gyűjtöttem be, mert 2 napi szenvedés után már elegem volt.)

A Debian csomagos workaround se működött. Próbálkoztam ezzel is, hátha rosszul forgattam a kernelt:

http://hup.hu/node/22094

Levontam a következtetést (lehet rosszul), hogy az ATI driver-t real-time kernelen sose fogom beindítani (mostanában). (Ha valakinek sikerült, mondjon ellent.)

Sajnos saját magam által forgatott (nem PREEMT) kernellel se jártam sikerrel (legutoljára vagy 50 hibát dobott a make, mintha teljesen rossz lenne a kernel forrása). Visszaálltam a gyári kernelre, ott minden működött, ahogy eddig mindig...

Egyelőre föladom. Sikerült egyáltalán vkinek az fglrx-et 2.6.28-on elindítania?

Ha lesz egy kis időm, összegyűjtöm a legújabb hibaüzeneteket és elküldöm az AMD-nek. Elfelejtettem menteni a hibát. (A firegl_public.c dobálta őket, de köze nem volt a GPL-es ügyhöz.)