LinuxBegin.ru - offline-версия от 26.04.2004
Главная | Все темы | Все статьи | Ссылки | Аналоги Windows-программ в Linux | Top 20

Разборки с UDF.
(Программное обеспечение, работа в Linux)


- Дмитрий Налдаев, 13.12.2003, alpha.linux.perm.ru, оригинал -

Оглавление документа:

Разборки с UDF.

Введение

Итак, по просьбам телезрителей, требующих поделиться опытом обуздания UDF, дабы и другие могли ее использовать, решил таки написать маленький отчет. В общем я решил, не писать инструкцию по образу и подобию разных HowTo и FAQов, а просто рассказать что, как и почему делал, и на какие грабли при этом наступил... Сразу предупреждаю, что писака из меня никакой, так что просьба ногами не пинать. Может действительно уже пришло время открыть настоящую охоту на капризную Музу?

Что такое UDF

С появлением CD-writer приводов стало возможно не только только читать CD диски на компьютере, но и записывать их на специальные CD-R диски, в народе именуемые болванками. А с появлением CD-RW болванок, диски стало можно не только записывать, но и перезаписывать.

К сожалению классическая технология записи на CD-R(W) обладает существенным недостатком
сначала нужно создать образ диска, который потом будет прошит на болванку. Такой подход имеет ряд существенных недостатков, и в частности требуется место для образа диска, а кроме того данные на диске нельзя оперативно обновлять те CD-RW диск можно стереть за раз и... в лучшем случае можно дописать новые данные в новую сессию...

А почему собственно говоря нельзя записывать данные на CD-RW как на обычную дискету? Ведь классическая запись через образ возникла из-за ограничений, налагаемых технологией записи на простой CD-R диск, когда в течении сессии нельзя гасить лазер... В результате была разработана технология произвольной записи на CD-RW диск, получившая название DirectCD (на сколько я понимаю это торговая марка или что-то типа того) и известная среди специалистов, как пакетная запись на CD. А UDF - это файловая система, используемая при пакетной записи на CD. Поэтому UDF диск - это DirectCD диск, и работать с таким диском можно, как с обычной дискетой, только очень большого объема...

UDF и Linux

При конфигурировании ядра Linux серии 2.4 в разделе файловые системы появились опции для поддержки UDF. Но help к этой опции гласит:

Due to lack of support for writing to CDR/CDRW's, this option
is only supported for hard discs, DVD-RAM, and loopback files.

т.е. поддержка записи на CD отсутствует в принципе :-( но читать UDF диски уже можно, и то вперед. В принципе, писать на UDF диск тоже можно, но по старинке - т.е. через образ, но при этом теряются все преимущества UDF, так что этот метод я не буду рассматривать дальше... У меня даже было желание выбить из начальства DVD-RAM чтобы получить возможность нормально писать на UDF.

Немного истории

UDF диски я использую довольно давно. Раньше резак стоял на соседнем компьютере под управлением какой-то там версии Виндовс, и DirectCD к нему прикрутили при первой же возможности, и что самое главное, хозяин этого компа постоянно следил тобы тама все работало (поскольку он сам тоже пользовался UDF дисками). В общем, когда мне нужно было что-нибудь записать на UDF диск, я кидал этот диск к нему в привод, и заливал туда все что мне было нужно через Самбу, а читать такие диски, как я уже отмечал выше, можно было и под линуксом...

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

Совсем недавно в списке рассылки debian-russian промелькнул вопрос
http://lists.debian.org/debian-russian/2003/debian-russian-200310/msg01026.html
и очень любопытный ответ в конце соответствующего треда
http://lists.debian.org/debian-russian/2003/debian-russian-200310/msg01153.html

Ядро 2.4.23

Так уж получилось, что выход ядра 2.4.23 совпал с сообщением об дыре в более ранних ядрах, через которую поломали сервера Debian. К тому же мне нужно было прикрутить привод, который достался мне после ухода коллеги. В результате я решил обновить ядро, а за компанию посмотреть, на сколько реально получить поддержку записи на UDF диск под линуксом...

Я снова нашел письмо в архиве списка рассылки debian-russian, в котором говорилось, что при наличии соответствующего патча UDF диски не только читаются но и пишутся под линуксом и пошел по ссылкам, с начала на http://w1.894.telia.com/~u89404340/patches/packet/2.4/ а потом стал исследовать этот сайт и в результате нашел небольшую страничку, http://w1.894.telia.com/~u89404340/packet.html посвященную пакетной записи на CD под линуксом и небольшое HowTo по этому вопросу http://cvs.linuxfromscratch.org/index.cgi/hints/Attic/cdrw-hint.txt?rev=1.3

После изучения документации я вытащил патч http://w1.894.telia.com/~u89404340/patches/packet/2.4/packet-2.4.23-pre8.patch.bz2 (Бонус для пользователей Perm9 – это патч доступен по адресу http://ftp.linux.perm.ru/people/dima/kernel/UDF/packet-2.4.23-pre8.patch.bz2) который встал на ядро 2.4.23 без лишних вопросов. Я ставил этот патч командой bzcat /home/dima/packet-2.4.23-pre8.patch.bz2 |patch -Np1 из корневого каталога дерева исходников ядра 2.4.23. Этот патч модифицирует также код UDF: с версии 0.9.6-rw на 0.9.8-cvs, у которой есть изменения, приводящие к несовместимости с DirectCD. Рекомендуем наложить после этого патч http://ftp.linux.perm.ru/people/dima/kernel/UDF/packet-2.4.23-change.patch.bz2
(Спасибо Dennis Bar за поправку и патч)

Дальше, кроме стандартных телодвижений, необходимых для получения поддержки обычной записи на CD, я поставил галочки при конфигурировании ядра напротив опций «Packet writing on CD/DVD media» в разделе “Block devices” (эта опция становится доступна после наложения указанного выше патча) и «UDF file system support (read only)", «UDF write support (DANGEROUS)" в разделе “File systems”. После чего я собрал новое ядро, инсталировал его, и перезагрузил компьютер с новым ядром...

Если Вы не используете devfs, то нужно создать файлы устройств /dev/pktcdvd0 – /dev/pktcdvd3 (block major 97 minor 0 – 3):

Пользователи Debian, могут пропусить этот шаг, поскольку пакет udftools создаст необходимые файлы устройств при установке...

Если вы собрали pktcdvd в виде модуля, то удобно также настроить автозагрузку модулей через /etc/modules.conf:

(если вы ставите udftools из пакета, эти настройки должны быть сделаны автоматически)

Не все так радужно, как хотелось бы

Для начала я разобрался с обычной записью на диск, и после того, как скопировал один CD на болванку, вплотную занялся UDF. Для начала я решил примонтировать свой старый UDF диск, который был создан в M$ Windows и до этого прекрасно читался:



Бррр. Странно дело - как зовут файл, он вроде бы знает, а самого файла нет. С таким я еще по моему не встречался... Но может я чего делаю неправильно? Еще раз перечитываю HowTo, после чего говорю



соответствующий пакет на удивление оказался в woody... Если у вас другой дистрибутив, и в него не входят udftools, скачать их исходные тексты можно например здесь: ftp://alpha.linux.perm.ru/people/dima/kernel/UDF/udftools_1.0.0b2.orig.tar.gz

Читаю документацию к пакету. теперь у меня следующая попытка:



Как говорится, те же яйца, только в профиль, с той лишь разницей что теперь mount не ругается по поводу read-only media. И что? Выходит Облом? Мы так не договаривались...

И все-таки она работает !

К счастью у меня был совершенно новый CD-RW диаметром 85mm (те минидиск) и я решил попробовать, а как оно будет работать с ним. Для начала диск нужно отформатировать:



Снова пытаюсь подмонтировать теперь уже свежесозданный диск



Ураа! теперь она уже не ругается по поводу того что не может найти файлы, но нормально показывает содержимое диска. А писать-то на диск теперь можно?



А как шустро происходит запись на диск?



Может и не очень шустро, но нужно учитывать, что привод древний и умеет всего только 4x на CD-RW болванки...

А как диск читается после того, как его размонтировали и снова примонтировали?



Но не постоянно же работать с cd из под root'а. для этого создаю каталог /mnt/cdrw и добавляю такую строчку в /etc/fstab



Теперь интересу для пытаюсь смонтировать обычный iso9660 CD диск:



А UDF диск монтируется нормально



Странно дело - mount /cdrom нормально монтирует как iso9660, так и UDF диски без проблем, но в режиме read-only... в /etc/fstab для него прописано



Но это не самое важное, просто немного жаль, что нельзя использовать одну и ту же точку монтирования для всех дисков.

Ладно, сейчас хочу попробовать писать на диск обычным пользователем:



Опс... а у меня просто не те, ща мы их быстренько...



Опа! а права на точку монтирования уже стоят какие надо. Выходит при монтировании права точки монтирования изменяются... Я как-то не обращал внимания на этот довольно любопытный момент. При монтирование обычных дискет с FATом таких проблем не было... Ну ладно...



Кажется, поборол... ладно хоть после размонтирования права не потерялись...

И как оно читается на других компах?

Проверял только дома. к сожалению дома есть только читающий CD привод. Дома у меня стоит ядро 2.4.22 с kernel.org без дополнительных патчей. Поддержка UDF, естественно, включена.

Оба диска прочитались нормально: как созданный раннее в Windows, так и тот, что создал только что под Линуксом...

Может или нет Windows прочитать UDF диск, созданный и записанный под Linux'ом, я не проверял - для меня этот вопрос не очень актуален.

Выводы

Вобщем-то оно работает, но неожиданным стало то, что созданный ранее диск, (который раньше читался нормально) перестал читаться, пробовать записывать на него что-то новое я не стал, так как не хочу терять то что там записано. Разобраться почему этот диск не хочет читаться я планирую в ближайшее время.

Понравилось так же, что при записи под линуксом на UDF диск файлы получают нормальные права, а не +x, как при записи под виндой. Но с другой стороны, наличие реальных атрибутов приводит к некоторым неудобствам, и не понятно, как быть, если у пользователя на разных компьютерах разные UID и GID.

85мм CD-RW диск вместе с коробкой имеет почти такие же размеры, как и обычная трех дюймовая дискета, а влазит на него 170 метров. Стоимость же такого диска (вместе с коробкой) в районе 25 рублей. Скорость записи и чтения тоже вполне приемлемые. Вобщем ZIP драйв похоже полетает тоже...

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

Просмотров: 1309  |  Рейтинг статьи: 4 (Голосов: 1).
4
Дата размещения статьи: 2003-12-22 18:03:36



5 последних поступлений в раздел Программное обеспечение, работа в Linux:

26.02.04: Создаем кроссворд в OpenOffice Calc (Изучаем условное форматирование и защиту ячеек.)
26.02.04: Точки Emacs (Путь линуксоида очень напоминает путь воина, главными особенностями которого являются ответственность...)
07.02.04: Файлы из будущего. (Total Commander6 - в системе Windows, по возможностям и интерфейсу, лучше и популярнее! Возможностей ...)
07.02.04: Время играть (Сразу замечу, что точной копии NFS найти не удалось, да и смысла создавать то, что уже есть, я не виж...)
02.02.04: Сохраним Linux (В статье "Пингвин на автопилоте" я говорил об автоматизации Linux. Теперь давайте рассмотрим способы ...)

Комментарии:

LinuxBegin.ru © 2003-2004 Valery V. Kachurov | Условия использования материалов | О проекте