Linux: Tarjeta SD Class10 con diferente dispositivo y tamaño de dispositivo de bloque

Linux: Tarjeta SD Class10 con diferente dispositivo y tamaño de dispositivo de bloque

Tengo una tarjeta SD nueva de 16 GB clase 10 y produce un comportamiento muy extraño. Después de conectar la tarjeta con un lector de tarjetas SD USB, el dispositivo apareció como /dev/sdb. Intenté copiar una imagen sin formato de 2 GB dd, pero inmediatamente aparece: "No queda más espacio en el dispositivo".

El dispositivo de bloque muestra: solo hay 10M de espacio en él.

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

fdisk muestra el mismo tamaño:

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

Probé la tarjeta SD con otro lector, pero parece que no es un problema del lector de tarjetas, el "tamaño" de la tarjeta SD es de 10 M con cada lector.

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

La parte interesante es: parece que el kernel realmente conoce el tamaño correcto de la tarjeta SD.

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

Y parece que está debidamente reconocido.

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

¿Qué causa la diferencia?

Respuesta1

-… /dev/sdb

Este es un archivo normal, no un dispositivo. Debes haber intentado escribir /dev/sdben algún momento cuando no había ningún dispositivo conectado con esta letra de unidad. ¡Ten cuidado! Tuviste suerte de no sobrescribir un dispositivo diferente al que pretendías.

La información sobre los dispositivos de bloque que /procel /syskernel proporciona directamente utiliza el nombre del kernel para el dispositivo. Los nodos de dispositivos /devson administrados porudev; normalmente siguen los nombres de los dispositivos del kernel (y agregan otros nombres como enlaces simbólicos) pero escribir /devmanualmente puede interrumpir udev. Como la entrada del directorio /dev/sdbya existía, no creó el nodo del dispositivo cuando conectó la tarjeta SD.

Retire /dev/sdb, expulse la tarjeta SD, vuelva a enchufarla y verifique el nombre del dispositivo que recibe. Deberías ver un dispositivo de bloqueo:

$ ls -l /dev/sdb
brw-rw-rw- 1 disco raíz 8, 16… /dev/sdb    

información relacionada