Linux 环境中的设备管理器是什么?

How*_*nux 2 linux udev terminology

Linux 环境下的设备管理器是什么?\xc2\xa0\n那个\xc2\xa0 是,设备管理器实际上是做什么的?

\n

https://en.wikipedia.org/wiki/Udev说

\n
\n

udev(用户空间/dev)是Linux内核的设备管理器。

\n
\n

这意味着什么?

\n

维基百科继续:

\n
\n

作为devfsd和hotplug的后继者,\nudev主要管理目录中的设备节点/dev。\xc2\xa0\n在\xc2\xa0与\xc2\xa0相同\xc2\xa0时,udev\xc2\xa0还处理\n时引发的所有用户空间事件硬件设备被添加到系统中或\xc2\xa0从\xc2\xa0it中删除,\n包括根据某些设备的要求加载固件。

\n
\n

这句话对我来说没有任何意义。\xc2\xa0\n首先,“管理\xc2\xa0目录中的设备节点/dev”是什么意思?

\n

斯莱贝特曼 说:

\n
\n

它是一个自动启用或禁用设备驱动程序的软件。\xc2\xa0\n\xc2\xa0“自动”部分通常是通过\n\nxc2\xa0检测到新设备已连接到计算机来完成的。\ xc2\xa0\n\xc2\xa0除了激活设备驱动外,\nit\xc2\xa0还会自动配置\xc2\xa0设备\n(以\xc2\xa0为例,当\xc2\xa0it时自动挂载\xc2\xa0USB驱动检测到它,而不需要\xc2\xa0打开\xc2\xa0磁盘管理器或\xc2\xa0运行\xc2\xa0命令来\xc2\xa0安装驱动器)。

\n
\n

“自动启用或禁用设备驱动程序”的目的是什么?\xc2\xa0\nso\xc2\xa0内核可以与设备或\xc2\xa0the\xc2\xa0程序对话?\xc2\xa0\nso\xc2\xa0the\xc2 \xa0devices 可以在用户空间或内核空间操作吗?

\n

use*_*686 9

Udev 处理所有新检测到的设备的设置(包括系统启动后的“热插拔”设备以及系统启动时永久连接的“冷插拔”设备):

\n
    \n
  • 每当内核通知它新检测到的设备时,它将按需加载内核模块(驱动程序)。

    \n
  • \n
  • 它将更新/dev这些设备的设备节点:设置它们的所有权、组、权限;它还创建符号链接,例如/dev/disk/by-uuid.

    \n

    过去,udev 还用于在 /dev 中创建所有设备节点(使用“mknod”),并在设备断开连接时删除它们。在当前的 Linux \xe2\x80\x93 中不再需要这样做,而是内核具有“devtmpfs”,其中设备将自动出现 \xe2\x80\x93 但 udev 仍然负责更改权限和创建符号链接。

    \n
  • \n
  • 它将处理自定义规则,例如可以运行帮助程序来初始化设备(例如重新映射键盘扫描代码,或将固件上传到打印机,或只是戳/sys旋钮),或者可以为用户空间程序增强设备的元数据(例如 libinput 的触摸板尺寸;另请参阅 systemd-hwdb)。

    \n
  • \n
\n

一般流程是:

\n
    \n
  1. 内核检测到设备(例如,USB 总线上的低级“USB 设备 VID:PID”)并通过 Netlink 发出 uevent。

    \n
  2. \n
  3. Udev 处理在/{etc,lib,usr/lib}/udev/rules.d/. 模块加载是那里发现的一个特殊规则,实际上 udev 所做的所有其他事情也是如此。

    \n
  4. \n
  5. Udev 通过 Netlink 发出增强的 uevent,供用户空间做出反应。

    \n

    大多数程序故意忽略初始内核事件,但等待来自 udev 的增强事件;这样他们只会在设备的规则完成他们需要做的事情后才开始使用该设备。

    \n
  6. \n
\n

Udev 不是严格强制的 \xe2\x80\x93 您可以拥有一个内核,其中包含所有必需的驱动程序,可以编译或使用手动加载modprobe,并且大多数事情都可以工作。(只要加载了驱动程序,它就会自动连接到已识别的设备 \xe2\x80\x93,该设备不由 udev 处理。)

\n

依赖 udev 来宣布新检测到的设备或提供附加元数据的软件是行不通的,例如,当您插入新的显示器或鼠标时,X11 不会注意到。

\n