Entendendo o processo de inicialização do Linux, a inicialização do subsistema e as regras do udev?

2

Estou criando regras UDEV para a montagem automática de unidades externas em um servidor sem cabeçalho, da mesma forma que o Gnome-VFS faz a montagem automática durante uma sessão de usuário.

Estou preocupado com o comportamento da regra no momento da inicialização. Há uma boa chance de uma dessas unidades ser conectada durante uma inicialização e eu prefiro que todas as unidades conectadas sejam montadas no lugar certo. As unidades podem ser USB ou Firewire e são montadas a partir de um script de shell disparado pelo UDEV ao detectar um "add".

Aqui estão minhas perguntas:

  1. Quando o UDEV executa o mount para esses dispositivos na inicialização, o sistema estará pronto para montá-lo? Ou o script será acionado cedo demais?

  2. Se for muito cedo, o que é uma boa maneira de um script dizer que o sistema ainda não está pronto (assim espere um pouco antes de verificar novamente)?

  3. A regra UDEV corresponde a ACTION=="add" . Esse evento dispara na inicialização do sistema?

por quack quixote 03.11.2009 / 13:08

4 respostas

2

Tendo acabado de se amontoar no udev para obter o stick USB para automount quando não estiver executando um gui (e não usando o autofs.)

  1. Sim, veronica, o udev funciona muito cedo.

    Os scripts de agente

    podem ser retirados e executados após um sono.

  2. O udevadm settle pode ajudá-lo aqui, além de verificar o nível de execução.

  3. action="Adicionar" é executado na inicialização, não apenas no hotplug.

Se ação="remover" é executada no desligamento, agora é um peixe de cor diferente.

    
por 31.03.2010 / 06:06
1

Você está confundindo dois conceitos. Você deve usar o UDEV para atribuir nomes de dispositivos persistentes às unidades que serão permanentes, independentemente da ordem em que estejam conectados. Você pode usar o autofs para montá-los sob demanda no (s) local (is) onde deseja que eles estejam disponíveis.

    
por 05.11.2009 / 20:00
0

Eu não acho que as regras do udev sejam a solução preferida para isso. Eu acho que você seria muito melhor servido com autofs ou talvez ivman uma vez que o sistema é inicializado, o udev é um nível muito baixo no qual se conectar e há muitas ferramentas construídas sobre ele como Gnome-VFS no seu post que são mais fáceis usar e gerenciar. Em última análise, você está preocupado com a montagem no acesso (por exemplo, autofs) e com mecanismos de alto nível previsíveis para detectar ou responder a falhas. Se você trabalha no nível da udev, você terá que resolver todas essas preocupações, novamente.

    
por 03.11.2009 / 15:51
0
  1. Não, o UDEV eliminará esse script (se houver) muito antes de o sistema estar pronto para montagens; O UDEV começa em /etc/rcS.d/S03udev e as montagens padrão do fstab acontecem em /etc/rcS.d/S35mountall.sh .

  2. Melhor do que apenas adivinhar; check / bin / runlevel (obrigado Brent & rh0dium ):

    # at boot, system runs /etc/rcS.d/S* scripts, 
    #                 then /etc/rcN.d/S* scripts, N is destination runlevel
    # runlevel not set at least until we're running /etc/rcN.d scripts
    
    RUNLEVEL='/sbin/runlevel | cut -d " " -f 2'
    until [ $RUNLEVEL -ge 1 ] && [ $RUNLEVEL -le 6 ]; do
          sleep 10
          RUNLEVEL='/sbin/runlevel | cut -d " " -f 2'
    done
    
    ## run the action i want here
    
  3. Não tenho certeza.

por 05.11.2009 / 22:03