我可以在不构建 Ubunto 内核的情况下为 Ubuntu 构建内核驱动程序吗?

Posted

技术标签:

【中文标题】我可以在不构建 Ubunto 内核的情况下为 Ubuntu 构建内核驱动程序吗?【英文标题】:Could I Build a kernel driver for Ubuntu without building Ubunto kernel? 【发布时间】:2022-01-22 06:01:56 【问题描述】:

我有一块 Zynq Ultrascale 板,我想使用 Aarch64 处理器的 DMA 接口,该处理器将 Linux 作为操作系统运行。 为此,我应该将 .ko 驱动程序文件放在内核中并将其加载到 Linux 内核中。

目前,我使用 Petalinux 并通过它构建驱动程序 .ko 文件,Petalinux 将此 .ko 文件放在 rootfs 和 Petalinux 内核中。

现在,我想从 Petalinux 迁移到 Ubuntu 并在 Zynq 板上使用 Ubuntu,所以我想知道我是否可以独立于 ubuntu 内核构建一个 DMA 驱动程序,然后将其添加到其内核中?

以前,Petalinux 在构建整个 linux 内核的同时构建了我的驱动程序。但我只想构建驱动程序并使用现有内核(不构建 ubuntu 内核)

如果可以并且我可以单独构建驱动程序,我该如何为 Ubunto 构建驱动程序?

【问题讨论】:

应该根据那些配置和头文件构建 Linux 内核驱动程序,而内核本身是根据这些文件构建的。 “我如何将我的 c++ 代码构建为 Ubunto 的驱动程序?” - 你不能。 Linux 内核是由 C 代码构建的,它不支持 C++。 @Tsyvarev 对不起。我的意思是 c,不是 c++。 您仍然需要 Ubuntu 内核配置和源代码。此外,您需要对模块签名做一些事情,因为 Ubuntu 模块已签名。 【参考方案1】:

幸运的是,我把 Petalinux 构建的驱动复制到了 Ubuntu 上,可以正常使用。

这意味着我可以在不编译 Ubuntu 内核的情况下使用 Petalinux 构建驱动程序,我将驱动程序的 .c 文件作为一个模块添加到 Petalinux,然后完全构建 Petalinux,然后从 Petalinux 中的 /lib/modules/5.10.0-xilinx-v2021.2/extra/ 路径中选择驱动程序的 .ko 文件,然后将其复制到 Ubuntu 中的某个位置并调用 insmod 命令。

我知道这个解决方案不尊重人,但它对我有用,并将我从沼泽中拉了出来。

【讨论】:

以上是关于我可以在不构建 Ubunto 内核的情况下为 Ubuntu 构建内核驱动程序吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不涉及 Android 客户端应用程序的开发人员的情况下为某些网站构建公共/私有 API [关闭]

是否可以在不着色图标的情况下为 TabBar 着色?

有啥方法可以在不使用 IDFA 的情况下为设备生成唯一 ID? [复制]

如何在不放弃主线程的情况下为 Python 使用 CoreBluetooth

是否可以在不循环的情况下为 iSeries 表中的每一行生成唯一的数值?

如何在不影响实时功能的情况下为 React 和 React-native 托管通用的 Firebase 后端代码?