如果 hal 真的在使用还是只是 udev,我很困惑。
我的理解:
一般来说,HAL 是一个抽象层,它允许操作系统与硬件设备进行交互。
daemon hald 与 HAL 不同。它是一种提供 HAL 的服务,用于识别设备,然后安装它们(以及它们将在哪里,在 /dev 下?)或自动配置它们以供应用程序使用。
它现在被 udev 弃用,它也做了类似的事情,即通过读取来自内核的消息并根据预定义的规则命名来自动挂载连接的设备。
目前只有少数基于 GUI 的应用程序,如 GNOMe 使用暂停,以获取有关新连接设备的通知(而安装仍然由 udev 负责?)
所以我的问题是,如果 hal 仅用于通知基于 GUI 的应用程序有关新连接的硬件,因为它可以通过 DBUS 进行通信,但 udev 没有 dbus 实现。而对于自动挂载设备,只有 udev 这样做,而没有使用 hal?
我特别在谈论 Redhat 5,6 和 7。
谢谢。
一些背景:
udev
已经存在了很长时间(从 2.5 内核开始)和(对于 RHEL)它是在驱动程序宣布硬件时设置设备节点的东西。即使在使用 HAL 的系统上,仍然存在udev
。udev
当它“发现”变化时,它本身可以调用其他程序,而 HAL 试图抽象出桌面 *nix 系统(不仅是 Linux,还有其他像 FreeBSD 等)的某些新硬件的公告和配置。最终,人们取消了某些 HAL 部分,但并非所有 HAL 部分都可以移动到udev
其中——其中一些分裂为其他守护进程。到 2012 年左右,大多数最前沿的 Linux 发行版都放弃了 HAL,而现在(2019 年初)上述守护进程是这样的udisks
,upower
等等。在https://en.wikipedia.org/wiki/HAL_(software)上有一个很好的总结......因此,鉴于 RHEL 松散地基于 Fedora(可以在https://en.wikipedia.org/wiki/Red_Hat_Enterprise_Linux#Relationship_with_Fedora上看到粗略的映射),并且我们知道Fedora 16 是无 HAL 的:
hald
hald
hald
,其他守护进程将接管udev
无法说服的事情。只需启动适当版本的 RHEL 并执行以下操作:
(哦,不,我刚刚意识到您在一个中隐藏了多个问题:-()
设备在
/dev
但我是否需要“挂载”设备取决于上下文。我可能会安装一个磁盘(例如,在下面,/mnt
但还有其他地方也安装了东西)但我不安装扫描仪(宣布/查找扫描仪是 HAL 处理的事情)。有时它仅由 完成
udev
,有时其他服务也参与其中。/dev
设备命名udev
受控,是的。好吧,现代系统没有,
hald
所以您的问题既奇怪又复杂。此外,即使在这样做的系统上,答案也是“视情况而定”。是udev
的,可以进行安装,但有时诸如通过 PTP 协议连接 USB 摄像头之类的事情几乎由 GNOME 用户空间处理(尽管我猜你可以争论整个 FUSE 角度)。这是一个问题吗?HAL 用于通知 GUI 应用程序,但它也可以在设备更改时触发其他事情(例如调整电源规则/安装磁盘)。
再次是共同努力。是的,
udev
规则要做很多,但根据上下文可能会涉及其他事情(例如,如果您需要开始提示用户),这就是udisks
开始涉及的事情。我想这里有一个潜台词:你为什么要问是否使用了 HAL?你最好直接问这个问题......
(这些多部分的问题很痛苦:-()