Создание компакт-диска с длинными именами файлов

Эта статья рассказывает о том, как самому сделать компакт-диск с по-настоящему длинными именами файлов. Кто-то недовольно хмыкнет: "Что тут рассказывать, поставил пару галочек в нужной закладке настроек у любимой программы, и пиши сколько хочешь!". Тот же, кто хоть раз сталкивался с невозможностью записать на компакт-диск свои любимые mp3 файлы с именами:

01. (День рождения Лены) Вася, Гена, Боря и Петя поют свою любимую песню.mp3

или личный фотоальбом из jpg файлов вида:

(22 сентября 2000 г.) Я стою в Париже около Эйфелевой башни и смотрю, как садится Солнце.jpg

или какой-нибудь JAVA toolkit в распакованном виде, с именами еще похлеще вышеуказанных - могут читать дальше.

Как известно, наиболее распространенными форматами, описывающими метод хранения файлов на CD, являются ISO 9660 и Microsoft Joliet extension к ISO9660. Остальные экзотические варианты распространены в меньшей степени, поскольку, обычно, поддерживаются либо только на родной аппаратной платформе, либо требуют для своей работоспособности установки дополнительных драйверов и утилит.

Кратко напомню ограничения, накладываемые на имя файла двумя вышеупомянутыми стандартами.

  • ISO9660 - имена файлов с длиной до 31 символа
  • Joliet - 64 символа на имя файла

Между тем, вполне возможно записывать на CD файлы с именами, длина которых превышает допустимые для Joliet шестьдесят четыре символа. Аналогично, возможно расширить набор используемых в имени файлов символов и сделать его идентичным тому, который использует, к примеру, Win 95 на диске с файловой системой FAT32.

Такие диски умеет создавать теперь уже раритетная программа Unite CD Maker. Перед процессом создания диска "без ограничений" остается только одно значительное препятствие - программа эта написана под OS/2, и несколько незначительных - программа имеет ограничение на глубину вложенности каталогов и не умеет создавать образы дисков более 650 мб.

Чтобы преодолеть и эти ограничения, я модифицировал исходный код пакета для создания образов CD под названием mkhybrid (пакет этот родом из *nix, что объясняет факт его распространения в исходных текстах). Модифицированный код был скомпилирован, опять же, под операционную систему IBM OS/2 - поскольку именно эта система является для меня основной и рабочей.

Модифицированной программе я дал простое название mkhybridr, где буква "r" означает не что иное, как "Russian".

Модифицированная программа обладает следующими возможностями:

  • Создание iso образа диска из файлов, имена которых значительно больше 64 символов. На данный момент поставлено искусственное ограничение в районе 150 символов, но ничто не мешает записывать и файлы с именами 200 символов (собственно говоря, я так и поступаю).
  • В именах файлах допускаются и русские символы, и прочие знаки, какие допускает ваша файловая система.
  • Отсутствует ограничение в 650 Мбайт на размер образа диска.
  • По сравнению с оригинальным mkhybridr также русифицирована часть выдаваемых информационных сообщений и поставлен простой кэш на чтение с диска файлов при построении образа. Ввиду примитивности алгоритма добавленного кэша, это помогает только на достаточно больших файлах.

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

Полученный в результате работы mkhybridr ISO образ может быть записан на CD диск практически любой из свежих программ записи CD под Windows. В случае необходимости выбора формата образа диска, следует выбирать стандартные 2048 байт/сектор. Практика показала, что полученные диски с длинными именами успешно видятся под OS/2 (может потребоваться обновление cdfs.ifs, поставляемого от IBM), Windows 95, 98, NT, и Linux (как минимум RedHat 6.0). Под DOS, естественно, нас ожидает неудача.

Теперь почти ничто не мешает созданию архива из файлов с по-настоящему длинными именами. Почему почти? Потому что программа-то под OS/2, а эта операционная система ныне достаточно редка и живет лишь в умелых руках профессионалов. Чтобы дать возможным пользоваться этой программой и пользователям Windows, был предпринят следующий шаг. Я сделал загрузочный компакт-диск с мини-версией OS/2, работающей в текстовом режиме, специально для запуска mkhybridr. В загрузочный образ диска был помещен драйвер поддержки FAT32 в OS/2, который позволяет полноценно (хотя и небыстро) работать с FAT32 разделом.

Теперь набор необходимых требований для использования mkhybridr сокращается до следующего:

  1. Компьютер с IDE CDROM, способный грузиться с компакт-диска (проверьте наличие соответствующего параметра в BIOS).
  2. Загрузочный компакт-диск с мини-вариантом OS/2
  3. mkhybridr.
  4. FAT32 раздел.
  5. Любая программа записи CD для используемой вами операционной системы, правильно воспринимающая ISO образы дисков.

Конечно, если вы работаете в OS/2, то все, что вам необходимо - это пункты 3 и 5.

Как это все работает:

  1. Для создания загрузочного диска с мини-набором OS/2 воспользуйтесь образом диска boot.iso (стандартный ISO образ) и той вашей любимой программой, которая сделает из него CD.
  2. Выставьте в BIOS Setup параметр загрузки с CD.
  3. Загрузитесь с компакт-диска. При успешной загрузке (в некоторых редких случаях придется подождать несколько минут) Вы увидите на экране синие панели FC (File Commander) - файловый менеджер для OS/2.
  4. При успешной загрузке драйвера FAT32 вам будут доступны все FAT32 диски.
  5. Чтобы создать образ диска, запустите mkhybridr со следующими параметрами (пример):

    mkhybridr.exe -o d:/image/vac3.iso -full-iso9660-filenames -L -a -omit-period -omit-version-number -D -V "VAC3" g:/VAC3/

В этом примере:

d:/image/vac3.iso имя создаваемого iso-образа
"VAC3" метка диска в кавычках
g:/VAC3/ путь к файлам, которые будут записаны в образ диска.

Обратите внимание, что рекомендуется использовать mkhybridr только с вышеуказанными параметрами. Все остальное - на ваш страх и риск. Конечно, имя создаваемого образа, метку диска и путь к файлам можно менять без опасений :)

Важно! Обратите внимание на "/" в путях к каталогам и файлам. Не используйте "\", и не забывайте поставить закрывающий "/" в конце пути к каталогу, содержимое которого будет помещено в ISO образ. После того, как mkhybridr успешно создаст образ диска (в конце написав его объем), вы можете перегрузиться (Ctrl-Alt-Del) в привычную вам ОС для записи этого образа на CD.

Необходимые предосторожности:

Следует помнить о том, что OS/2 не имеет встроенной поддержки разделов с FAT32. Для этого используется драйвер FAT32, разработанный Henk Kelder. Скачать можно здесь.

Я сам пользуюсь этим драйвером достаточно давно, проблем с потерей данных не было. Тем не менее, лишние меры предосторожности в виде выделения отдельного FAT32 раздела не помешают.

Желаю успехов!

 
Андрей Смирнов (andre538@odusz.elektra.ru)
Опубликовано -- 18 апреля 2001 г.
 
Комментарии?  Поправки?  Дополнения? vorobiev@ixbt.com