DKMS的使用详解 |
您所在的位置:网站首页 › 安卓用的linux内核什么意思呀 › DKMS的使用详解 |
1,linux dkms是什么
DKMS (Dynamic Kernel Module Support) 是一种框架,用于在 Linux 操作系统中构建和维护内核模块。内核模块是 Linux 内核的一部分,它们提供了许多功能,例如硬件驱动程序、网络协议栈扩展、文件系统等等。DKMS 简化了内核模块的安装和升级过程,可以自动地重新编译内核模块以适应新的内核版本。 在 DKMS 中,每个内核模块都被视为一个源代码包,并通过一个称为 dkms.conf 的配置文件进行管理。该配置文件指定了源代码的位置、编译和安装模块所需的命令,以及其他必要的信息。当内核更新时,DKMS 会自动重建和安装内核模块,以确保它们与新内核版本兼容。 DKMS 还允许用户创建和安装第三方内核模块,以扩展 Linux 内核的功能。这些模块可以从官方仓库或其他来源获得。一些常见的第三方内核模块包括虚拟机驱动程序、文件系统、网络协议栈扩展等等。 2, 如何安装和使用DKMS在大多数 Linux 发行版中,DKMS 已经预装了,如果您的系统没有预装 DKMS,可以通过以下命令进行安装: 对于 Debian/Ubuntu 系统: sudo apt-get install dkms对于 Fedora/CentOS/RHEL 系统: sudo yum install epel-release sudo yum install dkms3, 如何使用DKMS dkms add:将内核模块源代码添加到 DKMS 中,使其可以自动构建和安装。 sudo dkms add -m module_name -v module_version 其中,`module_name` 是内核模块的名称,`module_version` 是内核模块的版本号。dkms build:使用 DKMS 构建内核模块。 sudo dkms build -m module_name -v module_version 此命令将会在 DKMS 管理的所有内核版本上构建指定的内核模块。 sudo dkms build -m module_name -v module_version -k kernel_version -k:指定要使用的内核版本。其中,`kernel_version` 是要使用的内核版本号。如果不指定该选项,则默认使用当前正在运行的内核版本。 -m:指定要构建的内核模块名称,其中,module_name 是要构建的内核模块名称。 -v:指定要构建的内核模块版本号。 其中,module_version 是要构建的内核模块的版本号。 例如,如果要在内核版本为 5.10.0-7 的系统上构建版本号为 1.0 的内核模块,可以使用以下命令: sudo dkms build -m module_name -v 1.0 -k 5.10.0-7dkms install:使用 DKMS 安装内核模块。 sudo dkms install -m module_name -v module_version 此命令将会在 DKMS 管理的所有内核版本上安装指定的内核模块。dkms remove:从 DKMS 中删除内核模块。 sudo dkms remove -m module_name -v module_version --all 此命令将会从 DKMS 中删除指定的内核模块,并删除相关的文件。使用 `--all` 选项可以删除 DKMS 中所有安装的版本。dkms status:显示已安装的内核模块及其状态。 sudo dkms status 此命令将会列出所有已安装的内核模块及其状态,例如构建状态、安装状态、错误状态等等。dkms mktarball:创建内核模块的源代码压缩包。 sudo dkms mktarball -m module_name -v module_version 此命令将会创建指定内核模块的源代码压缩包,可以用于备份或分发。dkms mkdeb:创建 Debian 软件包。 sudo dkms mkdeb -m module_name -v module_version 此命令将会创建一个 Debian 软件包,包含指定的内核模块和相关文件。dkms mkrpm:创建 RPM 软件包。 sudo dkms mkrpm -m module_name -v module_version ``` 此命令将会创建一个 RPM 软件包,包含指定的内核模块和相关文件。以上命令只是 DKMS 提供的一部分功能,还有许多其他命令和选项可以用来管理内核模块。您可以使用 man dkms 命令查看 DKMS 的完整帮助文档。 4,dkms不依赖内核源码吗DKMS 不依赖于内核源代码,因为它是使用内核源代码的头文件和符号文件进行编译的。DKMS 需要安装一个与当前正在运行的内核版本匹配的内核头文件包,以便在编译和安装内核模块时使用正确的头文件。 在大多数 Linux 发行版中,内核头文件包已经预装。如果没有预装,可以通过包管理器安装。例如,在 Ubuntu 系统上,需要安装一个名为 linux-headers 的包,可以使用以下命令进行安装: sudo apt-get install linux-headers-$(uname -r)其中,$(uname -r) 会自动获取当前正在运行的内核版本号,并将其作为参数传递给包管理器。这样就可以安装与当前内核版本匹配的内核头文件包了。 在 DKMS 中,可以在 dkms.conf 配置文件中指定要使用的内核头文件的位置。如果您需要在不同的内核版本之间切换,可以使用 dkms 命令的 -k 选项指定要使用的内核版本,例如: sudo dkms build -m module_name -v module_version -k 5.10.0-7-amd64这将使用内核版本为 5.10.0-7-amd64 的头文件进行编译内核模块。 5,内核模块是通过 deb 包提供如果内核模块是通过 deb 包提供的,可以使用 DKMS 将其编译为可在多个内核版本上运行的模块。以下是将 deb 包中的内核模块添加到 DKMS 中的步骤: 安装 deb 包: sudo dpkg -i package_name.deb 其中,`package_name.deb` 是要安装的 deb 包的名称。进入内核模块所在的目录,查看是否存在 dkms.conf 配置文件。如果不存在,需要手动创建。 在内核模块所在的目录中执行以下命令,将内核模块添加到 DKMS 中: sudo dkms add -m module_name -v module_version 其中,`module_name` 是内核模块的名称,`module_version` 是内核模块的版本号。构建和安装内核模块: sudo dkms build -m module_name -v module_version sudo dkms install -m module_name -v module_version ```build` 命令用于构建内核模块,`install` 命令用于安装内核模块。现在,内核模块已经成功添加到 DKMS 中,并且已经构建和安装到当前正在运行的内核版本中。如果需要在其他内核版本中使用该内核模块,可以使用 -k 选项指定要使用的内核版本,例如: sudo dkms build -m module_name -v module_version -k 5.10.0-7-amd64这将使用内核版本为 5.10.0-7-amd64 的头文件进行编译内核模块。 例子: 源码必须放在/usr/src/目录 /usr/src/megaraid_sas-07.721.02.00 dkms.conf # # Master copy of dkms.conf for megaraid_sas. # Dont edit this file manually. Auto build script makes necessary changes. # PACKAGE_NAME="megaraid_sas" PACKAGE_VERSION=07.721.02.00 MOD_PATH=${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION} MAKE[0]="make -C ${kernel_source_dir} SUBDIRS=${MOD_PATH}/build modules" CLEAN="make -C ${kernel_source_dir} SUBDIRS=${MOD_PATH}/build clean" BUILT_MODULE_NAME[0]="megaraid_sas" DEST_MODULE_LOCATION[0]="/kernel/drivers/scsi/megaraid/" MODULES_CONF_ALIAS_TYPE[0]="scsi_hostadapter" REMAKE_INITRD="yes"Makefile obj-m += megaraid_sas.o megaraid_sas-objs := megaraid_sas_base.o megaraid_sas_fusion.o megaraid_sas_fp.o megaraid_sas_debugfs.odmks增加模块: sudo dkms add -m megaraid_sas -v 07.721.02.00 自动创建: /var/lib/dkms/megaraid_sas/ sudo dkms status megaraid_sas, 07.721.02.00, 4.15.18-20220228, aarch64: built 编译: sudo dkms build -m megaraid_sas -v 07.721.02.00 最终生成在: /var/lib/dkms/megaraid_sas/07.721.02.00/4.15.18-20220228/aarch64/module/ megaraid_sas.ko 如果要安装; sudo dkms install -m megaraid_sas -v 07.721.02.00 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |