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!