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


索引

名称
已弃用
描述
支持的 EAPIS
传递提供的 ECLASSES
函数
ECLASS 变量
作者
维护者
报告 Bug
文件
另请参阅

此文档由 man2html 使用手册页创建。
时间:2024 年 11 月 12 日格林威治标准时间 03:27:01