AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 493771
Accepted
Time4Tea
Time4Tea
Asked: 2019-01-11 09:38:35 +0800 CST2019-01-11 09:38:35 +0800 CST 2019-01-11 09:38:35 +0800 CST

是否有 udev 内置的文档?

  • 772

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

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

udev documentation
  • 3 3 个回答
  • 2977 Views

3 个回答

  • Voted
  1. don_crissti
    2019-01-11T11:30:31+08:002019-01-11T11:30:31+08:00

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

    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}"
    
    • 11
  2. Best Answer
    user34720
    2019-01-11T09:59:03+08:002019-01-11T09:59:03+08:00

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

    然而,开源的美妙之处在于拥有阅读源代码的能力。如果您查看/ 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
    };
    

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

    • udev-builtin-kmod.c- 内核模块加载器。
    • udev-builtin-keyboard.c- 键盘处理程序。
    • udev-builtin-usb_id.c- 将设置 USB 类型并初始化设备的 USB 处理程序。

    有关的:

    • 如何使用手册页来学习如何使用命令?
    • 6
  3. xCovelus
    2019-01-11T09:51:21+08:002019-01-11T09:51:21+08:00

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

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

    • 1

相关问题

  • 如何从 USB 到串行设备 CP2105 为串行设备分配符号链接?

  • 为什么 Udev 为单个 USB 设备加载两个内核模块?

  • 通过自定义 ACCEL_MOUNT_MATRIX 更改 iio-sensors 数据

  • 在 Chrome OS 上通过 udev 规则运行脚本 [关闭]

  • udev、udisks、dbus 和 dd 命令

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve