Slot para cartão SD não funciona

0

Maneira alternativa de ganhar a recompensa: Mostre-me como armazenar um sistema de arquivos como o ext4 (um FS que pode armazenar arquivos grandes, eu realmente não preciso de todas as coisas boas que o ext4 fornece neste caso de uso) em muitos arquivos pequenos (< 4 GiB) armazenados em uma partição formatada em FAT (em funcionamento).

Eu tenho um cartão SD (anúncios como 64 GB, mas diferente da mídia de armazenamento usual tem menos do que isso (tem 63'416'827'904 Byte)) e um slot SD no meu laptop (um Acer Aspire VN7-591G -70CY). O cartão SD funcionou com meu laptop anterior sem problemas e está formatado com o ext4.

eu tentei sudo modprobe -r r852; sudo modprobe -r sdhci_pci; sudo modprobe r852; sudo modprobe sdhci_pci que ajudou os outros mas não fez nada por mim.

O cartão SD funciona com um cartão SD para o adaptador USB. Ao usar este adaptador, o cartão SD é /dev/sdb e a partição única é /dev/sdb1 . Quando coloco no slot do cartão SD, ele é /dev/mmcblk0 e sua partição é /dev/mmcblk0p1 .

Quando eu entro no cartão SD no slot, o nautilus diz:

Error mounting /dev/mmcblk0p1 at /media/christoph/e07d3be4-bd85-4eb2-9205-d6638ab37704: Command-line 'mount -t "ext4" -o "uhelper=udisks2,nodev,nosuid" "/dev/mmcblk0p1" "/media/christoph/e07d3be4-bd85-4eb2-9205-d6638ab37704"' exited with non-zero exit status 32: mount: wrong fs type, bad option, bad superblock on /dev/mmcblk0p1, missing codepage or helper program, or other error

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

A montagem manual resulta praticamente na mesma mensagem de erro:

mount: wrong fs type, bad option, bad superblock on /dev/mmcblk0p1, missing codepage or helper program, or other error

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

Agora, a parte estranha é que dd parece não funcionar em nenhum dos casos. Eu copiei os primeiros 100 MiB de cada /dev/sdb , /dev/sdb1 , /dev/mmcblk0 e /dev/mmcblk0p1 e no início deste dia até consegui somar sha256-somas.

Eles agora não combinam mais, mas são muito semelhantes no modo que, exceto por um pouco no início, consistem quase exclusivamente de zero bytes, embora o cartão SD esteja quase totalmente cheio (e preenchido com dados compactados e criptografados. , então não deve me muitos bytes zero).

Então eu substituí cada instância de 4 bytes zero consecutivos em $mmcblk0 (as cópias que eu fiz via dd são nomeadas exatamente iguais aos dispositivos mas eu mas um cifrão antes do nome para que eles possam ser diferenciados) plain nothingness em um editor hexadecimal e acabou com arquivos sendo apenas 129,4 kB para r$sdb (o 'r' é para 'reduzido' / 'substituído') e 312,7 kB para r$mmcblk0 ao invés de ser 104,9 MB cada.

r$sdb tem um ponto de montagem declarado no começo (e não tenho ideia do porquê). É realmente o ponto de montagem em que o cartão SD foi montado. Em seguida, aparecem aleatoriamente dados parecidos com muitas repetições, seguidos por vários bytes FF, seguidos por nomes reais de arquivos salvos no cartão SD, seguidos por dados um pouco mais aleatórios, mas não muito.

Sobre o primeiro 1600 O byte em r$mmcblk0 é exatamente o mesmo que em r$sdb (isso inclui o ponto de montagem, mesmo que o cartão SD não possa ser montado no slot). Em seguida, aparecem aleatoriamente dados parecidos com muitas repetições, mas com grandes blocos feitos de caracteres imprimíveis, incluindo caminhos de arquivo, seguidos por bytes FF, seguidos por exatamente o mesmo que o final de r$sdb (nomes reais dos arquivos salvos no cartão SD, seguido por um pouco mais de dados aparentemente aleatórios, mas não muito).

Você pode me ajudar a resolver o problema e talvez me diga por que dd gera esses dados estranhos?

Eu descobri como fazer isso funcionar com o FAT. Eu corri apt-get install nfs-common , reiniciei e agora FAT está funcionando. Infelizmente, o FAT é um sistema de arquivos de merda que não suporta muitas coisas e eu preciso arquivar muitos GB em tamanho que não são suportados pelo FAT. Então eu não posso usar o cartão SD com FAT.

Se eu formatar a partição com ext4, o mesmo erro que ocorre anteriormente. Para FAT tudo parece bem.

Existe um comando para que ele funcione também para o ext4?

$ sudo fdisk -l

Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 2D8D2D1D-B17D-4F86-ACD1-743E6B376EFE

Device          Start        End    Sectors   Size Type
/dev/sda1        2048    1230847    1228800   600M Windows recovery environment
/dev/sda2     1230848    1845247     614400   300M EFI System
/dev/sda3     1845248    2107391     262144   128M Microsoft reserved
/dev/sda4  1716043776 1920843775  204800000  97.7G Microsoft basic data
/dev/sda5  1920843776 1953523711   32679936  15.6G Windows recovery environment
/dev/sda6     2107392   36923391   34816000  16.6G Linux swap
/dev/sda7    36923392 1716043775 1679120384 800.7G Linux filesystem

Partition table entries are not in disk order.
Disk /dev/mmcblk0: 59.1 GiB, 63416827904 bytes, 123860992 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: 0xd69abc36

Device         Boot Start       End   Sectors  Size Id Type
/dev/mmcblk0p1       2048 123860991 123858944 59.1G 83 Linux

Disk /dev/mapper/cryptswap1: 16.6 GiB, 17825267712 bytes, 34814976 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

$ lspci
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller (rev 06)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller (rev 06)
00:02.0 VGA compatible controller: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller (rev 06)
00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06)
00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05)
00:16.0 Communication controller: Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1 (rev 04)
00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 (rev 05)
00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 05)
00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #3 (rev d5)
00:1c.3 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #4 (rev d5)
00:1d.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 (rev 05)
00:1f.0 ISA bridge: Intel Corporation HM86 Express LPC Controller (rev 05)
00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 05)
00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller (rev 05)
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 860M] (rev a2)
07:00.0 Network controller: Intel Corporation Wireless 7265 (rev 48)
08:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0c)

Acho que a última parte da saída do dmesg é interessante:

[10106.153215] mmc0: new ultra high speed SDR50 SDXC card at address 59b4
[10106.153349] mmcblk0: mmc0:59b4 SD    59.0 GiB 
[10106.158564]  mmcblk0: unknown partition table
[10109.748018]  mmcblk0: p1
[10110.393758] mmcblk0: error -110 sending stop command, original cmd response 0x900, card status 0x900
[10111.098030] mmcblk0: error -110 sending stop command, original cmd response 0x900, card status 0x900
[10111.862596] mmcblk0: error -110 sending stop command, original cmd response 0x900, card status 0x900
[10111.862610] EXT4-fs (mmcblk0p1): Magic mismatch, very weird!
[10201.953257] mmcblk0: error -110 sending stop command, original cmd response 0x900, card status 0x900
[10202.553754] mmcblk0: error -110 sending stop command, original cmd response 0x900, card status 0x900
[10202.555661] EXT4-fs (mmcblk0p1): ext4_check_descriptors: Checksum for group 48 failed (26727!=0)
[10202.555664] EXT4-fs (mmcblk0p1): group descriptors corrupted!
    
por UTF-8 30.06.2015 / 22:03

3 respostas

1

Na minha opinião, o seu leitor de cartão SD está falhando . Existe uma probabilidade muito alta de perda de dados. O FAT está funcionando provavelmente porque tem menos recursos de verificação de erros, mas isso não significa nenhum erro! Use o FAT com extrema cautela. Faça backups se você estiver armazenando dados importantes. Ou melhor, não armazene dados importantes ou simplesmente use o leitor de cartão USB. Dito isto,

Tente reparar seu cartão SD, que é um procedimento padrão:

sudo e2fsck -f -C 0 /dev/mmcblk0p1

e2fsck é o utilitário linux para reparar sistemas de arquivos baseados em ext. De qualquer forma, não espero que funcione.

Assim, como outra resposta sugere, o leitor de cartões pode não suportar uma unidade tão grande. Mas o fato de que o FAT funciona indica que é possível, com a possibilidade adicional de se estragar.

Estas são coisas que você pode tentar, mas eu não sei se elas funcionarão: Particione-o em duas ou até quatro unidades se elas se adequarem a você, e então vá em frente com ext4. Ou que tal criar uma partição menor e deixar o restante como espaço livre? Você poderia tentar.

Por fim, como o FAT funciona, (lembre-se, provavelmente porque faz pouca verificação de erros) o exFAT pode atender aos seus requisitos de armazenamento de tamanhos de arquivo maiores que 4 GB. Veja como fazer aqui .

    
por daltonfury42 04.07.2015 / 21:50
0
Eu acredito que o problema é causado pelo fato de que este leitor de cartão SD em particular é incapaz de ler cartões SD que têm uma capacidade de 64 GB, enquanto o outro em seu laptop anterior, aparentemente, pode ler esses cartões. Nem todos os leitores de cartões possuem as mesmas especificações. Quando você compra um leitor de cartão, é indicado na documentação qual é a maior capacidade que o leitor pode suportar. Quando ele já estiver em um laptop, você terá que descobrir o que ele pode suportar. Atualmente, o limite é geralmente de 32 GB. Infelizmente você não pode alterar essa propriedade.

    
por wie5Ooma 01.07.2015 / 01:34
0

Considerando as novas informações adicionadas à pergunta, tenho uma abordagem diferente para você.

No formato GParted, a partição no cartão é ext4. Em seguida, crie um ponto de montagem. Vamos supor que isso seja sd. Então você faz:
mkdir -p /media/sd .
Então, para montá-lo você faz:
mount -t ext4 -O noatime,nodiratime /dev/mmcblk0p1 /media/sd .
O segundo comando acima deve estar em uma linha. Provavelmente você tem que prefixar esses comandos com o sudo. Você também pode usar os sinalizadores no segundo comando em / etc / fstab.

    
por wie5Ooma 04.07.2015 / 00:12