21 ноября 2007 г.

Пакетная запись UDF в linux

Как многим известно, я давно озаботился процессом записи крупных файлов (более 2 Гб) под Linux. В начале тернистого пути, который я прошел, было: debian etch 4.0 с ядром 2.6.18.

Что происходило в это случае. Ужасная работа с UDF. UDF диск, записанный в windows читался, но копировался не полностью, потом вообще переставал читаться, не говоря про запись.



Для начала, поймем что такое UDF. википедия пишет, что "UDF (Universal Disk Format - универсальный формат диска) - новая файловая система на CD, с поддержкой для текущего поколения компакт-дисков типа CD-RW и DVD-ROM. Стандартные CD-ROM обычно форматируются с использованием ISO 9660. Большинство компьютерных систем может читать ISO 9660 CD-ROM и CD-R диски, так как имеют встроенную поддержку ISO 9660. Однако, ISO 9660 имеет некоторые ограничения, которые делают его несовместимым с DVD, CD-RW и другими новыми форматами дисков. UDF разработан так, чтобы избавить от этих ограничений. UDF позволяет дозаписывать файлы на CD-R или CD-RW дисках, один файл одновременно, без существенных потерь дискового пространства, используя метод пакетной записи. Также UDF учитывает возможность выборочного стирания некоторых файлов на перезаписываемых носителях CD-RW, освобождая место на диске. В стандарте ISO 9660 такое не предусмотрено. UDF также лучше подходит для DVD, так как имеет лучшую поддержку для дисков большого объёма."

А также, что "ОС Linux также поддерживает данную файловую систему. Монтироваться она должна без проблем, для создания диска с данной ФС нужно использовать пакет udftools."

Что ж. Вначале я попробовал создать UDF в k3b. Но выяснилось что k3b создает все-таки ISO9660 с структурой UDF (я не стал вникать в подробности сего процесса, и решил что все таки ISO мне не подходит так как k3b в любом случае не даст писать файлы более 4 Гб да и после того как я попробовал записать файл более 1 Гб - он у меня не прочитался) .

Далее, я решил сначала исправить ошибку чтения UDF дисков. Эта ошибка решается компиляция нового ядра - последнее на данный момент 2.6.23. Для этого при конфигурировании включаем поддержку UDF и поддержку пакетной записи (она пригодится нам позже). Обновив ядро мы смело копируем диск UDF с файлом более 4 Гб.

Но на запись ISO с поддержкой UDF (k3b с помощью mkisofs и cdrecord) это к сожалению это к сожалению не влияет:

man mkisofs

" -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."

После пришлось искать альтернативные программы записи. Нашлось - udftools.
А вот собственно как писать UDF в режиме пакетной записи:

1) В файле /etc/default/udftools раскомментировать DEVICES="/dev/hd?" (у меня /dev/hdb)
2) Вставляем диск.
3) Форматируем RW. - #dvd+rw-format -f /dev/hdb
4) Создаем на диске UDF fs - #mkudffs /dev/hdb
5) Запускам пакетную запись: #/etc/init.d/udftools start
6) Создать папку для монтирования: # md /mnt/udf
7) Монтируем диск (через пакетное устройство) #mount -t udf -o utf8,noatime /dev/pktcdvd/0 /mnt/udf
8) Используем диск как дискету
9) Отмонтируем диск #umount /mnt/udf
10) Останавливаем пакетную запись: #/etc/init.d/udftools stop
11) eject

Как насчет DVD-R пока не знаю, расскажу позже. Или может в комментах кто расскажет.

ЗЫ. Сегодня принимаю поздравления с 25-летием :)

2 комментария:

  1. Пишу DVD-диски утилитой growisofs. Проблем записи и дозаписи никогда не был.

    ОтветитьУдалить
  2. Наверное мне не повезло :) что-то не попал на нее, спасибо попробую, скоро предстоит освобождать винты :)

    ОтветитьУдалить