サービスを開始するために起動中にUSBドライブが認識/マウントされるまでどのように待つことができますか?

サービスを開始するために起動中にUSBドライブが認識/マウントされるまでどのように待つことができますか?

RPi用の最小カーネルとビジボックスをinitとShellとして含むカスタムビルドルートビルドがあります。起動プロセスが完了したら、独自のサービスを開始してUSBドライブにアクセスしようとします。しかし現在、USBドライバはUSBドライブを含むUSBデバイスを初期化しています。カーネルの起動には約4秒かかり、USBデバイス認識にはさらに4〜5秒かかります。だから実際に起動中にUSBドライブを自動的にマウントし、この場合サービスのみを開始する方法を知りたいです。サービスを開始する前にディスクをマウントすることもできますが、ここではUSBディスクが認識され、/ dev / sda1が作成されていることがわかります。

答え1

ビルドしているカーネルがinotifyそれをサポートしている場合は、inotifyを使用してデバイスが作成されるのを待つことをお勧めします。そうでない場合は、システムがサービスを開始する前にこのコードをbusybox initに入れることができます。

# 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

関連情報