UDF в Linux

UDF в Linux Владелец пишущего CD устройства — счастливчик. Особенно, если он никогда не записывал диск под UNIX/Linux. Тому, кто работал с графическими программами в Windows, очень сложно привыкнуть к "спартанской" обстановке в мире *NIX. Да и сама процедура записи на компакт-диск, пришедшая к нам из стародавних времен, больше походит на пляску шамана у костра. Ее главный недостаток (многими расценивается как достоинство) — неудобство создания записей и длительность их создания.

Приход CD-RW (перезаписываемого компакт-диска) не ознаменовал ничего нового для пользователя в смысле удобства записи: по-прежнему приходилось создавать сессию, а до этого еще долго форматировать болванку. В минусе была и низкая скорость записи на CD-RW (2x-4х против 8х-12х).
Все начало меняться с приходом DVD. Для него была создана своя файловая система UDF (Universal Disk Format), учитывающая его большую емкость и скорость. Ведь стандарт iso9660 был создан еще в 1987 году, и совершено не годился для нового носителя информации из-за ограничений на объем и размещение данных. Изначально основной задачей UDF была лишь непрерывность видеопотока и совместимость с обычной файловой системой (т.н. Bridged UDF, в которой видеопотоки записывались в двух видах — UDF и ISO9660). В последующих версиях системы добавилась поддержка записи на CD-R и CD-RW диски. Это было большим шагом вперед для обычных пользователей. Появился реальный конкурент ZIP-дискам и магнитооптике. Преимущества нового стандарта записи:
— низкая стоимость носителей и устройства записи;
— возможность перезаписи/удаления "на лету";
— удобство записи, сравнимое с пользованием дискеты или любого другого сменного носителя информации;
— более эффективное использование дискового пространства;
— более быстрый доступ к информации;
— надежность сохранности данных, как у обычных CD-R дисков;
— самое главное — возможность чтения таких дисков на обычном CD-ROM приводе (он должен быть выпущен не раньше 1998 года).
Новинка была сразу подхвачена фирмами Adaptec и CeQadrat, лидерами на рынке программ для записи CD (теперь их продукты продаются под торговой маркой Roxio). Adaptec разработала свою реализацию UDF, назвав ее DirectCD, а CeQuadrat — свою PacketCD. Названия как бы подчеркивали доступность и компактность, "packed" — от метода записи на диск, в основе которого лежал принцип записи "пакетами" — маленькими (32-64 Кб) блоками данных. Именно из-за этого обеспечивалась большая гибкость при записи. Пропали проблемы "переполнения буфера" записи. Стала доступной возможность "лечить" диски, на которых появились плохие сектора: можно было или просто переформатировать диск, или переписать тот участок, на котором возник сбой. Еще одно удобство такой записи — диск можно не "закрывать" (finalize) до тех пор, пока вас не устроит результат (сравните с CD-R, который нередко приходилось перезаписывать по новой из-за неправильно собранного "образа"). На заре создания этого стандарта лишь малое количество CD рекордеров поддерживало пакетную запись, но скоро ситуация начала выправляться — производители приняли UDF и packed writing. На сегодняшний день все CD-рекордеры имеют поддержку пакетной записи.
На практике это реализовано так: спецификация OSTA UDF подробно затрагивает это, и тут все зависит от разработчиков: под Windows это драйвер, под Linux это модуль ядра. Есть также и драйвер для MacOS от Roxio. FreeBSD, начиная с 4.2STABLE, официально поддерживает запись на CD-RW, в 4.3STABLE добавлена поддержка DVD-RAM. Наиболее удобно в Windows: поддержка сделана в виде драйвера, который добавляет возможность чтения для CD-ROM привода и записи для рекордера. Еще есть возможность изменения скорости чтения/записи данных (что очень удобно и в обычных условиях, т.к, как правило, CD-RW диск читается на той же скорости, что и записан). Весь процесс записи под Windows очень прост: вы просто форматируете диск, как дискету (обычно это занимает около 20 минут), затем просто в "Проводнике" или вашем любимом файловом менеджере копируете файлы на диск. Если что-то не так или вы передумали, просто стираете и записываете новый. DirectCD входит в Easy CD Creator, PackedCD есть в WinOnCD. Из дополнительных возможностей под Windows реализована компрессия данных, что позволяет разместить на диске 700 Мб около 1 Гб информации! Конечно, информация должна хорошо сжиматься и сам носитель быть достаточно хорошим, иначе возможны сбои при чтении. DirectCD более стабилен и наиболее близок к "идеальной OSTA UDF", PackedCD же более наворочен с точки зрения функциональности, но с ним чаще сбои при записи из-за качества носителей. К тому же PackedCD не совместим с реализацией UDF под Linux и его не читает DirectCD. В общем, достаточно закрытый и проблемный продукт получился.
С Linux несколько сложнее. Здесь нормально реализовано только чтение дисков, файловая система UDF официально входит в ядро, начиная с версии 2.3.7, и доступна для предыдущих версий как дополнительный модуль. Большинство дистрибутивов, кроме ASPLinux и RedHat, имеют поддержку UDF в ядрах 2.2 (это не касается 2.4, куда udf входит официально). util-linux также знают эту файловую систему. Если у вас нет этого модуля (udf.o), то его исходный код можно скачать с сайта linux-udf.sourceforge.net или http://www.csc. calpoly.edu/~bfennema/ udf.html в виде архива, а затем собрать самостоятельно.
Как уже говорилось выше, с помощью этого модуля можно успешно читать UDF диски, созданные на базе UDF 2.0 или 1.50, — это DirectCD и InCD.
Когда я последний раз следил за проектом, запись udf дисков "на лету" находилась в альфа-состоянии, но вроде уже сейчас можно свободно записывать на CD-RW, а еще поддержка пакетной записи будет интегрирована в ядро 2.4. Конечно, не все так безоблачно — еще не решен вопрос с записью больших файлов, не до конца отработан алгоритм восстановления после сбоя.
Патчи для поддержки пакетной записи под ядра можно скачать через SourceForge. На сайте SourceForge есть и CVS репозиторий, через который можно получить самую свежую версию. Так как вся поддержка предоставляется в виде патчей к ядру, для сборки вам понадобится и само ядро. Его также можно скачать с ftp.kernel.org/pub/linux/kernel/v2.4 или любых общедоступных зеркал После того, как вы установили и собрали ядро с поддержкой пакетной записи, самое время подумать, как и чем записывать CD-RW диски. К сожалению, стандартные программы записи дисков под Linux (cdrecord и mkisofs) здесь бессильны — поддержка udf в них только планируется, так что приходится пользоваться средствами, которые предлагают разработчики проекта linux-udf. В пакете для этого предусмотрены 3 программы:
— pktsetup, служит для установки связи с packet device (т.е. CD-RW приводом);
— cdrwtool, нужна для начальной разметки/форматирования диска CD-RW;
— mkudf, служит для создания udf-образов на нестандартные носители (dvd, dvdram, cd-r). Запись таких образов производится cdrecord. Пока данная программа очень нестабильна, и авторы не советуют ею пользоваться.
Для проверки дисков есть программа chkudf, пока только проверяющая целостность записи. В будущем планируется и udffck, которая будет восстанавливать запись. А теперь о том, как все это работает:
1. Берем чистый CD-RW и форматируем его (считая, что CD-RW — это sr0):
# cdrwtool -d /dev/sr0 -q
2. Создаем /dev/pktcdvd0, если его не существует:
# mknod /dev/pktcdvd0 b 97 0
3. Устанавливаем ваш cd-rw рекордер:
# pktsetup /dev/pktcdvd0 /dev/sr0
4. Теперь можете смонтировать /dev/pktcdvd0 и копировать на него файлы!
# mount /dev/pktcdvd0 /cdrom -t udf -o,rw,noatime

Ну вот и все! CD-RW-дискета готова!

X-Stranger


Компьютерная газета. Статья была опубликована в номере 29 за 2002 год в рубрике soft :: linux

©1997-2024 Компьютерная газета