Linux 引导期间所有块设备到底何时(且最早)被枚举?

Linux 引导期间所有块设备到底何时(且最早)被枚举?

问题:在 Linux 启动期间,我想知道枚举所有块设备的某个时间实例。我假设块设备不是通过网络(如 iscsi)来的,而是通过 FC 来的,甚至可能是“多路径设备”。

我知道的:

如果编写一些脚本并将其设置为

kernel.hotplug=MyScript 并将其放置在 /etc/sysconfig/MyScript.modules 中(注意 .modules 扩展名)。

我将获取正在枚举的设备的 devpath 名称。

但这种方法效率不高。

示例:我想对块设备执行具有不同类型的签名。

但是,每当将任何块设备添加到系统时(特别是每当创建/删除任何 kobject 时),MyScript 都会被调用。

我想做的是:

启动序列中的另一个实例是,我知道所有连接的块设备都可用,这样我就可以找到我喜欢的块设备并用它们做我想做的事情。

另外,请注意,我不能等到启用 xyz.service,这在启动序列中已经很晚了。

编辑:假设没有 systemd。 Linux 使用旧的(init)启动方式。

答案1

$ systemctl status systemd-udev-settle
● systemd-udev-settle.service - udev Wait for Complete Device Initialization
   Loaded: loaded (/usr/lib/systemd/system/systemd-udev-settle.service; static; vendor preset: disabled)

$ systemctl --reverse list-dependencies systemd-udev-settle.service
systemd-udev-settle.service
● └─dmraid-activation.service

$ systemctl cat dmraid-activation.service
# /usr/lib/systemd/system/dmraid-activation.service
[Unit]
Description=Activation of DM RAID sets
DefaultDependencies=no
Conflicts=shutdown.target
After=systemd-udev-settle.service
Before=lvm2-activation-early.service cryptsetup.target local-fs-pre.target shutdown.target
Wants=systemd-udev-settle.service

尝试从上面的 dmraid-activation.service 复制相关行。这包括DefaultDependencies=no,因为您坚持尽早到达。它记录在man systemd.unit(指systemd.service。您还应该阅读man bootup

相关内容