CFA LogoCFA Logo Computer
Новости Статьи Магазин Драйвера Контакты
Новости
RSS канал новостей
В конце марта компания ASRock анонсировала фирменную линейку графических ускорителей Phantom Gaming. ...
Компания Huawei продолжает заниматься расширением фирменной линейки смартфонов Y Series. Очередное ...
Компания Antec в своем очередном пресс-релизе анонсировала поставки фирменной серии блоков питания ...
Компания Thermalright отчиталась о готовности нового высокопроизводительного процессорного кулера ...
Компания Biostar сообщает в официальном пресс-релизе о готовности флагманской материнской платы ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2002 ГОД

Как пингвины пишут диски

mchno mchno@ukrpost.net

(Продолжение, начало см. МК № 19 (190))

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

Многосессионные диски

Под Линуксом с мультисессионностью полный порядок, в том числе с добавлением новых сессий на диски, начатые где-нибудь в Винде или на Маке. (правда, вовсе не факт, что Мак захочет читать новую сессию, но в чем тут дело, мне пока неясно ).

В целом процедура создания многосессионного диска почти такая же, как и для односессионного, рассмотренного в предыдущей статье. Отличие состоит в том, что сначала mkisofs, а потом и cdrecord надо кое-что дополнительно объяснить о многосессионности. Для этого либо им указываются соответствующие опции в командной строке, либо в вашем любимом графическом фронт-энде нужно обнаружить элемент управления, ответственный за многосессионность, и произвести с ним какие-то манипуляции. Итак, к делу.

Многосессионный диск отличается от односессионного тем, что состоит из нескольких треков; в этом смысле он больше похож на аудиодиск. Образ первой сессии создается точно так же, как если бы она была единственной на диске, т. е. для mkisofs все еще не нужно ничего указывать дополнительно. При создании образа второй, третьей и т. д. сессии mkisofs уже нужна кое-какая информация о предыдущей сессии — чтобы знать, с какого места продолжать. Получить эту информацию легче легкого, достаточно просто вставить в писалку нужную болванку и дать команду:

Эта команда выдает вам пару чисел через запятую. Например, мне она только что сказала:

(Если вместо этого cdrecord начинает материться и дрыгать треем, значит, диск закрыт, и добавить на него сессию уже не получится.)

Теперь у нас есть все необходимое для создания образа сессии. К командной строке, с помощью которой в прошлый раз мы создавали образ односессионного диска, у нас добавятся еще две опции. Одна будет указывать только что полученную пару чисел: -C 69732,158462.

Вторая необходимая для многосессионности опция будет выглядеть так: -M 0,0, где 0,0 — тот самый адрес писалки, который мы указываем утилите cdrecord через параметр dev=0,0. Он может выглядеть и по-другому, а чтобы определить его — смотрите предыдущую статью, а также документацию о результатах выполнения команды cdrecord -scanbus.

Что касается записи, все предельно просто: к командной строке cdrecord добавляется опция -multi. А чтобы было совсем спокойно, лучше при этом явно указывать тип трека с помощью опции -data. (разработчики предупреждают, что без этой опции некоторые писалки производства Sony в многосессионном режиме могут глючить).

Если опцию -multi не указать, диск будет закрыт, то есть добавить к нему новые сессии будет невозможно. Поэтому для последней сессии на диске опция -multi не указывается. Но случаи бывают разные, поэтому предусмотрена также возможность закрыть диск отдельной операцией. Выглядеть это будет так:

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

CD-RW

Работа с CD-RW отличается только в процессе их записи. Чтобы записать что-то на RW'шку, ее, строго говоря, нужно сначала вытереть. А вытирается она с помощью опции blank=что-то_там команды cdrecord.

В нормальных случаях эта опция принимает вид blank=fast и добавляется прямо в командную строку записи. При этом реально вытираются только записи, определяющие логическую структуру диска, а занимает такая операция секунд пятнадцать.

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

а в особо тяжелых случаях, если даже такая команда не идет, к ней добавляют еще и опцию -force.

Из других значений, которые может принимать опция -blank, полезным может оказаться разве что -blank=session — вытирает последнюю сессию. Остальные варианты исполняют весьма экзотические вещи, так что, пожалуй, не стоит забивать ими голову.

И напоследок. Вместо all можно говорить disc или disk, а вместо fast —minimal.

Аудиодиски

Вообще аудиодиски, хоть и звучат приятно, на самом деле штука довольно мрачная, потому что у них свой собственный стандарт, в котором уж точно ничего хорошего нет. Диски с данными соответствуют стандарту Orange Book, согласно которому на низком уровне бьются на секторы по 2352 байта, из которых 304 отводится на служебную информацию, в том числе для коррекции ошибок. Стандарт Red Book, которому соответствуют аудиодиски, ничего подобного не предусматривает, и все 2352 байта в секторе заняты ничем не защищенной полезной информацией.

Кроме того, размер аудиотрека обязательно должен быть кратным этим самым 2352 байтам (что составляет ровно 1/75 секунды). Именно поэтому, когда альбом на аудиодиске идет нон-стопом, метки треков очень часто располагаются как попало, но по-другому располагаться они не могут. И мастеринг аудиодиска (не материала, который будет на нем располагаться!) состоит в том, чтобы расставить метки согласно стандарту.

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

Что в аудиодисках хорошо, так это простота их создания. Во-первых, не нужно предварительно создавать образ. Во-вторых, под Линуксом никто не будет пытаться по умолчанию вставлять двухсекундные паузы между треками :-). Аудиоматериал, предназначенный для записи, лучше всего держать в формате *.wav — тогда cdrecord сама читает информацию об аудиоданных из заголовка и берет на себя заботу о порядке байтов и прочих высоких материях. Предположим, что все аудиофайлы под запись собраны в одной директории и сортируются по именам в том же порядке, в котором должны следовать на аудиодиске. Тогда остается перейти в нее и дать примерно такую команду:

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

Если между аудиотреками предполагаются паузы, тогда с кратностью размера аудиоданных 2352 байтам можно не морочиться. В командную строку добавляется опция -pad, и программа сама позаботится о кратности, дополняя аудиоданные из ваших файлов фрагментами абсолютной тишины.

Загрузочные диски

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

Итак, сначала нам понадобится настоящая загрузочная дискета. Это может быть либо древняя пятидюймовка на 1.2 Мб, либо привычная трехдюймовка на 1.44 или 2.88 Мб. Дальше нам понадобится сделать ее образ в файле. mkisofs будет работать именно с этим образом. Итак, вставляем дискету во флопповод и говорим:

Полученный в результате файл boot.img (впрочем, как именно он будет называться у вас — дело вашего вкуса) кладем в директорию, где у вас собран материал для записи на диск. А теперь остается дать команду на создание образа диска, только добавить к ней следующую опцию: -b boot.img.

А вообще, чего только не узнаешь, читая мануал к mkisofs — оказывается, при желании разных загрузочных образов на один диск можно запихнуть аж целых 63 штуки!

О кириллических именах

А как же, Линуксовые тулзы и на такое горазды. Для того чтобы получить на диске кириллические имена файлов и директорий, нужно всего лишь воспользоваться соответствующим полезным свойством расширения Rock Ridge.

Есть, правда, одно досадное ограничение. На сегодня кириллицу в именах вот так прямо с ходу можно получить только из символов русского алфавита и только в том случае, если в вашей системе кириллица живет в кодировке koi8-r. Все дело в том, что для получения кириллицы и прочих не-ASCII символов Rock Ridge использует таблицы преобразования различных восьмибитных кодовых таблиц в Юникод, а таковых таблиц ни для koi8-u, ни для CP-1251 в mkisofs просто еще не заморочились запихнуть. Чтобы сообщить mkisofs о том, какую таблицу ей нужно использовать, добавляем в командную строку следующую конструкцию:

А чтобы получить список кодовых таблиц, с которыми mkisofs на сегодня умеет работать, применяется следующая команда:

Если ваша системная кириллическая кодировка — koi8, и при этом программе попадутся украинские символы в именах, эти символы не будут распознаны и заменятся на подчеркивания (_).

Зато какая получается кириллица! Открываешь диск под Линуксом, а там нормальные кириллические имена из понятных русских слов. Открываешь под Виндами, а там те же имена из тех же слов! И безо всяких кракозябров и вопросительных знаков.

Кстати, раз уж мы о них вспомнили, заодно можно научиться видеть в Линуксе кириллические (а также любые другие) имена на дисках, сделанных под Виндами. Для этого в командной строке монтирования добавляем такую конструкцию:

(опять же, если ваша системная кириллическая кодировка — koi8) — и вопросительных знаков как не бывало. При желании можно вообще дописать эту опцию в соответствующую строку файла /etc/fstab (опции перечисляются через запятую, только без флага -o).

Прочие полезные тонкости

Начнем с простейшей. Естественно, cdrecord может пережигать болванки, то есть записывать на них больше, чем их официальная емкость, — лишь бы писалка умела это делать. Для такого случая существует опция -overburn. Только если будете пользоваться, рекомендуется сначала прогнать процесс записи в тестовом режиме, чтобы убедиться, что все получится так, как хочется.

Дальше. Когда мы создаем образ диска, этот образ вовсе не обязательно писать в файл. Тем более, ситуации бывают разные, и едва ли не самая распространенная — нет места на винте. Но зато юниксовый конвейер у нас есть всегда. Выход mkisofs можно направить прямо на вход cdrecord, и многие фронт-энды к этим программам поступают так всегда. Соответствующая командная строка будет выглядеть так:

А вот еще один финт ушами из той же серии. Допустим, нам нужно оценить, какого размера выйдет образ диска. mkisofs в конце работы всегда выдает размер полученного образа (если, конечно, работает отдельно, а не в конвейере с cdrecord), но не писать же при этом образ в файл! И не надо. В Юникс-системах можно перенаправить вывод любой команды прямиком в никуда:

/dev/null — это замечательное дзеновское псевдоустройство. Любой вывод на него исчезает бесследно, а при попытке ввода с него всегда возвращается ноль байт.

На сегодня, пожалуй, все. Мы разобрались с тем, как работает вся машинерия, связанная с записью дисков (жаль, так и не удалось к выходу статьи поэкспериментировать с Маком , а в следующий раз вас ждет обзор программ, которые призваны от пользователя эту самую машинерию скрыть, — различных графических фронт-эндов. Удачи!

(Продолжение следует)

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы или вычислите пример: *
captcha
Обновить





Хостинг на серверах в Украине, США и Германии. © sector.biz.ua 2006-2015 design by Vadim Popov