【问题标题】:How to install cross-compiled linux modules to ARM board如何将交叉编译的 linux 模块安装到 ARM 板上
【发布时间】:2016-10-20 10:38:36
【问题描述】:

我知道如何在 x86 主机上为 ARM 板交叉编译 Linux 内核和模块。

但是,我想知道是否可以将 corss 编译的 linux 模块安装到 ARM 板上?

我不想挑选每个模块并将其复制到板上。我想知道是否有一些命令,例如 x86 中的 make modules_install 可以将交叉编译的 linux 模块安装到目标 ARM 板上?

非常感谢!

【问题讨论】:

  • 大部分开发者都是这样做的。您必须为您的 make 命令提供 ARCH 和 CROSS_COMPILE 变量。确保可以通过 PATH 访问工具链。所以,基本上你必须运行,例如,make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules。这部分你知道。但是板上的安装是通过您连接到的 ssh 或 uart 通道完成的。如果你想用 initrd 重启,你可以准备好它并提供给 bootloader。
  • 是哪个 ARM 板?你如何填充图像? buildroot / yocto ?利纳罗?
  • @AndyShevchenko,有没有关于如何通过 ssh 或 uart 通道安装它的指针?我已经配置了两个连接,但是,我不知道如何运行make modules_install 以通过 ssh 或 uart 将所有模块安装到板上...
  • 我没有使用 yocto。我只是用操作系统刷新磁盘,然后将 zImage 复制到 /boot
  • @MikeXu,只需运行从任何一方发起的正常 ssh 传输:mkdir /tmp/modules; make INSTALL_MOD_PATH=/tmp/modules modules_install; scp -R /tmp/modules 192.168.0.10:/。如果您正在运行 ssh 服务器,则类似的事情。否则直接从目标端执行scp

标签: linux linux-device-driver cross-compiling


【解决方案1】:

我知道我迟到了几年,但我只是想知道是否有一个简单的内置解决方案可以解决这个问题,我认为一个解决方案可能仍然很有趣。

我知道有两种可能性:

使用临时文件夹

按照 0andriy 的建议,创建一个临时文件夹,在其中安装模块,然后复制到它的真实目的地。对于复制,我们必须做一个技巧来防止符号链接被复制为完整的文件夹内容:

mkdir /tmp/dist
make modules_install INSTALL_MOD_PATH=/tmp/dist/
cd /tmp/dist
tar cfp - * | ssh root@distant.board '(cd / && tar xfp - )'

注意:如果您没有以 root 身份运行 make modules_install,则必须在复制之前先运行 chown -R root:root /tmp/dist

使用 sshfs

使用sshfs在本地挂载远板。

如果您没有sshfs,请先安装它。如果在 Debian 或衍生版本上:

apt-get install sshfs

然后,将远程板安装到本地文件夹:

mkdir /mnt/dist
sshfs root@distant.board:/ /mnt/dist

你来了。您现在可以访问/mnt/dist 中的远程文件系统。所以要安装模块:

make modules_install INSTALL_MOD_PATH=/mnt/dist/

在您的电路板上完成工作后,卸载文件夹:

umount /mnt/dist

【讨论】:

    猜你喜欢
    • 2022-11-04
    • 2012-12-19
    • 1970-01-01
    • 2016-03-25
    • 2014-10-23
    • 2015-12-16
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    相关资源
    最近更新 更多