Depois de não conseguir copiar um arquivo maior que 4G para a minha unidade flash USB 8G , eu o formatei como ext3. Enquanto isso estiver funcionando bem para mim até agora, causará problemas se eu quiser usá-lo para copiar arquivos para alguém que não usa Linux.
Em vez disso, estou pensando em formatá-lo como UDF , que espero que seja lido (e possivelmente até escrito) nos três sistemas operacionais mais populares (Windows, MacOS e Linux), sem a necessidade de instalar drivers extras . No entanto, pelo que eu já encontrei na Web, parece haver várias pequenas dicas relacionadas a quais parâmetros são usados para criar o sistema de arquivos, o que pode reduzir a compabilidade (mas a maioria das páginas que encontrei são sobre mídia ótica, não USB flash unidades).
Eu gostaria de saber:
- Qual utilitário devo usar para criar o sistema de arquivos? (Até agora eu encontrei
mkudffs
egenisoimage
, emkudffs
parece a melhor opção.) - Quais parâmetros devo usar com o utilitário escolhido para máxima compabilidade?
- Qual é a compatibilidade com as versões mais comuns desses três sistemas operacionais UDF?
- Usar o UDF é realmente a melhor ideia? Existe outro sistema de arquivos com melhor compatibilidade, sem restrições problemáticas, como o limite de tamanho do arquivo FAT32 4G, e sem a necessidade de instalar drivers especiais em todos os computadores que tocam nele?
Respostas:
Primeiro, zerei completamente a unidade antes de criar o sistema de arquivos UDF com:
Isso é para evitar quaisquer superblocos restantes ou outros metadados que possam confundir a detecção do tipo de sistema de arquivos dos sistemas operacionais (pelo menos, zerar o primeiro setor para aniquilar a tabela de partição; os primeiros setores não são usados pelo UDF e um restante) tabela de partição pode realmente confundir as coisas). Você também pode usar a
count=1
opção no comando dd, para zerar mais rapidamente apenas os primeiros 512 bytes da unidade (onde o MBR geralmente está localizado), embora isso não tenha sido testado.Para criar o sistema de arquivos, o comando que usei foi:
mkudffs
O comando ficará disponível nas distribuições Linux baseadas no Debian (como o Ubuntu) após a instalação de umudftools
pacote:O tamanho do bloco padrão
mkudffs
é 2048, o que é errado para uma unidade flash USB (que usa setores de 512 bytes). Como o tamanho do bloco é usado para encontrar os metadados do sistema de arquivos, o uso de um tamanho de bloco incorreto pode fazer com que ele não seja reconhecido como um sistema de arquivos UDF (já que a âncora não estará onde o driver do sistema de arquivos está esperando). Observe que amkudffs
página de manual está errada; 512 é um valor válido para o tamanho do bloco (e o código o aceita explicitamente).Eu também usei a unidade inteira em vez de uma partição; isso deve ser mais compatível.
O resultado dos meus testes até agora:
bs=512
opçãomount
, porque usou incorretamente 2048 em vez do tamanho do setor do dispositivo (corrigido no commit 1197e4d ).Embora ainda não tenha tentado criar um arquivo maior que 4G, não vejo razão para que ele não funcione.
Dado que funcionou perfeitamente em todos os sistemas operacionais recentes (apenas é necessário montar manualmente no Linux, que não será mais necessário assim que o Ubuntu 9.10 e Fedora 12 forem lançados), e funcionou somente leitura no Windows XP (o que foi uma surpresa para mim; esperava que não reconhecesse o sistema de arquivos), usar UDF em vez de FAT32 ou NTFS em grandes unidades flash USB parece uma boa idéia.
fonte
dd if=/dev/zero of=/dev/sdb bs=1M
, o que a deixa sem nenhuma tabela de partição.CesarB fez um ótimo trabalho ao chegar ao cerne da questão. Uma coisa que não pode ser sublinhada o suficiente é a importância de usar o tamanho de bloco adequado ao formatar o UDF.
Inspirado no post de CesarB (e em outras pesquisas / testes), escrevi um script para automatizar o processo de formatação em UDF - usando o tamanho do setor detectado corretamente. Veja format-udf no GitHub . Recursos notáveis:
Por causa do último ponto, esse script que escrevi não pode ser usado no Windows. No entanto, o script será executado no OS X e Linux. Depois disso, o Windows poderá detectar magicamente a unidade UDF recém-formatada.
Para responder diretamente às perguntas postadas, format-udf irá:
fonte
hdparm
chama de "Tamanho do setor lógico" é a unidade de endereçamento usada pelo protocolo SATA, enquanto "Tamanho do setor físico" é uma coisa interna da unidade. Para mim, faz mais sentido que os "blocos físicos" na especificação UDF realmente signifiquem "blocos lógicos" do Linux.mkudffs
diretamente; Quero dizer adicionando uma nova--best-block-size
opção paramkudffs
.Eu me lembro de ter feito isso, o problema que encontrei é que a versão linux que eu havia montado era somente leitura, pois o driver não havia sido construído para r / w. Funcionou no Windows, e acho que Mac.
Sim, é difícil encontrar uma boa solução. Por um tempo, tive uma unidade externa com uma partição fat32 que possuía drivers para win e mac, uma partição mac e uma grande partição ext3. Funcionou, mas significava instalar drivers. O truque foi que ele também era inicializável em um mac (fw e usb), você precisa deixar espaço e fazer algumas anotações e adicionar partições via linha de comando e também uma tabela de partição mac.
O mundo precisa de um sistema de arquivos gratuito e utilizável por tudo. O ZFS seria uma boa escolha. :-)
fonte
Pieter Wuille escreveu uma ferramenta para particionar e formatar um disco para criar um layout UDF que seja compatível com Windows (> = Vista, somente leitura para XP), MacOS X 10.5, Linux 2.6.30+:
Alternativamente:
fonte
Para obter compatibilidade máxima, você deve usar mkudffs do projeto udftools pelo menos na versão 2.0. Não são necessários parâmetros especiais, tudo é detectado automaticamente.
Existem três grandes restrições:
Os sistemas Microsoft Windows não reconhecem o disco rígido não removível se não tiver a tabela de partição MBR ou GPT.
Os sistemas Apple Mac OS X não reconhecem o sistema de arquivos UDF no disco particionado.
Provavelmente, todos os sistemas (exceto os kernels recentes do Linux) não reconhecem o sistema de arquivos UDF se o tamanho do bloco UDF não corresponder ao tamanho do setor lógico do disco.
Os mkudffs de ferramentas desde a versão 2.0 lidam com todas as 3 restrições. Ao formatar discos rígidos não removíveis, ele cria uma tabela MBR "falsa" que inicia no setor 0 e abrange todo o disco. Portanto, o sistema de arquivos UDF pode ser lido da primeira partição (necessária para o Microsoft Windows) ou do disco inteiro (necessário para o Apple Mac OS X). Veja a página do manual mkudffs 2.0 para mais detalhes.
fonte
NTFS, com o NTFS-3G, você pode escrever usando o Linux e dar uma olhada em http://macntfs-3g.blogspot.com/ no seu Mac.
fonte
Existem drivers para Windows (e Mac) que podem acessar partições EXT3, para que você possa formatá-lo para EXT3 e usá-lo (com drivers) em qualquer lugar. Outra maneira seria usar um arquivador para armazenar o arquivo grande em dois ou mais arquivos de até 4 GB cada. Dessa forma, você pode usar o sistema de arquivos FAT32, que é universal. No computador host, é necessário extrair o arquivo morto para usá-lo, mas é uma maneira de fazê-lo sem drivers. Use um arquivador de formato RAR, pois ele funciona no Windows, Linux, Mac, embora eu ache que um formato ZIP também funcione. Mas eu iria com os motoristas. Uma vez instalado, você pode fazer qualquer coisa sem restrições. No PC, usei o Ext2Fsd para acesso completo EXT2, EXT3 e EXT4 e o Macdrive para acesso completo no formato MacOS. Certamente existem ferramentas semelhantes para Linux e MacOS, para acessar totalmente partições NTFS etc. Se você só precisa de acesso de leitura, não precisa de drivers, o Linux e o MacOS suportam a leitura de partições NTFS, então formate o USB como NTFS! Se todos esses computadores estiverem na mesma rede, as coisas serão mais fáceis! Faça o USB no formato e compartilhe-o na rede. Outros computadores não devem ter problemas para acessá-lo!
fonte