Como esperar que uma unidade USB seja reconhecida / montada durante a inicialização para iniciar o próprio serviço?

1

Eu tenho uma compilação buildroot personalizada com o kerenel minimalista para o RPi e o busybox como init e shell. No final do processo de inicialização, inicio meu próprio serviço, que tenta acessar o drive USB. No entanto, neste momento, o driver USB ainda está inicializando os dispositivos USB, incluindo a unidade USB. O kernel inicializa em cerca de 4 segundos, o reconhecimento do dispositivo USB leva outros 4-5 segundos. Então, na verdade eu gostaria de saber como obter o drive USB montado automaticamente durante a inicialização e somente se isso acontecer, inicie meu serviço. Eu também poderia montar o disco antes de iniciar o meu serviço, mas também aqui tem de alguma forma para saber se o disco USB já é reconhecido e o / dev / sda1 é criado.

    
por Gamadril 25.11.2015 / 00:17

1 resposta

1

Se você criou seu kernel com o suporte inotify , é melhor usar a opção de esperar pela criação do dispositivo usando o inotify. Se não, você pode colocar este código onde antes de seu serviço ser iniciado por busybox init system:

# Waiting for device creation
while true                    
do                                                
    test -e /dev/yournode         
    if [ $? -eq 0 ]; then
            echo "Device created";            
            break;       
    else                          
            echo "Waiting for device";        
            sleep 1;     
    fi                                
done
    
por 01.11.2017 / 16:05