有没有关于 udev 内置函数的文档?

Tim*_*Tea 11 documentation udev reference

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

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

don*_*sti 10

如果你只是udevadm test-builtin不带参数运行,它会列出内置命令以及每个命令的简短描述:

udevadm test-builtin --help
Run Code Online (Sandbox Code Playgroud)
调用:测试内置
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}"
Run Code Online (Sandbox Code Playgroud)

  • “udevadm test-builtin”本身并不适合我。我必须添加“--help”才能获取列表。编辑答案以添加开关! (2认同)

小智 6

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

然而,开源的美妙之处在于拥有阅读源代码的能力。如果您查看/ repository中的udev-builtin.c源文件并具有基本的C 语言知识,您会发现以下代码片段: 映射所有现有内置类型的结构。systemdudev

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
};
Run Code Online (Sandbox Code Playgroud)

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

有关的: