não pode montar a partição - como posso resolver o problema?

1

Eu tenho um cartão SD que foi usado no Raspberry Pi. Eu quero montar este cartão SD em um PC Linux para obter arquivos dele, mas não posso.

Quando coloco o cartão SD em um leitor de cartão, meu dmesg diz:

  [  114.117896] usb 4-1: new full-speed USB device number 2 using ohci-pci
  [  114.292885] usb 4-1: New USB device found, idVendor=214b, idProduct=1101
  [  114.292897] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
  [  114.292904] usb 4-1: Product: USB2.0 Device   
  [  114.292910] usb 4-1: Manufacturer: Generic 
  [  114.292914] usb 4-1: SerialNumber: 0201202010201000
  [  114.383603] usb-storage 4-1:1.0: USB Mass Storage device detected
  [  114.383803] scsi6 : usb-storage 4-1:1.0
  [  114.383956] usbcore: registered new interface driver usb-storage
  [  115.386965] scsi 6:0:0:0: Direct-Access     USB2.0   CARD-READER      1.01 PQ: 0 ANSI: 2
  [  115.388961] sd 6:0:0:0: Attached scsi generic sg2 type 0
  [  115.409892] sd 6:0:0:0: [sdc] Attached SCSI removable disk
  [  115.471798] sd 6:0:0:0: [sdc] 30679040 512-byte logical blocks: (15.7 GB/14.6 GiB)
  [  115.505782] sdc: detected capacity change from 0 to 15707668480
  [  115.534776]  sdc: sdc1 sdc2 < sdc5 sdc6 > sdc3

A tabela de partições deste cartão é:

  # parted /dev/sdc
  GNU Parted 3.2
  Using /dev/sdc
  Welcome to GNU Parted! Type 'help' to view a list of commands.
  (parted) print                                                            
  Model: USB2.0 CARD-READER (scsi)
  Disk /dev/sdc: 15,7GB
  Sector size (logical/physical): 512B/512B
  Partition Table: msdos
  Disk Flags: 

  Number  Start   End     Size    Type      File system  Flags
   1      1049kB  1275MB  1274MB  primary   fat32        lba
   2      1278MB  15,7GB  14,4GB  extended
   5      1279MB  1342MB  62,9MB  logical   fat16        lba
   6      1343MB  15,7GB  14,3GB  logical
   3      15,7GB  15,7GB  33,6MB  primary

Quando eu verifico este dispositivo com fdisk, ele diz:

  # fdisk /dev/sdc -l

  Disk /dev/sdc: 14.6 GiB, 15707668480 bytes, 30679040 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: 0x000daf86

  Device     Boot    Start      End  Sectors  Size Id Type
  /dev/sdc1           2048  2490234  2488187  1.2G  e W95 FAT16 (LBA)
  /dev/sdc2        2496512 30609407 28112896 13.4G 85 Linux extended
  /dev/sdc3       30613504 30679039    65536   32M 83 Linux
  /dev/sdc5        2498560  2621439   122880   60M  c W95 FAT32 (LBA)
  /dev/sdc6        2623488 30607359 27983872 13.4G 83 Linux
  Partition table entries are not in disk order.

Parece que / dev / sdc6 é a maior partição, então eu quero montá-lo. Quando tento montá-lo, recebo este resultado:

  # mount -v /dev/sdc6 test
  mount: wrong fs type, bad option, bad superblock on /dev/sdc6,
         missing codepage or helper program, or other error

         In some cases useful info is found in syslog - try
         dmesg | tail or so.

O Dmesg não diz nada quando tento montar o / dev / sdc6.

Quando eu verifico esta partição com o comando arquivo , diz:

    # file -s /dev/sdc6
    /dev/sdc6: data

Quando eu verifico o sistema de arquivos com fsck, recebo:

  # LC_ALL=C fsck.ext3 -n /dev/sdc6
  e2fsck 1.43.4 (31-Jan-2017)
  ext2fs_open2: Bad magic number in super-block
  fsck.ext3: Superblock invalid, trying backup blocks...
  root was not cleanly unmounted, check forced.
  Pass 1: Checking inodes, blocks, and sizes
  Pass 2: Checking directory structure
  Pass 3: Checking directory connectivity
  Pass 4: Checking reference counts
  Pass 5: Checking group summary information
  Free blocks count wrong for group #0 (4245, counted=11608).
  Fix? no

  Free blocks count wrong for group #1 (1373, counted=707).
  Fix? no

  Free blocks count wrong for group #2 (1699, counted=1880).
  Fix? no

  (...)

  Inode bitmap differences:  -(57345--131072) -172034 -172037 -(172042--172043) -172045 -172047 -172049 -172053 -172057 -172059 -172062 -172065 (...)
  Fix? no

  root: ********** WARNING: Filesystem still has errors **********

  root: 91692/876544 files (0.8% non-contiguous), 1413337/3497984 blocks

Eu entendo que devido a alguma razão desconhecida, o Linux não pode montar este sistema de arquivos. Eu gostaria de saber por que - o sistema de arquivos está quebrado ou há algum outro motivo? E eu gostaria de montar este sistema de arquivos ou de alguma forma recuperar seus arquivos.

O que devo fazer agora para solucionar esse problema?

EDIT: Eu quero agradecer a todos pela ajuda! Finalmente eu encontrei - usando fsck - que a partição contém o sistema de arquivos ext do Linux, mas o sistema de arquivos está quebrado e é por isso que eu não consegui montá-lo. Eu fiz um backup do cartão (com "cat / dev / sdc | gzip > mybackup") e, em seguida, verifiquei se o dispositivo contém blocos defeituosos. Ele não contém nenhum bloco defeituoso (talvez o sistema de arquivos no cartão SD tenha sido quebrado usando um leitor de cartão SD quebrado?), Então eu apenas consertei o sistema de arquivos com o fsck, coloquei o cartão no Raspberry Pi e então inicializei sem problemas.

    
por user983447 01.10.2017 / 07:49

2 respostas

2

De acordo com a saída postada de fsck , há esperança de que alguns dados possam ser recuperados.

Eu recomendaria:

  1. faça uma cópia dd do sistema de arquivos em um arquivo de disco (por exemplo, fdsump.orig ). Se falhar, tente ddrescue . Certifique-se de ter espaço livre suficiente antes de começar.
  2. Não trabalhe diretamente neste arquivo, mas crie uma nova cópia (por exemplo, cp fsdump.orig fsdump ), para que você possa voltar a essa etapa e começar de novo.
  3. com mount -o loop cria um dispositivo a partir do arquivo fsdump data (por exemplo, /dev/loop1 )
  4. experimente fsck.ext3 /dev/loop1 até que não haja erros. Quanto mais passes forem necessários, maior será o dano.
  5. monte o /dev/loop1 em um diretório. Copie todos os arquivos para um local seguro. (Use cp -a ou rsync para preservar atributos de arquivo). Qualquer um deles pode estar corrompido, truncado, etc.
  6. Agora você pode desmontar o sistema de arquivos de loop.

Veja man pages dos utilitários mencionados para detalhes.

    
por 01.10.2017 / 16:04
1

Você pode usar o arquivo (1) , pois file -s /dev/sdc6 leria alguns bytes do dispositivo de bloco e adivinha o que está lá.

Se nada for reconhecido, você está com problemas e pode ter perdido seus dados; para fazer qualquer coisa para recuperá-lo, você deve saber a priori qual sistema de arquivos estava lá.

Se algum sistema de arquivos for reconhecido, você pode tentar usar mount (8) com um -t explícito type

Partition table entries are not in disk order

Isso não cheira muito bem. Talvez você precise reparticionar inteiramente seu disco (mas faça o backup de seus dados antes); parece que você tem duas partições sobrepostas ( sdc2 e sdc6 )

Já que você está rodando em algum outro PC Linux, você pode copiar os dados do cartão SD para o PC (em algum arquivo), talvez usando dd (1)

dd if=/dev/sdc6 of=$HOME/diskdata bs=4k

BTW, verifique com dmesg após esse comando se a cópia foi bem.

Você pode até copiar com dd de todo o cartão SD.

Então você pode gastar horas (ou meses) de trabalho para tentar decifrar a bagunça nesse arquivo $HOME/diskdata no seu PC com Linux. Você pode usar debugfs (8) para esse fim, se você acredita que o sistema de arquivos original foi ext3 ou ext4

Os cartões SD são dispositivos frágeis e se desgastam rapidamente. Eu acho que o seu está fisicamente quebrado. Prepare-se para uma perda definitiva de dados.

    
por 01.10.2017 / 07:57