Usando UDF em uma unidade flash USB

74

Depois de não conseguir copiar um arquivo maior que 4G para a minha unidade flash USB do 8G, eu o formatei como ext3. Enquanto isso está funcionando bem para mim até agora, isso causará problemas se eu quiser usá-lo para copiar arquivos para alguém que não usa Linux.

Estou pensando em formatá-lo como UDF , o que, espero, permita que ele seja lido (e possivelmente até mesmo escrito) nos três sistemas operacionais mais populares (Windows, MacOS e Linux), sem ter que instalar nenhum driver extra . No entanto, pelo que eu 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 flash USB). drives).

Eu gostaria de saber:

  • Qual utilitário devo usar para criar o sistema de arquivos? (Até agora eu encontrei mkudffs e genisoimage e mkudffs parece a melhor opção.)
  • Quais parâmetros devo usar com o utilitário escolhido para obter máxima compatibilidade?
  • Como é compatível com as versões mais comuns desses três sistemas operacionais UDF?
  • O uso de UDF é realmente a melhor ideia? Existe outro sistema de arquivos que teria melhor compatibilidade, sem restrições problemáticas, como o limite de tamanho de arquivo FAT32 4G, e sem ter que instalar drivers especiais em cada computador que o toca?
por CesarB 12.09.2009 / 01:47

7 respostas

55

Primeiro, zerei completamente a unidade antes de criar o sistema de arquivos UDF com:

dd if=/dev/zero of=/dev/sdx bs=512

Isso evita superblocos 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 obliterar a tabela de partição; os primeiros setores não são usados por UDF, e uma tabela de partição restante poderia realmente confundir as coisas). Você também pode usar a opção count=1 no comando dd, para liberar 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 --media-type=hd --blocksize=512 /dev/sdx
O comando

mkudffs ficará disponível em distribuições Linux baseadas no Debian (como o Ubuntu) depois de instalar o udftools package:

sudo apt-get install udftools

O tamanho de bloco padrão para 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, usar 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 a página mkudffs man 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:

  • Linux com o kernel mais recente (2.6.31, do Ubuntu 9.10): funciona.
  • Linux com um kernel antigo: precisa da opção bs=512 para mount , porque ela usou 2048 incorretamente em vez do tamanho do setor do dispositivo (corrigido em commit 1197e4d ).
  • Windows Vista: funciona.
  • Um novo Mac: funciona.
  • Windows XP: pode ler bem, mas dá "acesso negado" ao tentar escrever; também parece pensar que o disco está cheio.

Embora eu não tenha até agora 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 (tendo apenas que ser montado manualmente no Linux, que não será mais necessário assim que o Ubuntu 9.10 e o Fedora 12 estiverem fora), e funcionou somente leitura no Windows XP foi uma surpresa para mim, eu estava esperando para não reconhecer o sistema de arquivos em tudo), usando UDF em vez de FAT32 ou NTFS em grandes unidades flash USB parece uma boa idéia.

    
por 28.09.2009 / 18:12
7

CesarB fez um ótimo trabalho para chegar ao cerne da questão. Uma coisa que não pode ser ressaltada é o quão importante é usar o tamanho de bloco adequado ao formatar UDF.

Inspirado no post de CesarB (e em minhas outras pesquisas / testes), escrevi um script para automatizar o processo de formatação em UDF - usando o tamanho do setor corretamente detectado. Veja format-udf no GitHub . Recursos notáveis:

  • Formata uma unidade de bloco (disco rígido ou unidade flash) no formato de disco universal (UDF)
    • Revisão UDF 2.01 usada para compatibilidade máxima
    • Os primeiros 4096 setores foram zerados para apagar qualquer MBR existente (necessário para a detecção adequada de UDF)
  • O sistema de arquivos resultante pode ser lido / gravado em várias famílias de sistemas operacionais (Windows, OS X e Linux)
  • é executado em qualquer SO que tenha um ambiente de Bash

Por causa do último ponto, esse script que eu escrevi não pode ser usado no Windows. No entanto, o script será executado no OS X e no Linux. Depois de fazer isso, o Windows deve poder detectar magicamente a unidade UDF recém-formatada.

Para responder diretamente às perguntas postadas, o format-udf irá:

  • escolha a ferramenta apropriada para formatação com base no sistema operacional e no ambiente
  • detecta e preenche automaticamente todos os parâmetros necessários para formatar
  • maximiza a compatibilidade do sistema operacional (consulte a página do GitHub para ver o gráfico de compatibilidade)
  • produz o conjunto máximo de recursos (e limitações mínimas) que o usuário está procurando
por 29.08.2014 / 16:25
3

Eu pareço lembrar de ter feito isso, o problema que encontrei é que a versão linux que eu tinha montada era somente leitura, já que o driver não tinha sido construído para r / w. Funcionou no windows e acho que o mac.

Sim, uma boa solução é difícil de encontrar. Por um tempo eu tive uma unidade externa com uma partição fat32 que tinha drivers para win e mac, uma partição mac e uma grande partição ext3. Funcionou, mas significava instalar drivers. O truque foi que também era inicializável em um mac (fw & usb), você tem que deixar espaço e fazer algumas anotações, então você pode adicionar partições através da linha de comando e também de uma tabela de partição do mac.

O mundo precisa de um sistema de arquivos gratuito, utilizável por tudo. O ZFS seria uma boa escolha. : -)

    
por 12.09.2009 / 04:19
2

Pieter Wuille escreveu uma ferramenta para particionar e formatar um disco para fazer um layout UDF que será compatível com o Windows (> =, somente para o XP), MacOS X 10.5, Linux 2.6.30 +:

  • Explicação
  • Link direto para o script Perl que usa mkudffs de udftools
por 02.06.2014 / 17:29
1

Para alcançar a máxima compatibilidade, você deve usar o mkudffs do projeto udftools pelo menos na versão 2.0. Nenhum parâmetro especial é necessário, tudo é autodetectado.

Existem 3 grandes restrições:

  1. Os sistemas Microsoft Windows não reconhecem o disco rígido não removível se ele não tiver a tabela de partições MBR ou GPT.

  2. Os sistemas Apple Mac OS X não reconhecem o sistema de arquivos UDF no disco particionado.

  3. 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 da ferramenta 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 começa no setor 0 e se estende por todo o disco. Portanto, o sistema de arquivos UDF pode ser lido a partir da primeira partição (necessária para o Microsoft Windows) ou do disco inteiro (necessário para o Apple Mac OS X). Veja mkudffs 2.0 man page para mais detalhes.

    
por 13.01.2018 / 14:22
0

NTFS, com o NTFS-3G, você pode escrever nele usando o Linux e dar uma olhada no link para o seu Mac.

    
por 12.09.2009 / 03:46
-1

Existem drivers para Windows (e Mac) que podem acessar partições EXT3, para que você possa formatá-lo em EXT3 e usá-lo (com drivers) em qualquer lugar. Outra maneira seria usar um arquivista para armazenar o arquivo grande em dois ou mais arquivos de até 4GB cada. Desta forma, você pode usar o sistema de arquivos FAT32, que é universal. No computador host, você precisa extrair o arquivo para usá-lo, mas é uma maneira de fazer isso 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 drivers. Uma vez instalado, você pode fazer qualquer coisa sem restrições. No PC eu tenho usado Ext2Fsd para acesso EXT2, EXT3 e EXT4 completo e Macdrive para acesso ao formato MacOS completo. Certamente existem ferramentas similares para Linux e MacOS, bem como para acessar totalmente partições NTFS, etc. Se você precisa apenas de acesso de leitura, você não precisa de drivers, Linux e MacOS suportam leitura de partições NTFS, então formate o USB como NTFS! Se todos esses computadores estiverem na mesma rede, as coisas ficarão mais fáceis! Faça o formato USB e compartilhe-o na rede. Outros computadores não devem ter problemas em acessá-lo!

    
por 24.02.2013 / 00:58