大多數 USB 金鑰都可以在我的系統上使用:插入一個 USB 金鑰,udev
將為整個金鑰建立一個裝置檔案(例如/dev/uba
),以及為分割區建立一個裝置檔案(例如/dev/uba1
)。
我有一個特定的 USB 密鑰(Sandisk Cruzer Micro 2Gb),但它的udev
行為不正常。已建立金鑰的裝置文件,但未建立分割區的裝置文件。
如果我比較dmesg
工作金鑰和問題金鑰之間的輸出,除了使用問題金鑰時缺少一行之外,它是相同的: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
根據更新回饋
操作==“添加”,內核==“ub[az]*[1-9]*”,程式=“/sbin/blkid -o值-s類型%N”,結果==“vfat”,運行+ = “/home/ubuntu/.mount_usb%k%n” ACTION==“刪除”,KERNEL==“ub[az]*”,RUN+=“/home/ubuntu/.unmount_usb”
看來你的前任不知道這件事usbmount
。此規則僅適用於 vfat 格式的驅動器,現在您可以擴展該列表,或者...您可以安裝
usbmount
並調整它以建立您想要的裝置名稱。然後,與完整的家庭釀造解決方案相比,您只需進行較小的配置更改即可獲得為您維護的東西。
順便說一句,那裡有一個語法錯誤,但不是value
,values
從 CLI 運行它顯示。
sudo blkid -o 值 -s TYPE /dev/sdb1 脂肪組織
所以它%N
是輸入,例如區塊設備,RESULT 是標準輸出。 udev 手冊頁中有詳細說明。您也許可以執行類似的操作RESULT=="[vfat|fat16]"
,或者可以將輸出轉發到腳本並在那裡進行更豐富的比較。快速瀏覽 usbmount 套件就會發現,在新增和刪除的標註腳本中進行了豐富的比較。我強烈建議您遷移到usbmount
.