Cross compiling currently broken?
It would appear that there is something broken with the current Makefile when crosscompiling - I need a bit of help figuring out a proper solution.
In this case it's barely cross compiling, I just want to use a kernel I compiled somewhere, but isn't installed (I'm also in a chroot). According to the docs (http://linuxwireless.org/en/users/Download) I should do something like:
make KLIB=/home/mcgrof/kernels/linux-2.6.27.22 \
KLIB_BUILD=/home/mcgrof/kernels/linux-2.6.27.22
However, the makefile then installs the files in completely the wrong location, eg the following puts the files in /usr/src/linux/lib/modules/2.6.30.5-grsec-wrap/ !!
make KLIB=/usr/src/linux \
KLIB_BUILD=/usr/src/linux install-modules
So KLIB should apparently be something like /lib/modules/xyz. However, this is still wrong because the line below puts the files in: /lib/modules/2.6.30.5-grsec-wrap/lib/modules/2.6.30.5-grsec-wrap/
make KLIB=/lib/modules/2.6.30.5-grsec-wrap/ \
KLIB_BUILD=/usr/src/linux install-modules
Adding unsetting KMODPATH_ARG seems to do the trick (but seems unintended?):
make KLIB=/lib/modules/2.6.30.5-grsec-wrap/ \
KLIB_BUILD=/usr/src/linux KMODPATH_ARG= install-modules
But I still get repeated errors while building (where this is the currently running kernel, but the modules dir is unavailable in this chroot):
FATAL: Could not load/lib/modules/2.6.29.6-grsec2.1.14-vs2.3.0.36.14/modules.dep: No such file or directory
FATAL: Could not load/lib/modules/2.6.29.6-grsec2.1.14-vs2.3.0.36.14/modules.dep: No such file or directory
This appears to be caused by these lines at the top of the makefile:
MADWIFI=$(shell $(MODPROBE) -l ath_pci)
OLD_IWL=$(shell $(MODPROBE) -l iwl4965)
Clearly these need some parametrisation to include the running kernel name. Something like this might pluck out the correct uname:
KERNELRELEASE = $(cat $(KLIB_BUILD)/include/config/kernel.release 2> /dev/null)
I'm not quite clear what all the KLIB/KLIB_BUILD vars are supposed to be achieving, but at present they aren't working correctly when overridden to build a non installed kernel. I'm surprised more people aren't hitting this?
Grateful if someone with a bit more experience could suggest a proper fix?
Thanks
Ed W
Quoted 1 line · Ed W
/lib/modules/xyz.
I use /lib/modules/xyz/build just fine.
mcgrof@tux ~/devel/compat-wireless-2.6 (git::master)$ ./scripts/driver-select ath9k
Processing new driver-select request...
Backing up makefile: Makefile.bk
Backing up makefile: drivers/net/wireless/Makefile.bk Backing up makefile: drivers/net/wireless/ath/Makefile.bk Backing up makefile: net/wireless/Makefile.bk Backing up makefile: drivers/ssb/Makefile.bk Backing up makefile: drivers/net/usb/Makefile.bk Backing up makefile: drivers/misc/eeprom/Makefile.bk
mcgrof@tux ~/devel/compat-wireless-2.6 (git::master)$ make KLIB=/lib/modules/2.6.27-02062726-generic/build/ KLIB_BUILD=/lib/modules/2.6.27-02062726-generic/build/ ./scripts/gen-compat-autoconf.sh config.mk > include/linux/compat_autoconf.h make -C /lib/modules/2.6.27-02062726-generic/build/ M=/home/mcgrof/devel/compat-wireless-2.6 modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.27-02062726-generic'
LD /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/built-in.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/main.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/regd.o LD [M] /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath.o LD /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/built-in.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/hw.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/eeprom.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/eeprom_def.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/eeprom_4k.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/eeprom_9287.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/mac.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/calib.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/ani.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/phy.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/beacon.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/main.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/recv.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/xmit.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/virtual.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/rc.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/pci.o LD [M] /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/ath9k.o LD /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/built-in.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/main.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/sta_info.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/wep.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/wpa.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/scan.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/ht.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/agg-tx.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/agg-rx.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/ibss.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/mlme.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/iface.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/rate.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/michael.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/tkip.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/aes_ccm.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/aes_cmac.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/cfg.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/rx.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/spectmgmt.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/tx.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/key.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/util.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/wme.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/event.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/led.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/debugfs.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/debugfs_sta.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/debugfs_netdev.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/debugfs_key.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/mesh.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/mesh_pathtbl.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/mesh_plink.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/mesh_hwmp.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/pm.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/rc80211_pid_algo.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/rc80211_pid_debugfs.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/rc80211_minstrel.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/rc80211_minstrel_debugfs.o LD [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/mac80211.o LD /home/mcgrof/devel/compat-wireless-2.6/net/rfkill/built-in.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/rfkill/core.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/rfkill/input.o LD [M] /home/mcgrof/devel/compat-wireless-2.6/net/rfkill/rfkill_backport.o LD /home/mcgrof/devel/compat-wireless-2.6/net/wireless/built-in.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/wireless/core.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/wireless/sysfs.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/wireless/radiotap.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/wireless/util.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/wireless/reg.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/wireless/scan.o
/home/mcgrof/devel/compat-wireless-2.6/net/wireless/scan.c: In function ‘cfg80211_bss_update’:/home/mcgrof/devel/compat-wireless-2.6/net/wireless/scan.c:422:
warning: unused variable ‘used’
CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/wireless/nl80211.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/wireless/mlme.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/wireless/ibss.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/wireless/sme.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/wireless/chan.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/wireless/wext-compat.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/wireless/wext-sme.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/wireless/compat-2.6.28.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/wireless/compat-2.6.29.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/wireless/compat-2.6.30.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/wireless/compat-2.6.31.o CC [M] /home/mcgrof/devel/compat-wireless-2.6/net/wireless/compat-2.6.32.o LD [M] /home/mcgrof/devel/compat-wireless-2.6/net/wireless/cfg80211.o LD /home/mcgrof/devel/compat-wireless-2.6/built-in.o Building modules, stage 2. MODPOST 5 modules CC /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath.mod.o LD [M] /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath.ko CC /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/ath9k.mod.o LD [M] /home/mcgrof/devel/compat-wireless-2.6/drivers/net/wireless/ath/ath9k/ath9k.ko CC /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/mac80211.mod.o LD [M] /home/mcgrof/devel/compat-wireless-2.6/net/mac80211/mac80211.ko CC /home/mcgrof/devel/compat-wireless-2.6/net/rfkill/rfkill_backport.mod.o LD [M] /home/mcgrof/devel/compat-wireless-2.6/net/rfkill/rfkill_backport.ko CC /home/mcgrof/devel/compat-wireless-2.6/net/wireless/cfg80211.mod.o LD [M] /home/mcgrof/devel/compat-wireless-2.6/net/wireless/cfg80211.ko
make[1]: Leaving directory `/usr/src/linux-headers-2.6.27-02062726-generic'
Luis
Luis
Hi
Quoted 2 lines
I use
/lib/modules/xyz/buildjust fine.
Can you adapt your environment to be a little closer to mine?
For example if you don't have /lib/modules/'uname -r` available do you get the nasty errors that I see?
Quoted 4 lines
mcgrof@tux ~/devel/compat-wireless-2.6 (git::master)$ make KLIB=/lib/modules/2.6.27-02062726-generic/build/ KLIB_BUILD=/lib/modules/2.6.27-02062726-generic/build/
Is the above all on one line? Assuming so then can you please try this:
Quoted 4 lines
mcgrof@tux ~/devel/compat-wireless-2.6 (git::master)$ make KLIB=/lib/modules/2.6.27-02062726-generic/build/ KLIB_BUILD=/lib/modules/2.6.27-02062726-generic/build/ install-modules
I would expect your modules to end up in
/lib/modules/2.6.27-02062726-generic/build/lib/modules/2.6.27-02062726-generic/build/
(If you read the above you can presumably see what has happened)
Is this the case for you?
Your make output varies from mine (compat-wireless-2009-8-24), one of us obviously has somewhat newer build file - perhaps the make file just changed?
Thanks for your comments
Ed W
Quoted 60 lines · Ed W
It would appear that there is something broken with the current
Makefilewhen crosscompiling - I need a bit of help figuring out a proper solution.In this case it's barely cross compiling, I just want to use a kernel I compiled somewhere, but isn't installed (I'm also in a chroot). According to the docs (http://linuxwireless.org/en/users/Download) I should do something like:
make KLIB=/home/mcgrof/kernels/linux-2.6.27.22 \ KLIB_BUILD=/home/mcgrof/kernels/linux-2.6.27.22However, the makefile then installs the files in completely the wrong location, eg the following puts the files in
/usr/src/linux/lib/modules/2.6.30.5-grsec-wrap/!!make KLIB=/usr/src/linux \ KLIB_BUILD=/usr/src/linux install-modulesSo KLIB should apparently be something like
/lib/modules/xyz. However, this is still wrong because the line below puts the files in:/lib/modules/2.6.30.5-grsec-wrap/lib/modules/2.6.30.5-grsec-wrap/make KLIB=/lib/modules/2.6.30.5-grsec-wrap/ \ KLIB_BUILD=/usr/src/linux install-modulesAdding unsetting
KMODPATH_ARGseems to do the trick (but seems unintended?):make KLIB=/lib/modules/2.6.30.5-grsec-wrap/ \ KLIB_BUILD=/usr/src/linux KMODPATH_ARG= install-modulesBut I still get repeated errors while building (where this is the currently running kernel, but the modules dir is unavailable in this chroot):
FATAL: Could not load
/lib/modules/2.6.29.6-grsec2.1.14-vs2.3.0.36.14/modules.dep: No such file or directory
FATAL: Could not load/lib/modules/2.6.29.6-grsec2.1.14-vs2.3.0.36.14/modules.dep: No such file or directoryThis appears to be caused by these lines at the top of the makefile:
MADWIFI=$(shell $(MODPROBE) -lath_pci)
OLD_IWL=$(shell $(MODPROBE) -l iwl4965)Clearly these need some parametrisation to include the running kernel name. Something like this might pluck out the correct uname:
KERNELRELEASE = $(cat $(KLIB_BUILD)/include/config/kernel.release 2>/dev/null)I'm not quite clear what all the KLIB/KLIB_BUILD vars are supposed to be achieving, but at present they aren't working correctly when overridden to build a non installed kernel. I'm surprised more people aren't hitting this?
Quoted 6 lines
Grateful if someone with a bit more experience could suggest a proper fix?
Thanks
Ed W
Try the patch I posted a few weeks ago. It solved this issue for us.
-Philip