udev 為 USB 金鑰建立裝置文件,但不會為分割區建立裝置文件

udev 為 USB 金鑰建立裝置文件,但不會為分割區建立裝置文件

大多數 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並調整它以建立您想要的裝置名稱。然後,與完整的家庭釀造解決方案相比,您只需進行較小的配置更改即可獲得為您維護的東西。

順便說一句,那裡有一個語法錯誤,但不是valuevalues從 CLI 運行它顯示。

sudo blkid -o 值 -s TYPE /dev/sdb1
脂肪組織

所以它%N是輸入,例如區塊設備,RESULT 是標準輸出。 udev 手冊頁中有詳細說明。您也許可以執行類似的操作RESULT=="[vfat|fat16]",或者可以將輸出轉發到腳本並在那裡進行更豐富的比較。快速瀏覽 usbmount 套件就會發現,在新增和刪除的標註腳本中進行了豐富的比較。我強烈建議您遷移到usbmount.

相關內容