web-dev-qa-db-ja.com

起動中にUSBドライブが認識/マウントされるのを待って独自のサービスを開始するにはどうすればよいですか?

RPiとbusybox用のミニマルなケレネルをinitとShellとして使用したカスタムbuildrootビルドがあります。起動プロセスの最後に、USBドライブにアクセスしようとする独自のサービスを開始します。ただし、現時点では、usbドライバーはまだUSBドライブを含むusbデバイスを初期化しています。カーネルは約4秒で起動し、USBデバイスの認識にはさらに4〜5秒かかります。だから実際に私は起動中にUSBドライブを自動的にマウントする方法を知りたいのですが、それが起こった場合にのみサービスを開始します。サービスを開始する前にディスクをマウントすることもできますが、ここでも、USBディスクがすでに認識されており、/ dev/sda1が作成されているかどうかを知ることができます。

1
Gamadril

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

# 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
1
dursunturan