linux:Class10 SD卡不同的設備和區塊設備大小

linux:Class10 SD卡不同的設備和區塊設備大小

A 有一張全新的 16GB Class 10 SD 卡,並產生了非常奇怪的行為。當我用 USB SD 卡讀卡機連接該卡後,該裝置顯示為 /dev/sdb。我嘗試使用 into 複製 2GB 原始影像dd,但它立即返回:「裝置上沒有更多空間」。

塊設備顯示:只有10M空間。

ls -lah /dev/sdb
-rw-r--r-- 1 root root 10M máj   16 23:16 /dev/sdb

fdisk 顯示相同的大小:

fdisk -l /dev/sdb
Disk /dev/sdb: 10 MiB, 10485760 bytes, 20480 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x84f9d19f

我已經用另一個讀卡機嘗試了 SD 卡,但看起來這不是讀卡機的問題,每個讀卡機的 SD 卡的「大小」都是 10M。

cat /proc/partitions
major minor  #blocks  name
...
   8       16   15558144 sdb
...

有趣的是:核心看起來實際上知道 SD 卡的正確大小。

cat /sys/block/sdb/size
31116288  # numbers of 512 byte blocks => 15.93 GB

似乎它得到了正確的認可。

May 16 22:58:07 DDSI-Laptop kernel: [258762.883672] usb 1-3: New USB device found, idVendor=14cd, idProduct=125c
May 16 22:58:07 DDSI-Laptop kernel: [258762.883674] usb 1-3: New USB device strings: Mfr=1, Product=3, SerialNumber=2
May 16 22:58:07 DDSI-Laptop kernel: [258762.883675] usb 1-3: Product: Mass Storage Device
May 16 22:58:07 DDSI-Laptop kernel: [258762.883676] usb 1-3: Manufacturer: Generic
May 16 22:58:07 DDSI-Laptop kernel: [258762.883677] usb 1-3: SerialNumber: 125C20100726
May 16 22:58:07 DDSI-Laptop kernel: [258762.883972] usb-storage 1-3:1.0: USB Mass Storage device detected
May 16 22:58:07 DDSI-Laptop kernel: [258762.884114] scsi host52: usb-storage 1-3:1.0
May 16 22:58:07 DDSI-Laptop mtp-probe: checking bus 1, device 30: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-3"
May 16 22:58:07 DDSI-Laptop mtp-probe: bus: 1, device: 30 was not an MTP device
May 16 22:58:08 DDSI-Laptop kernel: [258763.881813] scsi 52:0:0:0: Direct-Access     Mass     Storage Device        PQ: 0 ANSI: 0 CCS
May 16 22:58:08 DDSI-Laptop kernel: [258763.882008] sd 52:0:0:0: Attached scsi generic sg1 type 0
May 16 22:58:08 DDSI-Laptop kernel: [258763.883073] sd 52:0:0:0: [sdb] 31116288 512-byte logical blocks: (15.9 GB/14.8 GiB)
May 16 22:58:08 DDSI-Laptop kernel: [258763.883195] sd 52:0:0:0: [sdb] Write Protect is off
May 16 22:58:08 DDSI-Laptop kernel: [258763.883198] sd 52:0:0:0: [sdb] Mode Sense: 03 00 00 00
May 16 22:58:08 DDSI-Laptop kernel: [258763.883312] sd 52:0:0:0: [sdb] No Caching mode page found
May 16 22:58:08 DDSI-Laptop kernel: [258763.883315] sd 52:0:0:0: [sdb] Assuming drive cache: write through

造成差異的原因是什麼?

答案1

-… /dev/sdb

這是一個常規文件,而不是設備。/dev/sdb當沒有裝置與該磁碟機號連接時,您一定嘗試過寫入。當心!您很幸運沒有覆蓋與您想要的設備不同的設備。

有關區塊設備的資訊由核心直接提供,/proc並使用設備的核心名稱。/sys中的設備節點/dev烏德夫;它們通常遵循核心的裝置名稱(並添加其他名稱作為符號連結),但/dev手動寫入可能會破壞 udev。由於目錄項目/dev/sdb已經存在,因此當您插入 SD 卡時,它不會建立設備節點。

取出/dev/sdb,彈出 SD 卡,然後重新插入,然後檢查它獲得的裝置名稱。您應該會看到一個區塊設備:

$ ls -l /dev/sdb
rw-rw-rw- 1 根磁碟 8, 16 … /dev/sdb    

相關內容