Quando exatamente (e mais antigos) todos os dispositivos de bloco foram enumerados durante o Linux Boot?

1

Problema: Durante o Linux Boot, eu quero saber uma certa instância de tempo, quando todos os dispositivos de bloco foram enumerados. Eu suponho que os dispositivos de bloco não estão vindo através de uma rede (como iscsi), mas vêm via FC, e pode até ser "dispositivos multipath".

O que eu sei:

Se escrever um script e configurá-lo como

kernel.hotplug = MyScript e coloque-o em /etc/sysconfig/MyScript.modules (observe a extensão .modules).

Eu vou pegar os nomes dos dispositivos que estão sendo enumerados.

Mas essa abordagem não é eficiente.

Exemplo: quero atuar nos dispositivos de bloco com um tipo diferente de assinatura.

Mas, o MyScript será chamado todas as vezes sempre que qualquer dispositivo de bloco for adicionado ao sistema (especificamente sempre que qualquer kobject for criado / removido).

O que eu quero fazer é:

Outra instância na sequência de inicialização, quando eu sei que todos os dispositivos de bloco conectados estão disponíveis, para que eu possa encontrar os dispositivos de bloco que eu gosto e fazer algo que eu quero com eles.

Além disso, observe que, não posso esperar até que o xyz.service esteja ativado, o que é bem tarde na seqüência de inicialização.

Edit: Suponha que não há systemd. O Linux usa o antigo modo de inicialização.

    
por rrai 10.12.2016 / 13:27

1 resposta

0

$ 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

Tente copiar as linhas relevantes do dmraid-activation.service acima. Isso inclui DefaultDependencies=no , já que você insiste em ser o mais cedo possível. Está documentado em man systemd.unit (refere-se a systemd.service . Também deve ler man bootup .

    
por 10.12.2016 / 13:43