という組合せで,ipw3945.ko が compile できないという問題.つまり,
% sudo module-assistant build ipw3945-source
で,.deb ができないという問題.で,調べてみた.まず,普通は,
/usr/src/linux/include/asm -> asm-i386/
といった感じになっていて,最新の kernel で作った linux-headers deb package も同様の symlink を張るのであるが,これがまちがい. 最新の kernel では
/usr/src/linux/include/asm -> asm-x86/
としなければならないらしい(手動で ln -s しなおす).次に,
の余波により ipw3945.c の compile がとおらない.前者に関しては,
MAC_ARG(addr)
とかの箇所を,まずどこかで,
DECLARE_MAC_BUF(mac);
してから,
print_mac(mac, addr)
する,みたいな修正が必要ならしい.ipw3945.c では MAC_ARG が 52 箇所で 使われていて面倒なので,ipw3945.c の適当なところで MAC_ARG を define することにする.
次に後者に関してであるが,SET_MODULE_OWNER の箇所をそのまま削除してや ればいいらしい.
ということで,以下のような感じに.
diff -uw ipw3945.c.orig ipw3945.c
--- ipw3945.c.orig 2007-10-17 15:43:17.000000000 +0900
+++ ipw3945.c 2007-10-17 15:42:45.000000000 +0900
@@ -108,6 +108,8 @@
#define DRV_COPYRIGHT "Copyright(c) 2003-2006 Intel Corporation"
#define DRV_VERSION IPW3945_VERSION
+#define MAC_ARG(x) ((u8*)(x))[0],((u8*)(x))[1],((u8*)(x))[2],((u8*)(x))[3],((u8*)(x))[4],((u8*)(x))[5]
+
MODULE_DESCRIPTION(DRV_DESCRIPTION);
MODULE_VERSION(DRV_VERSION);
MODULE_AUTHOR(DRV_COPYRIGHT);
@@ -16591,7 +16593,6 @@
goto out_release_ucode;
}
- SET_MODULE_OWNER(net_dev);
SET_NETDEV_DEV(net_dev, &pdev->dev);
mutex_lock(&priv->mutex);
priv->ieee->hard_start_xmit = ipw_net_hard_start_xmit;
/usr/src/ipw3945.tar.bz2 内の該当 file を修正して,あとは,
% sudo module-assistant build ipw3945-source
して dpkg -i して完了.
でも同様なのであるが,なぜか linux-headers に
が含まれていない(arch/x86/Makefile は有る)ので,
% rsync -avz /usr/src/linux-2.6/arch/x86/Makefile* \ /usr/src/linux-headers-2.6.24-rc2-20071112-hoge-01/arch/x86/
とかで適当に調達しなければいけない (上を書いたときもそのようにしていたような気がする).
Last-modified: Tue Aug 26 23:13:09 +0900 2008