为 OPENWRT 编译额外的内核模块

举个例子,如果想在路由器上跑 OpenWRT 并未包含的 RTL8188EU 驱动模块该怎么办呢?在这里给出一种快捷但是比较 dirty 的办法(否则应该自己写个 package )。

首先得有编译固件时留下的 kernel 的源码,包括编译过程中生成的一些文件。

下面假定 OpenWRT 的源码目录在 /some/path/openwrt ,内核目录以及 Staging DIR 分别为其下的 build_dir/target-mips_r2_uClibc-x.x.x.x/linux-target_generic/linux-x.x.x和 staging_dir ,Toolchain 编译好后会存放在 Staging DIR 下的 toolchain-mips_r2_gcc-x.x-linaro_uClibc-x.x.x.x 目录里,前缀为 mips-openwrt-linux- 。目标机器指令集为 MIPS32 R2 。

那么,我们可以在内核驱动的目录下写一个脚本来帮助编译:

代码
1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/sh
PREFIX= "/media/study/wrt/openwrt_trunk"
ARCH=mips
KSRC= "$PREFIX/build_dir/target-mips_r2_uClibc-0.9.33.2/linux-ar71xx_generic/linux-3.10.9"
STAGING_DIR= "$PREFIX/staging_dir"
TOOLCHAIN_DIR= "$STAGING_DIR/toolchain-mips_r2_gcc-4.6-linaro_uClibc-0.9.33.2/bin"
CROSS_COMPILE= "mips-openwrt-linux-"
 
export STAGING_DIR=$STAGING_DIR
export PATH=$TOOLCHAIN_DIR:$PATH
make clean
make ARCH=$ARCH CROSS_COMPILE=$CROSS_COMPILE KSRC=$KSRC

一般情况下厂商的 Makefile 都会帮你传递 ARCH 、CROSS_COMPILE和 KSRC 这几个变量,如 rtl8188eu 的驱动(https://github.com/lwfinger/rtl8188eu.git )。有的时候需要阅读 Makefile 并做些修改。

最后把生成的内核模块 scp 到装有对应固件的路由器上的 /lib/modules/<kernel_version>/ 下即可。使用 insmod 手动装入或者在 /etc/modules.d/ 下创建一个配置文件来完成开机自动加载。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值