Eu tenho uma unidade flash nova, conectada a um Raspberry Pi. Quero gravar coisas na unidade e lê-las facilmente no macOS, Windows ou outras distribuições Linux.
Como devo formatar esta unidade, usando ferramentas cli, para ser um grande sistema de arquivos que todo sistema possa usar facilmente?
Podemos ignorar problemas para garantir que todos os dados sejam gravados na unidade / desmontagem limpa por enquanto, mas pode ser bom tocar nisso. Pontos de bônus para uma resposta resistente à desconexão a quente.
Embora eu tenha usado com sucesso unidades sem uma tabela de partição em unidades apenas Linux no passado, entendo que uma tabela de partição é útil para facilitar o uso em outros sistemas operacionais.
As partições padrão do BIOS/MBR ( fdisk
/ cfdisk
) devem ser usadas? Ou queremos formatar com GPT?
Presumo que fazer uma partição "primária" com o tamanho máximo fdisk
seja a abordagem padrão; no entanto, qual "tipo de partição" deve ser usado? Não é o padrão, 83
certamente?
Quanto ao sistema de arquivos, FAT32 ( mkfs.fat
[certo?] ), VFAT ( mkfs.vfat
) ou outra coisa é o "padrão"? A Microsoft está pressionando o exFAT( mkfs.exfat
) para unidades maiores (minha unidade tem 128 GB) agora, certo? No entanto, ouvi dizer que o exFAT não é suportado pelo kernel em algumas distribuições Linux (no meu caso Raspbian). Seria bom não precisar usar o FUSE para montar, o que eu entendo é para exFAT.
Provavelmente já está formatado de maneira padrão (FAT32 para unidades pequenas, exFAT para unidades grandes).
Enquanto os discos internos geralmente vêm completamente em branco (devido a uma grande variedade de layouts de partição), as mídias removíveis são vendidas como utilizáveis prontas para uso, já que praticamente todo mundo quer uma única partição gigante de qualquer maneira.
Pequenas mídias removíveis tradicionalmente usam MBR, ou às vezes até mesmo nenhum particionamento (também conhecido como modo "superfloppy" - sempre o caso de disquetes, mas também costumava ser comum para pendrives).
Muitos sistemas operacionais de uso geral reconhecerão GPT em pendrives USB sem problemas (o Windows Vista e posteriores têm suporte GPT em x86), mas muitos dispositivos incorporados (TVs, consoles de jogos etc.) .
Observe que o Linux
fdisk
oferece suporte ao GPT a partir de 2010, embora tenha demorado mais alguns anos para que esse suporte chegasse ao Debian.Atenha-se aos tipos usuais de partição do Windows, como
0c
FAT32 e07
exFAT ou NTFS.Em caso de dúvida, formate-o no Windows e apenas verifique a aparência da tabela de partições resultante.
mkfs.fat
é a ferramenta padrão e é a mesma coisa quemkfs.vfat
apenas com um novo nome. "VFAT" no Linux significa apenas "FAT12/16/32 com suporte a nome de arquivo longo".Portanto, você pode usar qualquer um (ou até mesmo
mkdosfs
o que é novamente a mesma ferramenta), você terminará com o mesmo tipo de sistema de arquivos - para qualquer partição grande, será FAT32. Será compatível com praticamente tudo , exceto o antigo MS-DOS .(Existe também uma ferramenta de formato FAT no GNU mtools , mas ela é destinada a disquetes FAT12, usa parâmetros incomuns como um tamanho de diretório raiz muito menor e é improvável que forneça bons resultados para pendrives USB.)
Atualmente, o FUSE é necessário para o exFAT, mas é provável que isso mude em breve (um driver já está
staging/
disponível para a versão 5.4 e um melhor poderá substituí-lo em breve). No entanto, o driver FUSE funciona bem e você não precisa de nenhum comando especial para usá-lo: é o mesmomount -t exfat
, oumount
o libblkid o reconhecerá como exFAT, independentemente do driver.O mesmo vale para o NTFS: o kernel tem um driver, mas o NTFS-3g baseado em FUSE funciona um pouco melhor e também é perfeito (assumindo o controle
mount -t ntfs
).umount
sempre fará a coisa certa.O driver Linux FAT aceita a
flush
opção de montagem que tentará sincronizar as alterações sempre que um arquivo for fechado após a gravação, o que - como no Windows - deve permitir que você desconecte a unidade assim que ela ficar ociosa. (Embora isso ainda deixe o sinalizador "sujo" definido no sistema de arquivos em qualquer caso.)