使用其他模块交叉编译Linux内核

时间:2013-07-20 09:04:44

标签: linux-kernel arm cross-compiling kernel-module

我是交叉编译的新手。我必须交叉编译一个Linux内核,因为我打算在我的TS-7500 SBC(ARM处理器)中使用wifi模块而且它不支持它。我有我的wifi模块的驱动程序和通过互联网冲浪我已经了解了交叉编译的一般过程。但是我对额外的模块部分感到有些困惑。以下是TS-7500官方网站关于这些额外模块的信息:

附录 - 使用自定义选项编译TS内核 为了编译一个单独的内核模块并提供一个.ko文件以包含在现有内核中,这些是在步骤08之后并在上面的步骤09结束的步骤。注意:步骤02之后的步骤未经验证/未经测试。它们代表了一个人们将要经历的准确程序。

01。)打开menuconfig并使用“M”模块化内核功能。对于         例如,要模块化cifs.ko,可以使用箭头和Enter键         导航到文件系统 - >网络文件系统 - > CIFS支持。
        按“M”将CIFS支持模块化到内核中然后继续点击         “退出”,直到系统提示您保存更改,然后选择“是”。

make menuconfig

02。)使用模块编译内核并将模块复制到Linux PC

 make && make modules && make modules_install  

03。)使用类似命令检索复制到Linux PC的模块         cp,以便它可以安装到MiniSD卡的内核中。

mkdir /mnt/miniSD4
mount /dev/sdb4 /mnt/miniSD4
cp /lib/modules/2.6.24.4/kernel/fs/cifs/cifs.ko /mnt/miniSD4

04。)通过从分区4复制和粘贴将模块安装到内核中         在SBC分区2的卡片。

cp -r /dev/nbd4/cifs.ko /dev/nbd2/lib/modules/2.6.24.4/kernel/fs/cifs/cifs.ko

05。)最后,为了使用新模块,您必须启用它。这个可以          包含在启动脚本中,例如linuxrc。

depmod
modprobe cifs.ko

我对连续剧2感到困惑。任何人都可以向我解释这个问题,我应该在哪里提供我想要安装的驱动程序的地址?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我认为通过说你的SBC不支持它,你的意思是你已经交叉编译的模块/驱动程序是'out of source tree'内核模块。< / p>

上述过程仅适用于'in-tree内核模块'

这使您有以下两个选项。

  1. 作为交叉编译驱动程序的结果,您将拥有* .ko文件。使用SD卡或网络将此文件传输到正在运行的系统。在此之后使用

    加载模块
    insmod /path/to/module/filename.ko
    

    这种方法只有一个限制。即如果此驱动程序/模块依赖于其他驱动程序,则必须先加载它们。

  2. 在内核源代码树中包含驱动程序,并使用modprobe drivername将其与依赖项一起加载。 modprobe比insmod更先进,因为它首先检查依赖关系并在加载模块本身之前自动加载它们。

  3. 要在内核的源代码树中包含驱动程序,请参阅此answer