LINUX-MOD.ECLASS
章节: eclass-manpages (5)更新: 2024 年 11 月
索引 返回主内容
名称
linux-mod.eclass - 它提供了针对内核源代码树安装外部模块所需的功能。已弃用
替代:linux-mod-r1.eclass描述
此 eclass 用于与 linux-info.eclass 交互,从而提供针对内核源代码树安装外部模块所需的功能和初始函数。支持的 EAPIS
7 8传递提供的 ECLASSES
linux-info函数
- use_m
- 它检查内核版本是否大于 2.6.5。
返回值:true 或 false
- convert_to_m </path/to/the/file>
- 它将文件(例如 Makefile)转换为使用 M= 而不是 SUBDIRS=。
- update_moduledb
- 将软件包添加到 module-rebuild 实用程序使用的 /var/lib/module-rebuild/moduledb 数据库中。
- remove_moduledb
- 从 module-rebuild 使用的 /var/lib/module-rebuild/moduledb 数据库中删除软件包
- set_kvobj
- 它设置 KV_OBJ 变量。
- get-KERNEL_CC
- 在遵守 ebuild 中定义的变量的同时返回 C 编译器的名称。
返回值:C 编译器的名称。
- linux-mod_pkg_setup
- 它检查 CONFIG_CHECK 选项(请参阅 linux-info.eclass(5)),验证内核是否已配置,验证源代码是否已准备就绪,验证模块支持是否已内置到内核中,并设置对象扩展名 KV_OBJ。
- linux-mod_pkg_setup_binary
- 非致命地执行所有内核选项检查,因为 .config 和 /proc/config.gz 可能不存在。不要执行任何需要内核源代码的操作。
- strip_modulenames
- 防止使用默认的 src_compile/src_install 自动构建模块。
- linux-mod_src_compile
- 它编译 MODULE_NAMES 中指定的所有模块。对于每个模块,仅当定义了 ECONF_PARAMS 时才执行 econf 命令,目标的名称由 BUILD_TARGETS 指定,而选项在 BUILD_PARAMS 中(所有模块共享这些变量)。编译发生在 ${srcdir} 内。
查看这些变量的描述以了解更多详细信息。
- linux-mod_src_install
- 它安装 MODULE_NAMES 中指定的模块。模块应位于 ${objdir} 目录中,并安装在 /lib/modules/${KV_FULL}/${libdir} 中。
如果定义了 MODULESD_<modulename>_* 变量,则会自动生成 modprobe.d 配置文件。停止此过程的唯一方法是设置 MODULESD_<modulename>_ENABLED=no。最后,还安装了通过 MODULESD_<modulename>_DOCS 指定的文档。
查看这些变量的描述以了解更多详细信息。
- linux-mod_pkg_preinst
- 它检查合并软件包后该做什么。
- linux-mod_pkg_postinst
- 它执行 /sbin/depmod 并将软件包添加到 /var/lib/module-rebuild/moduledb 数据库(如果创建了 ${D}/lib/modules)。
- linux-mod_pkg_postrm
- 它从 /var/lib/module-rebuild/moduledb 数据库中删除软件包,但不会调用 /sbin/depmod,因为模块仍已安装。
ECLASS 变量
- MODULES_OPTIONAL_USE (在继承之前设置)
- 包含用于使此 eclass 可选的 USE 标志的字符串。推荐的非空值为 'modules'
- MODULES_OPTIONAL_USE_IUSE_DEFAULT (在继承之前设置)
- 一个布尔值,用于控制 MODULES_OPTIONAL_USE USE 标志的 IUSE 默认状态。默认值为未设置(false)。True 由 1 或 'on' 表示,其他值(包括未设置)都被视为 false。
- KERNEL_DIR ?= /usr/src/linux
- 包含目标内核源代码目录的字符串。默认值为“/usr/src/linux”
- ECONF_PARAMS
- 它是一个包含要传递给 econf 的参数的字符串。如果未设置此参数,则不会运行 econf。
- BUILD_PARAMS
- 它是一个包含要传递给 emake 的参数的字符串。
- BUILD_TARGETS ?= "clean module"
- 它是一个包含要传递给 make 的构建目标的字符串。默认值为“clean module”
- MODULE_NAMES
- 它是一个包含要使用默认的 src_compile/src_install 自动构建的模块的字符串。它只会在任何目录中运行一次 ${BUILD_TARGETS}。
每个 MODULE_NAMES 条目的结构如下
modulename(libdir:srcdir:objdir)其中
modulename = 模块文件的名称,不包括 .ko
libdir = 模块安装到的系统模块目录中的位置(默认情况下为 misc)
srcdir = ebuild 在运行 make 之前 cd 到的位置(默认情况下为 ${S})
objdir = make 运行后 .ko 和对象文件所在的位置(默认情况下设置为 srcdir)为了了解这些变量是如何使用的,以下是此 eclass 中大约第 540 行的一些代码
einfo "安装 ${modulename} 模块"
cd ${objdir} || die "${objdir} 不存在"
insinto /lib/modules/${KV_FULL}/${libdir}
doins ${modulename}.${KV_OBJ} || die "doins ${modulename}.${KV_OBJ} 失败"
例如
MODULE_NAMES="module_pci(pci:${S}/pci:${S}) module_usb(usb:${S}/usb:${S})"这将执行以下操作
cd "${S}"/pci
make ${BUILD_PARAMS} ${BUILD_TARGETS}
cd "${S}"
insinto /lib/modules/${KV_FULL}/pci
doins module_pci.${KV_OBJ}
cd "${S}"/usb
make ${BUILD_PARAMS} ${BUILD_TARGETS}
cd "${S}"
insinto /lib/modules/${KV_FULL}/usb
doins module_usb.${KV_OBJ} - MODULESD_<modulename>_ENABLED
- 这用于禁用 modprobe.d 文件生成,否则该文件将始终生成(除非未提供 MODULESD_<modulename>_* 变量)。设置为“no”以禁用文件的生成和文档的安装。
- MODULESD_<modulename>_EXAMPLES
- 这是一个包含应使用的示例列表的 bash 数组。如果您希望我们尝试猜测,请将其设置为“guess”。
对于每个数组组件,都会在 modprobe.d 文件中添加一个 options 行
options array_component其中 array_component 为“<modulename> options”(请参阅 modprobe.conf(5))
- MODULESD_<modulename>_ALIASES
- 这是一个包含关联别名列表的 bash 数组。
对于每个数组组件,都会在 modprobe.d 文件中添加一个 alias 行
alias array_component其中 array_component 为“wildcard <modulename>”(请参阅 modprobe.conf(5))
- MODULESD_<modulename>_ADDITIONS
- 这是一个包含要添加到文件底部的其他内容列表的 bash 数组。这可以是任何内容。每个条目都是一行。
- MODULESD_<modulename>_DOCS
- 这是一个包含 <modulename> 任何关联文档的完整路径的字符串列表。这些文件安装在活动树中。
作者
John Mylchreest <[email protected]>,Stefan Schweizer <[email protected]>
维护者
[email protected]报告 Bug
请通过 https://bugs.gentoo.org/ 报告 Bug文件
linux-mod.eclass另请参阅
ebuild(5)https://gitweb.gentoo.org/repo/gentoo.git/log/eclass/linux-mod.eclass
索引
此文档由 man2html 使用手册页创建。
时间:2024 年 11 月 12 日格林威治标准时间 03:27:01