Hoje eu detonei uma antiga unidade flash USB3 de 8 GB em uma máquina Linux com:
dd if=/dev/random of=/dev/sdb
então coloquei em um pc windows, ele me pediu para formatá-lo, fiz uma formatação estendida com valores padrão como tamanho de bloco 4k, fat32 e assim por diante, copiei alguns arquivos que precisava e coloquei na minha nova máquina instalada com debian 12 e isso é o que o fdisk diz:
Disk /dev/sdb: 7.32 GiB, 7864320000 bytes, 15360000 sectors
Disk model: ****************
Units: sector of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minum/optimal): 512 bytes/ 512 bytes
Disklabel type: dos
Disk identifier: 0x********
Device Boot Start End Sectors Size Id Type
/dev/sdb1 778135908 1919645538 1141509631 544.3G 72 unknown
/dev/sdb2 168689522 2104717761 1936028240 923.2G 65 Novell Netware 386
/dev/sdb3 1869881465 3805909656 1936028192 923.2G 79 unknown
/dev/sdb4 2885681152 2885736650 55499 27.1M d unknown
Partition table entries are not in disk order.
Por que existem 4 partições na unidade USB, sendo 2 delas com cerca de 900 gigas e uma de 500 em uma unidade USB de 8 GB? É um making of da máquina windows? Durante a formatação no Windows solicitei explicitamente um formato estendido (zerofilling).
Tentei montar a unidade com:
mount -t vfat /dev/sdb /mnt/flashdrive
e o conteúdo está montado corretamente, os arquivos que copiei do windows pc estão lá.
Devo considerar a unidade danificada ou sequestrada por algum tipo de vírus? Esta unidade pode ser confiável ou devo considerar isso um problema de segurança? Poderia ser um bug do fdisk?
Obrigado
Achei que poderia ser algo relacionado ao fato de ter escrito dados aleatórios e talvez esses dados aleatórios no setor mbr pudessem ter feito com que a unidade aparecesse com múltiplas partições, mas não é o caso. Eu tenho 3 pen drives idênticos e repeti o mesmo procedimento desta vez dd if=/dev/zero
em vez de aleatório e obtive o mesmo resultado.
Para mim, o Windows formata a unidade de uma maneira estranha, tornando a unidade uma unidade flash fat32 funcional, mas deixando o fdisk e o gdisk enlouquecidos.
Tentei colocar a unidade dentro do Acronis Disk Director e ela os detectou corretamente como unidades flash fat32, no entanto, como o Acronis Disk Director ainda é uma distribuição Linux, alternando no console e executando fdisk -l, o mesmo esquema de partição estranho acontece. Embora a GUI do Acronis detecte tudo corretamente, o fdisk do console não. Acronis GUI, no entanto, mesmo que permita o formato da partição principal, não permite que o disco seja limpo, crie partições adicionais ou algo parecido, também o chama de "Super Floppy" ...
Poderia ser um problema causado pela forma como o fabricante criou a unidade USB?
EDIT: adicionei saída gdisk
gdisk -l /dev/sdb
GPT fdisk (gdisk) version 1.0.9
Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present
***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory.
***************************************************************
Exact type not match not found for type code 7200; assigning type code for
'Linux filesystem'
Exact type not match not found for type code 6500; assigning type code for
'Linux filesystem'
Exact type not match not found for type code 7900; assigning type code for
'Linux filesystem'
Exact type not match not found for type code 0D00; assigning type code for
'Linux filesystem'
Warning! Secondary partition table overlaps the last partition by
3790549690 blocks!
You will need to delete this partition or resize it in another utility.
Model: DataTraveler 3.0
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): *************************
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 15359966
Partitions will be aligned on 1-sector boundaries
Total free space is 15359933 sectors (7.3 GiB)
Number Start (sector) End(sector) Size Code Name
1 778135908 1919645538 544.3 GiB 8300 Linux filesystem
2 168689522 2104717761 923.2 GiB 8300 Linux filesystem
3 1869881465 3805909656 923.2 GiB 8300 Linux filesystem
4 2885681152 2885736650 21.7 MiB 8300 Linux filesystem
Não conheço o formato estendido do Windows, mas você disse que
mount -t vfat /dev/sdb /mnt/flashdrive
está montado corretamente dá uma dica útil.Com esse comando, você está montando a unidade inteira, não uma partição dela (
/dev/sdb1
,,/dev/sdb2
etc.). Isso significa que o Windows não criou uma tabela de partição e usou todos os setores, do primeiro ao último, como área VFAT.Se não houver tabela de partições, então o que
fdisk
(ougdisk
) é exibido não é relevante.Não, a menos que você tenha salvo a "tabela de partição" com
fdisk
(ougdisk
).Não.
Nada na sua pergunta sugere que não seja confiável.
Não.
fdisk
é uma ferramenta para manipular uma tabela de partições. O que ele exibe é qual seria a tabela de partições se houvesse uma, mas não há nenhuma. É por isso que é importante que você não modifique/salve a tabela de partições comfdisk
.Não, é a forma como o disco foi formatado.
Um superfloppy (uma unidade com um sistema de arquivos em todo o dispositivo, sem uma tabela de partição) ainda contém o fragmento que de outra forma define uma tabela de partição DOS.
O objetivo de
fdisk
ougdisk
é trabalhar com tabelas de partição. Se não houver, nenhuma das ferramentas sabe disso antecipadamente e tenta ao máximo interpretar os dados como uma tabela de partição. Em alguns casos eles podem dizer com certeza que não existe tabela de partição (por exemplo, quando há todos zeros), em muitos casos não podem.A questão é que até dados aleatórios podem ser interpretados como uma tabela de partição (mais ou menos insana). Isto é o que você vê no seu dispositivo. Uma configuração semelhante está nesta questão: O Windows não monta superfloppy USB NTFS ; você pode obter algumas dicas da minha resposta lá.
Ver tabelas de partições malucas é uma das razões para preferir criar uma tabela de partições mesmo para um único sistema de arquivos . Parece que o seu Windows sabia melhor. O Windows e apenas o Windows são os culpados. O disco em si está bom (ou melhor, não há evidências de que esteja danificado).
Contanto que você possa montar o sistema de arquivos em todos os sistemas que usa, não há problema. Não sei dizer se o Windows nunca será enganado pela "bagunça" que fez, mas no Linux você sempre pode montar explicitamente
/dev/sdb
e simplesmente não usar/dev/sdb1
e tal, se aparecerem.Mas se você quiser tornar a configuração mais sensata, comece de novo. Use
dd if=/dev/zero of=/dev/sdb bs=512 count=1
, entãofdisk /dev/sdb
e crie uma tabela de partição dos com exatamente uma partição primária (os valores padrão dos setores inicial e final devem ser adequados), seu tipo deve ser0C
(W95 FAT32 (LBA)
). Deixe a ferramenta escrever a tabela de partições. Em seguida, crie um sistema de arquivos FAT32sdb1
(no Linux; ou deixe o Windows fazer isso, espero que respeite a nova tabela de partições).