[PC周辺] Linux 2.6.23 git 20071017版 + ipw3945-source 1.2.2-1 (20071017)

という組合せで,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 して完了.

追記 (20071112)

でも同様なのであるが,なぜか 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

全インデックス