Como formatar uma unidade flash desonesta? (GParted tenta tocar o rodapé do sistema de arquivos além da capacidade real e congela indefinidamente) [fechado]

1

Em um cartão USB ou SD falso, do tipo limbo, todos os setores a partir de uma posição específica na unidade estão indisponíveis (apenas zeros ou apenas uns ou resposta do setor ilegível).

Uma unidade flash pode se indicar como 256 GB, mas na verdade tem apenas 16 GB. Qualquer coisa escrita além do limiar de 16GB entra em um buraco negro digital (daí em <>). Ao tentar acessar esses dados, uma dessas coisas pode acontecer:

  • O dispositivo retorna setor em branco somente com 00000000 (0x00) bytes.
  • O dispositivo retorna setor apenas com 11111111 (0xFF) bytes.
  • O dispositivo sinaliza ao computador que o setor está danificado.
  • O dispositivo congela por um período de tempo indefinido e nunca retorna a solicitação de leitura.
  • O dispositivo retorna dados aleatórios (tipo muito raro)

No pen drive que eu possuo, o primeiro é o caso. Ele retorna 00 00 00 00 … em todos os 512 bytes de setores em todos os setores dentro da área limbo , o que está além da capacidade real de dados.

Usar mkfs ou gparted em um USB falso (para fins de teste) para criar sistemas de arquivos é congelado por um tempo indefinido.

O Windows e o Android formatam com êxito o cartão SD com uma capacidade total que requer menos de meio minuto. Isso só é possível quando você não toca em rodapés do sistema de arquivos que estão além da capacidade real. Apenas modificando cabeçalhos.
GParted e mkfs congelam indefinidamente (até remover o drive do PC) e deixam um sistema de arquivos indicado com o tipo desconhecido no GParted.

Como posso formatar uma unidade flash não autorizada no GParted para a capacidade total alegada enquanto apenas escrevo cabeçalhos do sistema de arquivos?

Isso faria com que o GParted não tocasse na área do limbo que causa o congelamento indefinido (para não confundir com o quarto tipo listado de retornos setoriais em drives desonestos. É a reação do GParted).

O que estou tentando alcançar:

  • Testando como o Linux reage a swapon em uma unidade flash falsa. Como isso é muito trivial para o StackExchange, decidi testá-lo pessoalmente.
  • Teste de sistemas de arquivos diferentes (ext2, ext3, ext4, FAT16, FAT32, exFAT, f2fs, xfs, zfs, ntfs) em um celular Android: Eu gostaria de tentar gravar vídeo usando um celular Android, além da capacidade real, para ver como ela reage.
por neverMind9 05.11.2018 / 04:03

1 resposta

1

Eu meio que duvido que isso vá funcionar. Mas há um método robusto que deve fazer o que você está pedindo. Se isso não funcionar, não há opção que você possa passar para mkfs para fazer algo melhor.

  1. Crie um arquivo (esparso) em seu sistema de arquivos principal que tenha o mesmo tamanho do dispositivo. Por exemplo. use truncate --reference=/dev/sdX disk.img
  2. Particione o arquivo (suponho que você queira isso - se você não o fizer, ignore-o e use /dev/loopN em vez de /dev/loopNp1 ). Você pode executar fdisk disk.img ou dd if=/dev/sdX of=disk.img conv=notrunc bs=1M count=1 para copiar qualquer partição que esteja no dispositivo.
  3. losetup -f disk.img - isso criará um dispositivo de loop e imprimirá seu nome.
  4. mkfs.FOO /dev/loopNp1 - cria o sistema de arquivos
  5. dd if=/dev/loopN of=/dev/sdX bs=1k count=16M conv=sparse - copie o primeiro 15G (16 * 1024 * 1024 * 1024) da imagem do disco para o dispositivo. Você pode ajustar isso conforme necessário. conv=sparse ignorará os blocos de escrita, que são todos zeros.
por 05.11.2018 / 17:37