1

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

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

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

make menuconfig

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

 make && make modules && make modules_install  

03.) 使用 cp 之类的命令检索复制到 Linux PC 的模块,以便将其安装到 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 感到困惑。谁能向我解释一下,我应该在哪里提供我要安装的驱动程序的地址?

提前致谢。

4

1 回答 1

0

我假设说您的 SBC 不支持它,您的意思是您交叉编译的模块/驱动程序是一个“源代码树外”内核模块。

上述过程仅适用于“in-tree kernel modules”

这使您有以下两个选择。

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

    insmod /path/to/module/filename.ko
    

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

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

要将驱动程序包含在内核的源代码树中,请参阅此答案

于 2013-07-20T19:11:16.060 回答