Forumet - Problem med att kompilera mot en ny kärna

Problem med att kompilera mot en ny kärna

217 0 4
Jag har kompilerat en ny kärna. 2.6.29-rc3 för att vara exakt.
Eftersom att jag ogärna utför kompilationen på en laptop så skapar jag debian-paket av kärnan. Med kommandona:

#make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers

Kompilationen går fint och kärnan och headers installeras fint på den bärbara med:
#dpkg -i linux-image-2.6.21.3-custom_2.6.21.3-custom-10.00.Custom_i386.deb

#dpkg -i linux-headers-2.6.21.3-custom_2.6.21.3-custom-10.00.Custom_i386.deb

Om jag sedan vill kompilera moduler mot den här kärnan så behöver jag om jag uppfattat det rätt samma källkod som jag använde vid kompileringen.
Den har jag kopierat över till /usr/src på den bärbara innan jag installerade kärnan och headers.

Problemet är att module-assistant inte vill kompilera utan avbryter innan slutet. module-assistant skapar en fel-logg.


dh_testdir
dh_testroot
dh_clean
/usr/bin/make -C /usr/src/modules/rt2860 clean \
KERNELPATH=/usr/src/linux-headers-2.6.29-rc3-custom-2.0 KERNELRELEASE=2.6.29-rc3-custom-2.0 KERNELCONF=/usr/src/linux-headers-2.6.29-rc3-custom-2.0/.config
make[1]: Entering directory `/usr/src/modules/rt2860'
cp -f os/linux/Makefile.6 os/linux/Makefile
make -C os/linux clean
make[2]: Entering directory `/usr/src/modules/rt2860/os/linux'
rm -f ../../common/*.o
rm -f ../../common/.*.{cmd,flags,d}
rm -f ../../os/linux/*.{o,ko,mod.{o,c}}
rm -f ../../os/linux/.*.{cmd,flags,d}
rm -fr ../../os/linux/.tmp_versions
rm -f ../../sta/*.o
rm -f ../../sta/.*.{cmd,flags,d}
make[2]: Leaving directory `/usr/src/modules/rt2860/os/linux'
rm -rf os/linux/Makefile
make[1]: Leaving directory `/usr/src/modules/rt2860'
/usr/bin/make -f debian/rules kdist_clean kdist_config binary-modules
make[1]: Entering directory `/usr/src/modules/rt2860'
dh_testdir
dh_testroot
dh_clean
/usr/bin/make -C /usr/src/modules/rt2860 clean \
KERNELPATH=/usr/src/linux-headers-2.6.29-rc3-custom-2.0 KERNELRELEASE=2.6.29-rc3-custom-2.0 KERNELCONF=/usr/src/linux-headers-2.6.29-rc3-custom-2.0/.config
make[2]: Entering directory `/usr/src/modules/rt2860'
cp -f os/linux/Makefile.6 os/linux/Makefile
make -C os/linux clean
make[3]: Entering directory `/usr/src/modules/rt2860/os/linux'
rm -f ../../common/*.o
rm -f ../../common/.*.{cmd,flags,d}
rm -f ../../os/linux/*.{o,ko,mod.{o,c}}
rm -f ../../os/linux/.*.{cmd,flags,d}
rm -fr ../../os/linux/.tmp_versions
rm -f ../../sta/*.o
rm -f ../../sta/.*.{cmd,flags,d}
make[3]: Leaving directory `/usr/src/modules/rt2860/os/linux'
rm -rf os/linux/Makefile
make[2]: Leaving directory `/usr/src/modules/rt2860'
for templ in ; do \
cp $templ `echo $templ | sed -e 's/_KVERS_/2.6.29-rc3-custom-2.0/g'` ; \
done
for templ in `ls debian/*.modules.in` ; do \
test -e ${templ%.modules.in}.backup || cp ${templ%.modules.in} ${templ%.modules.in}.backup 2>/dev/null || true; \
sed -e 's/##KVERS##/2.6.29-rc3-custom-2.0/g ;s/#KVERS#/2.6.29-rc3-custom-2.0/g ; s/_KVERS_/2.6.29-rc3-custom-2.0/g ; s/##KDREV##/2.6.29-rc3-custom-2.0-10.00.Custom/g ; s/#KDREV#/2.6.29-rc3-custom-2.0-10.00.Custom/g ; s/_KDREV_/2.6.29-rc3-custom-2.0-10.00.Custom/g ' < $templ > ${templ%.modules.in}; \
done
dh_testdir
dh_testroot
dh_clean -k
# Build modules
/usr/bin/make -C /usr/src/modules/rt2860 \
KERNELPATH=/usr/src/linux-headers-2.6.29-rc3-custom-2.0 KERNELRELEASE=2.6.29-rc3-custom-2.0 KERNELCONF=/usr/src/linux-headers-2.6.29-rc3-custom-2.0/.config
make[2]: Entering directory `/usr/src/modules/rt2860'
make -C tools
make[3]: Entering directory `/usr/src/modules/rt2860/tools'
gcc -g bin2h.c -o bin2h
make[3]: Leaving directory `/usr/src/modules/rt2860/tools'
/usr/src/modules/rt2860/tools/bin2h
cp -f os/linux/Makefile.6 /usr/src/modules/rt2860/os/linux/Makefile
make -C /usr/src/linux-headers-2.6.29-rc3-custom-2.0 SUBDIRS=/usr/src/modules/rt2860/os/linux modules
make[3]: Entering directory `/usr/src/linux-headers-2.6.29-rc3-custom-2.0'
CC [M] /usr/src/modules/rt2860/os/linux/../../common/md5.o
CC [M] /usr/src/modules/rt2860/os/linux/../../common/mlme.o
CC [M] /usr/src/modules/rt2860/os/linux/../../common/rtmp_wep.o
CC [M] /usr/src/modules/rt2860/os/linux/../../common/action.o
CC [M] /usr/src/modules/rt2860/os/linux/../../common/cmm_data.o
/usr/src/modules/rt2860/os/linux/../../common/cmm_data.c: In function ‘RTMP_FillTxBlkInfo’:
/usr/src/modules/rt2860/os/linux/../../common/cmm_data.c:947: warning: label ‘FillTxBlkErr’ defined but not used
CC [M] /usr/src/modules/rt2860/os/linux/../../common/rtmp_init.o
CC [M] /usr/src/modules/rt2860/os/linux/../../common/rtmp_tkip.o
CC [M] /usr/src/modules/rt2860/os/linux/../../common/cmm_sync.o
CC [M] /usr/src/modules/rt2860/os/linux/../../common/eeprom.o
CC [M] /usr/src/modules/rt2860/os/linux/../../common/cmm_sanity.o
CC [M] /usr/src/modules/rt2860/os/linux/../../common/cmm_info.o
CC [M] /usr/src/modules/rt2860/os/linux/../../common/cmm_wpa.o
CC [M] /usr/src/modules/rt2860/os/linux/../../common/dfs.o
CC [M] /usr/src/modules/rt2860/os/linux/../../common/spectrum.o
CC [M] /usr/src/modules/rt2860/os/linux/../../sta/assoc.o
CC [M] /usr/src/modules/rt2860/os/linux/../../sta/aironet.o
CC [M] /usr/src/modules/rt2860/os/linux/../../sta/auth.o
CC [M] /usr/src/modules/rt2860/os/linux/../../sta/auth_rsp.o
CC [M] /usr/src/modules/rt2860/os/linux/../../sta/sync.o
/usr/src/modules/rt2860/os/linux/../../sta/sync.c: In function ‘PeerBeacon’:
/usr/src/modules/rt2860/os/linux/../../sta/sync.c:1303: warning: unused variable ‘ByteValue’
CC [M] /usr/src/modules/rt2860/os/linux/../../sta/sanity.o
CC [M] /usr/src/modules/rt2860/os/linux/../../sta/rtmp_data.o
CC [M] /usr/src/modules/rt2860/os/linux/../../sta/connect.o
CC [M] /usr/src/modules/rt2860/os/linux/../../sta/wpa.o
CC [M] /usr/src/modules/rt2860/os/linux/../../os/linux/rt_linux.o
CC [M] /usr/src/modules/rt2860/os/linux/../../os/linux/rt_profile.o
/usr/src/modules/rt2860/os/linux/../../os/linux/rt_profile.c: In function ‘RTMPReadParametersHook’:
/usr/src/modules/rt2860/os/linux/../../os/linux/rt_profile.c:928: error: ‘struct task_struct’ has no member named ‘fsuid’
/usr/src/modules/rt2860/os/linux/../../os/linux/rt_profile.c:929: error: ‘struct task_struct’ has no member named ‘fsgid’
/usr/src/modules/rt2860/os/linux/../../os/linux/rt_profile.c:930: error: ‘struct task_struct’ has no member named ‘fsuid’
/usr/src/modules/rt2860/os/linux/../../os/linux/rt_profile.c:930: error: ‘struct task_struct’ has no member named ‘fsgid’
/usr/src/modules/rt2860/os/linux/../../os/linux/rt_profile.c:1554: error: ‘struct task_struct’ has no member named ‘fsuid’
/usr/src/modules/rt2860/os/linux/../../os/linux/rt_profile.c:1555: error: ‘struct task_struct’ has no member named ‘fsgid’
make[4]: *** [/usr/src/modules/rt2860/os/linux/../../os/linux/rt_profile.o] Error 1
make[3]: *** [_module_/usr/src/modules/rt2860/os/linux] Error 2
make[3]: Leaving directory `/usr/src/linux-headers-2.6.29-rc3-custom-2.0'
make[2]: *** [LINUX] Error 2
make[2]: Leaving directory `/usr/src/modules/rt2860'
make[1]: *** [binary-modules] Error 2
make[1]: Leaving directory `/usr/src/modules/rt2860'
make: *** [kdist_build] Error 2

Är det något jag har missat? Behöver jag något ytterligare för att kompilera moduler mot en hembyggd kärna?

För övrigt så kompilerar modulerna perfekt mot min tidigare default-kärna 2.6.26 från debian lenny:s repos.
Den modul du försöker kompilera (rt2860) är inte uppdaterad för den kärna du kompilerar den mot (2.6.29).

I 2.6.29 gjordes en del saker om, bl.a. strukturen "task_struct".

Du behöver antingen hitta en nyare variant av rt2860 (den används för trådlöst nätverk om du inte visste det redan), eller skriva om den så den funkar. Det är inte nödvändigtvis så krångligt som det låter. ;)

Det jag skulle gjort är gå in i filen /usr/src/modules/rt2860/os/linux/rt_profile.c och ändrat alla "->fsuid" till "->cred->fsuid" och alla "->fsgid" till "->cred->fsgid". Det är dock inte säkert att det funkar för det, men värt ett försök.

Det här är typiska problem om du använder icke-stable releaser av linux (2.6.28 är den senaste stabila versionen).

Spana också in: