Linuxの起動中に、すべてのブロックデバイスが正確に(そして最速)いつ列挙されますか?

Linuxの起動中に、すべてのブロックデバイスが正確に(そして最速)いつ列挙されますか?

質問:Linuxの起動中にすべてのブロックデバイスを列挙する特定の時間インスタンスを知りたいです。私は、ブロックデバイスがネットワーク(iscsiなど)を介して提供されず、FCを介して提供されたり、「マルチパスデバイス」であったりする可能性があると仮定します。

知っている:

スクリプトを作成し、次のように設定すると

kernel.hotplug = MyScriptをコピーして/ etc / sysconfig / MyScript.modulesに配置します(拡張子拡張子を参照)。

列挙されるデバイスの devpath 名を取得します。

しかし、この方法は効率的ではありません。

例:ブロックデバイスでさまざまな種類の署名を実行したいと思います。

ただし、ブロックデバイスがシステムに追加されるたびに(特にkobjectが作成/削除されるたびに)、MyScriptが呼び出されます。

私がしたいことは:

起動順序のもう1つの例は、接続されているすべてのブロックデバイスが利用可能であることを知っているので、私の好きなデバイスを見つけて必要なタスクを実行できることです。

また、起動順序で非常に遅いxyz.serviceがアクティブになるまで待つことができないことに注意してください。

編集:システムがないとします。 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

おすすめ記事