編集: 質問を少し簡略化したいと思います:
主な問題は次の通りです: USB ドライブが挿入されているかどうかに関係なく、起動時に /dev/sda が作成されます。手動で /dev/sda を rm すると、再起動するまで udev は正常に動作しますが、再起動すると /dev/sda が魔法のように再び表示されます。
元の質問は次のとおりです:
組み込みボード上で Yocto Linux ビルドを実行していますが、問題が発生しました。
新規ビルドでは、USB ドライブをボードに接続すると、/dev/sda および /dev/sda1 として表示されます (すばらしい!)。ドライブを取り外すと、それらのエントリは消えます (これもすばらしい!)。
この問題は、USB ドライブ経由で重複したルート ファイルシステムをボードにコピーした後に発生します (これにより、ボードのシステム全体を更新できます)。再起動するまではすべて正常に動作しますが、再起動すると、USB ドライブが挿入されているかどうかに関係なく、突然 /dev/sda と /dev/sda1 が存在するようになります。
権限を確認しましたが、どちらの場合も同じようです。ファイルを削除してみましたが、次回の再起動時に再び表示されます。2 つのファイルは新しいルート ファイル システムにコピーされません。私のアプリケーションは、これらのファイルの存在を使用してドライブが挿入されているかどうかを判断するため、正しく動作することが重要です。
何か案は?
ありがとう
マーロン
答え1
USB ドライブのチェック方法は信頼できないので、変更してください。
ディレクトリを使用するlsusb
か、確認します/proc/scsi/usb-storage
。どちらの方法でもカーネルから多くの情報を取得できるので、ベンダーやシリアル番号に基づいて異なるロジックに切り替えるなどの操作も行えます :)