Criando imagem UDF no Linux

15

É embaraçoso imaginar que não haja ferramentas inteligentes no Linux para criar imagens UDF, semelhantes a makeisofs, mas ainda não encontrei nenhuma. A ferramenta genisoimagefunciona para criar imagens de disco de vídeo, mas não há equivalente para dados gerais. O conjunto de ferramentas do Linux é realmente tão deficiente quando se trata de ferramentas de disco óptico?

Eu já vi isso e a resposta aceita simplesmente não é suficiente.

Vetor Gorgoth
fonte

Respostas:

9

linux-udf

Parece ser o projeto que você está procurando, projeto linux-udf . O projeto é mencionado no arquivo udf.txt do kernel do Linux .

Olhando pelo site do sourceforge, o download é chamado udftools. Pesquisando no repositório de pacotes do meu Fedora 19, encontrei esse pacote exato.

$ yum search udf | grep "^udf"
udftools.x86_64 : Linux UDF Filesystem userspace utilities
udftools-debuginfo.x86_64 : Debug information for package udftools

Conteúdo do RPM.

$ rpm -ql udftools 
/usr/bin/cdrwtool
/usr/bin/mkudffs
/usr/bin/pktsetup
/usr/bin/udffsck
/usr/bin/wrudf
/usr/share/doc/udftools-1.0.0b3
/usr/share/doc/udftools-1.0.0b3/AUTHORS
/usr/share/doc/udftools-1.0.0b3/COPYING
/usr/share/doc/udftools-1.0.0b3/ChangeLog
/usr/share/man/man1/cdrwtool.1.gz
/usr/share/man/man8/mkudffs.8.gz
/usr/share/man/man8/pktsetup.8.gz

Examinando as ferramentas listadas acima.

cdrwtool

O comando cdwrtool pode executar determinadas ações em um dispositivo CD-R, CD-RW ou DVD-R. Principalmente, eles estão apagando a mídia, formatando-a para uso com o dispositivo packet-cd e aplicando um sistema de arquivos UDF.

mkudffs

mkudffs é usado para criar um sistema de arquivos UDF em um dispositivo (geralmente um disco). device é o arquivo especial correspondente ao dispositivo (por exemplo, / dev / hdX). blocks-count é o número de blocos no dispositivo. Se omitido, o mkudffs calcula automaticamente o tamanho do sistema de arquivos.

pktsetup

O Pktsetup é usado para associar dispositivos de pacote a dispositivos de bloco de CD ou DVD, para que o dispositivo de pacote possa ser montado e potencialmente usado como um sistema de arquivos de leitura / gravação. Isso requer suporte do kernel para o dispositivo de pacote e o sistema de arquivos UDF.

  See: http://packet-cd.sourceforge.net/ ⟨⟩

Formatando um DVD UDF

Este tutorial mostra como você pode formatar um DVD usando UDF, intitulado: Como formatar um DVD com UDF .

Exemplo

$ sudo mkudffs --media-type=dvd /dev/dvd
trying to change type of multiple extents

$ sudo dvd+rw-format /dev/dvd
* DVD±RW/-RAM format utility by , version 6.1.
* 4.7GB DVD+RW media detected.
* formatting 9.5\

$ sudo mkudffs /dev/dvd
start=0, blocks=16, type=RESERVED 
start=16, blocks=3, type=VRS 
start=19, blocks=237, type=USPACE 
start=256, blocks=1, type=ANCHOR 
start=257, blocks=16, type=PVDS 
start=273, blocks=1, type=LVID 
start=274, blocks=2294573, type=PSPACE 
start=2294847, blocks=1, type=ANCHOR 
start=2294848, blocks=239, type=USPACE 
start=2295087, blocks=16, type=RVDS 
start=2295103, blocks=1, type=ANCHOR 

Determinar o tipo de mídia

$ sudo dvd+rw-mediainfo /dev/dvd

Fazendo um ISO

Eu acho que você está dispensando muito rapidamente genisoimage. Se você procurar na página do manual, existe esta opção:

-udf   Include UDF filesystem support in the generated filesystem image.  
       UDF support is currently in alpha status and for this reason, it is 
       not possible to create UDF-only images.  UDF data structures are 
       currently coupled to  the  Joliet  structures,  so  there are many 
       pitfalls with the current implementation. There is no UID/GID 
       support, there is no POSIX permission support, there is no support 
       for symlinks.  Note that UDF wastes the space from sector ~20 to 
       sector 256 at  the beginning of the disc in addition to the space 
       needed for real UDF data structures.

Exemplo

$ genisoimage -udf -o image.iso R/
I: -input-charset not specified, using utf-8 (detected in locale settings)
Using SPLIT000.HTM;1 for  R/x86_64-redhat-linux-gnu-library/2.13/plyr/html/splitter_a.html (splitter_d.html)
Using LIST_000.HTM;1 for  R/x86_64-redhat-linux-gnu-library/2.13/plyr/html/list_to_vector.html (list_to_dataframe.html)
Using INDEX000.HTM;1 for  R/x86_64-redhat-linux-gnu-library/2.13/plyr/html/indexed_array.html (indexed_df.html)
...
...
Using TEST_002.R;1 for  R/x86_64-redhat-linux-gnu-library/2.13/plyr/tests/test-split-labels.r (test-split-data-frame.r)
Total translation table size: 0
Total rockridge attributes bytes: 0
Total directory bytes: 24576
Path table size(bytes): 134
Max brk space used 43000
1141 extents written (2 MB)

Agora, se verificarmos o .isoarquivo resultante .

$ file im.iso 
image.iso: # UDF filesystem data (version 1.5) 'CDROM                           '

Para confirmar que image.isoé realmente um sistema de arquivos UDF, podemos montá-lo apenas para verificar.

$ sudo mount -o loop image.iso /mnt/
mount: /dev/loop0 is write-protected, mounting read-only

Agora, veja como foi montado através do mountcomando

$ mount | grep '/mnt'
/home/saml/image.iso on /mnt type udf (ro,relatime,utf8)

Referências

slm
fonte
3
Obrigado. Ainda incrivelmente primitivo comparado ao que eu esperaria de um formato de 10 anos, mas sua resposta parece bastante canônica, então terei que lidar com isso por enquanto.
Vector Gorgoth