有 udev 内置的任何文档吗?

有 udev 内置的任何文档吗?

udev 的手册页在多处提到​​某些规则选项可用于调用“内置”命令,这些命令显然内置于 udev 程序本身中。但是,我还没有找到任何参考文档来清楚地解释 udev 内置函数的可用情况;它们的作用以及如何使用它们。

我在网上搜索过但没有成功。有谁知道是否有任何地方提供有关这些内置命令的详细信息的参考?

答案1

如果您只是运行,udevadm test-builtin --help它将列出内置命令以及每个命令的简短描述:

udevadm test-builtin --help
udevadm test-builtin [选项] 命令 DEVPATH

测试内置命令。

  -h --help 打印此消息
  -V --version 程序的打印版本

命令:
  blkid 文件系统和分区探测
  btrfs btrfs 卷管理
  hwdb 硬件数据库
  input_id 输入设备属性
  键盘 键盘扫描码到按键映射
  kmod 内核模块加载器
  net_id 网络设备属性
  net_setup_link 配置网络链接
  path_id 组成持久设备路径
  usb_id USB 设备属性
  uaccess 管理设备节点用户ACL

不幸的是,正如您所注意到的,手册中仅简要解释了内置函数的用法。可以在系统上的可用
文件(在 下)中找到一个实际示例,其中包含以下内容:50-udev-default.rules/lib/udev/rules.d/

SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", IMPORT{builtin}="usb_id", IMPORT{builtin}="hwdb --subsystem=usb"
SUBSYSTEM=="input", ENV{ID_INPUT}=="", IMPORT{builtin}="input_id"
ENV{MODALIAS}!="", IMPORT{builtin}="hwdb --subsystem=$env{SUBSYSTEM}"

答案2

不幸的是,手册页上缺少此信息,即使知道如何阅读它们(见下文),您在尝试查找该信息时也会遇到麻烦。

然而,开源的美妙之处在于拥有阅读源代码的能力。如果你看一下udev-builtin.csystemd/存储库内的源文件udev并具有基本的C语言知识,您将找到以下代码片段:映射所有现有内置类型的结构。

static const struct udev_builtin *builtins[_UDEV_BUILTIN_MAX] = {
#if HAVE_BLKID
        [UDEV_BUILTIN_BLKID] = &udev_builtin_blkid,
#endif
        [UDEV_BUILTIN_BTRFS] = &udev_builtin_btrfs,
        [UDEV_BUILTIN_HWDB] = &udev_builtin_hwdb,
        [UDEV_BUILTIN_INPUT_ID] = &udev_builtin_input_id,
        [UDEV_BUILTIN_KEYBOARD] = &udev_builtin_keyboard,
#if HAVE_KMOD
        [UDEV_BUILTIN_KMOD] = &udev_builtin_kmod,
#endif
        [UDEV_BUILTIN_NET_ID] = &udev_builtin_net_id,
        [UDEV_BUILTIN_NET_LINK] = &udev_builtin_net_setup_link,
        [UDEV_BUILTIN_PATH_ID] = &udev_builtin_path_id,
        [UDEV_BUILTIN_USB_ID] = &udev_builtin_usb_id,
#if HAVE_ACL
        [UDEV_BUILTIN_UACCESS] = &udev_builtin_uaccess,
#endif
};

struct包含所有内置类型,并且它们根据其类型映射源文件。例子:

有关的:

答案3

不确定,如果您没有找到更好的东西,也许可以尝试探索源代码中直接可用的内置函数:查找以“udev-builtin”开头的文件

https://github.com/systemd/systemd/tree/master/src/udev

相关内容