Linux

如何修改 U 盤以將設備節點設為 /dev/sda1 而不是 /dev/sda?

  • December 1, 2017

我有一個針對 fat32 格式的 U 盤的 udev 規則。該規則包含以下屬性:

SUBSYSTEM=="block", KERNEL=="sd?1", ...

通常,它對我迄今為止測試過的 USB 記憶棒非常有效,因為大多數 USB 記憶棒在設備節點中表示為/dev/sda1/dev/sdb1

現在,我有一個特殊的 USB,它的設備節點為/dev/sda. 這個 U 盤的blkid命令會返回這樣的輸出:

/dev/sda: UUID="AC9E-6C58" TYPE="vfat"

與普通的(/dev/sda1)相比,我錯過了該PARTUUID屬性。

此外,該命令sfdisk -l /dev/sda返回以下輸出:

Disk /dev/sda: 1021 cylinders, 247 heads, 62 sectors/track
Units: cylinders of 7840768 bytes, blocks of 1024 bytes, counting from 0
  Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sda1          0       -       0          0    0  Empty
/dev/sda2          0       -       0          0    0  Empty
/dev/sda3          0       -       0          0    0  Empty
/dev/sda4          0       -       0          0    0  Empty

此 USB/dev/sda1行中有 0。但是,普通的 U 盤有這樣的條目:

  Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sda1          0+   2703-   2704-   7835620    b  W95 FAT32
           start: (c,h,s) expected (0,1,11) found (0,0,57)
           end: (c,h,s) expected (1023,125,46) found (975,125,46)
/dev/sda2          0       -       0          0    0  Empty
/dev/sda3          0       -       0          0    0  Empty
/dev/sda4          0       -       0          0    0  Empty

根據這個討論,這意味著 U 盤沒有分區表。

如果我不想更改我的 udev 規則,我該如何修改這個 U 盤?使用 Windows 工具或 Gparted 進行的正常重新分區不會更改此佈局。

如果無法更改分區佈局,我該如何更改我的 udev 規則,以便它可以處理在 /dev/sda 或 /dev/sda1 上辨識的 USB 記憶棒?

謝謝。

更新:我用“設備節點”更改了術語“安裝”以避免混淆。感謝奧斯汀。

如果您沒有需要保存在 U 盤上的數據,並且它顯示為/dev/sda,請以 root 身份執行以下命令:

wipefs -a /dev/sda

這將從設備中刪除 FAT32 簽名(以及任何其他文件系統簽名),因此它顯示為空,此時 GParted 和 Windows 磁碟管理器都應該在您重新格式化它時創建一個分區表。

此外,為了澄清術語,核心不會將設備“掛載”到/dev,它在那裡創建可用於與設備互動的設備節點(儘管,如果您有 udev,它可能會創建設備節點而不是核心),但是掛載是一個專門指文件系統的操作(更具體地說,“將 X 掛載到 Y”意味著 X 包含一個文件系統,並且您正在使該文件系統直接在位置 Y 可訪問,這不是正在發生的事情創建設備節點時)。

引用自:https://unix.stackexchange.com/questions/408186