linux: dispositivo diferente do cartão SD Class10 e tamanho do dispositivo de bloco

1

Tenha um novo cartão SD de 16GB classe 10 e produza um comportamento muito estranho. Depois de anexar o cartão a um leitor de cartão SD USB, o dispositivo apareceu como / dev / sdb. Tentei copiar uma imagem bruta de 2 GB com dd , mas ela retorna imediatamente: "Não há mais espaço no dispositivo".

O dispositivo de bloco mostra: há apenas 10M de espaço nele.

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

fdisk mostra o mesmo tamanho:

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

Eu testei o cartão SD com outro leitor, mas parece que não é um problema de leitor de cartão, o "tamanho" do cartão SD é de 10M com cada leitor.

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

A parte interessante é: o kernel parece conhecer o tamanho correto do cartão SD.

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

E parece que é devidamente reconhecido.

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

Qual é a diferença?

    
por Dankó Dávid 17.05.2016 / 00:23

1 resposta

3
-… /dev/sdb

Este é um arquivo normal, não um dispositivo. Você deve ter tentado gravar em /dev/sdb em algum momento, quando não havia nenhum dispositivo conectado a essa letra de unidade. Seja cuidadoso! Você teve sorte de não substituir um dispositivo diferente daquele que pretendia.

As informações sobre os dispositivos de bloco em /proc e /sys são fornecidas diretamente pelo kernel usam o nome do kernel para o dispositivo. Os nós de dispositivos em /dev são gerenciados por udev ; eles normalmente seguem os nomes de dispositivos do kernel (e adicionam outros nomes como links simbólicos), mas gravar manualmente em /dev pode atrapalhar o udev. Como a entrada de diretório /dev/sdb já existia, ela não criou o nó do dispositivo quando você conectou o cartão SD.

Remova /dev/sdb , ejete o cartão SD, conecte-o novamente e verifique o nome do dispositivo. Você deve ver um dispositivo de bloco:

$ ls -l /dev/sdb
brw-rw-rw- 1 root disk 8, 16 … /dev/sdb    
    
por 17.05.2016 / 01:09