ほとんどの USB キーは私のシステムで動作します。キーを差し込むと、udev
キー全体のデバイス ファイル (例/dev/uba
) とパーティションのデバイス ファイル (例/dev/uba1
) が作成されます。
特定の USB キー (Sandisk Cruzer Micro 2Gb) がudev
不正に動作します。キーのデバイス ファイルは作成されますが、パーティションのデバイス ファイルは作成されません。
dmesg
動作中のキーと問題のあるキーの出力を比較すると、問題のあるキーを使用する場合に 1 行が欠落している点を除いて、出力は同じですuba: uba1
。このことから、ディスク パーティションのノードが作成されていないことがわかりますmknod
。
奇妙なことに、私は...
sudo sfdisk -R /dev/uba
...ドライブのパーティションを強制的に再検査すると、突然パーティションが認識され、mknod
デバイス ファイルが作成され、キーに問題なくアクセスできるようになります。何らかのタイミングの問題でしょうか?
編集:
自動マウント USB ルール:
ACTION=="add", KERNEL=="ub[a-z]*[1-9]*", PROGRAM="/sbin/blkid -o values -s TYPE %N", RESULT=="vfat", RUN+="/home/ubuntu/.mount_usb %k %n"
ACTION=="remove", KERNEL=="ub[a-z]*", RUN+="/home/ubuntu/.unmount_usb"
また:
問題のあるキーは、再フォーマット時にデフォルトで FAT16 になります。これを FAT32 に強制すると、udevadm monitor --property
デバイスとパーティションのプロパティが動作中のキーとまったく同じになりますが、問題は依然として残ります。このことから、デバイス検出ルールの問題ではなく、デバイス自体の問題である可能性の方が高いと考えられます。これは論理的な結論でしょうか?
答え1
命名構造から判断すると/dev/uba
、独自の UDEV ルールを作成したようですが、現在はうまく機能していません。サポートするには、そのコードを確認する必要があります。
すでに参照されていると思いますが、念のため、UDEV ルールの作成についてはこのリファレンスを参照してください。http://wiki.debian.org/udev
更新に基づくフィードバック
アクション=="add", カーネル=="ub[az]*[1-9]*", プログラム=="/sbin/blkid -o values -s TYPE %N", 結果=="vfat", 実行+="/home/ubuntu/.mount_usb %k %n" アクション=="削除"、カーネル=="ub[az]*"、実行+="/home/ubuntu/.unmount_usb"
どうやら、あなたの前任者は について知らなかったようですusbmount
。このルールは vfat でフォーマットされたドライブでのみ機能します。これで、そのリストを拡張するか、インストールして調整し、
usbmount
必要なデバイス名を作成することができます。そうすれば、完全な自家製ソリューションではなく、わずかな構成変更のみで維持されるものが得られます。
ちなみに、そこには構文エラーがありますが、CLI からこれを実行すると、エラーが表示value
されます。values
sudo blkid -o 値 -s TYPE /dev/sdb1 vfat
したがって、 は%N
入力 (ブロック デバイスなど) であり、 RESULT は標準出力です。これは udev のマニュアル ページで詳しく説明されています。 のような操作を実行できる可能性があります。RESULT=="[vfat|fat16]"
または、出力をスクリプトに転送して、そこでより詳細な比較を実行することもできます。 usbmount パッケージをざっと見ると、追加と削除の両方について、コールアウト スクリプトで詳細な比較が行われていることがわかります。 に移行することを強くお勧めしますusbmount
。