Запис дисків в Linux-консолі

Автор: Петро Семілєтов


Примітка: Стаття була вперше опублікована в електронному виданні "Open Source" (випуск № 035 від 21.11.2008).
    
    
    Трохи історії
   
   
Не відкрию Америку, заявивши, що більшість Linux-програм для запису CD і DVD є просто графічними оболонками для ряду консольних утиліт. Виняток становить, мабуть, тільки версія Nero для Linux.
   
Довгий час утиліти запису на CD / DVD випускалися в пакеті cdrtools, що розробляється Йоргом шилінгів (Joerg Schilling). У 2006 році Шиллінг вирішив змінити ліцензію з GPL на CDDL (Common Development and Distribution License), несумісну з GPL. Точніше, спочатку була змінена ліцензія декількох make-файлів. І цим відразу занепокоїлися люди з Debian, які не могли створювати пакети, де GPL-код залежимо від не-GPL-коду. І люди з Debian після довгих дебатів з шилінгів (наскільки я знаю, під час яких код cdrtools став вже на 80 відсотків під CDDL), зробили відгалуження від оригінального проекту і назвали його cdrkit. Утиліти, що входять до його складу, отримали інші назви, однак параметри командних рядків збереглися колишніми. Так, програма cdrecord стала іменуватися wodim (скорочення від "write optical disk media "), cdda2wav перетворилася на icedax (" incredible digital audio extractor "), а mkisofs перейменували в genisoimage (" generate ISO image ").
   
   
    Створення образу
   
   
Щоб записати інформацію на болванку, потрібно спочатку створити образ записуваного диска. Є кілька способів зробити це. Перший застосуємо, коли ви хочете скопіювати існуючий диск. Помістіть диск у привід, змонтуйте диск, перейдіть в каталог, де маєте намір створити образ, і дайте там приблизно таку команду:
   

$ dd if=/dev/cdrom of=mycd.iso

   
Використовуване тут dd– Це назва стандартної програми, яка зустрінеться в будь-якому дистрибутиві Linux. Вона копіює вміст одного файлу в інший, а оскільки в UNIX будь-який пристрій є файл, то dd можна використовувати для створення образів будь-яких дисків: від доісторичних дискет до DVD (і більше того, dd здатна записати образ на той же флоппі).
   
Розберемо параметри: if означає input file, тобто "Вхідний файл", а of– Output file ("вихідний файл"). /dev/cdrom– Це стандартна посилання на пристрій CD / DVD-приводу, замість неї можна підставити і справжнє ім'я пристрою (наприклад, /dev/hdd). У параметрі of вказується ім'я файлу, під яким буде створено образ з поміщеного в привід диска. Розширення iso – данина традиції. За замовчуванням dd читає з пристрою блоками по 512 байт. Це значення можна змінити параметром bs (Наприклад, bs=1024). Для примусового копіювання навіть після помилок читання можна додати ключ noerror. Створення копії за допомогою dd може не спрацювати при використанні двошарових DVD. В інших випадках зазвичай працює.
   
У результаті, на виході виходить точна копія диска. Але таким чином не вийде скопіювати ні аудіодиск, ні який-небудь захищений диск з грою (останній перепишеться, але розпізнаватися як "правильний", ліцензійний, не буде). Крім того, dd не показує дані про процес виконується копіювання – для цього можна лише спостерігати за світлодіодом приводу і слухати гудіння обертового диска (Прим. ред.: Або перевіряти зміни в розмірі записуваного файлу-образу.).
   
Є й інший спосіб створення образу диска. Він особливо актуальний для випадків, коли потрібно записати на диск каталог з файлами або безліч таких каталогів. Допоможе чудова програма genisoimage. Вона вміє робити образ диска з директорії ось так:
   

$ genisoimage -f -v -J -o mycd.iso /mnt/somedisk/temp

   
У цьому прикладі в поточному каталозі створюється образ каталогу /mnt/somedisk/temp і записується в файл mycd.iso. Параметр -v вказує, що genisoimage повинна інформувати про хід процесу в консоль, -J задає формат файлової системи (Joliet), а -f вказує genisoimage слідувати за символічними посиланнями, поміщеним у копійований каталог.
   
Отже, щоб зробити "віртуальний проект" диска, треба створити якийсь тимчасовий каталог і помістити в нього символічні посилання на директорії або файли, які ви бажаєте бачити у своєму проекті. У чистій консолі це робити досить нудно, тому скористаємося для створення цих посилань консольним файловим менеджером Midnight Commander. Запустимо mc, на одній панелі перейдемо в каталог, де "проектуємо" диск, а на іншій панелі – туди, де знаходиться файл або каталог, символічне посилання на який ви хочете додати в проект. Розміщуємо курсор на цей файл або каталог, натискаємо Ctrl-X, відпускаємо. Тепер натискаємо клавішу S. З'являється діалогове вікно з уже заповненими полями (на що робити посилання і куди її поміщати). Підтверджуємо натисканням на Enter. Все, готово. Таким чином наповнюємо проект файлами та каталогами. Нітрохи не повільніше, ніж у k3b.
   
Тепер залишається передати каталог проекту згаданої утиліті genisoimage і створити образ. Але чи вистачить наведених мною вище параметрів на всі випадки життя? Звичайно ж, ні. Вникнемо в деякі тонкощі. Linux може відверто погано читати з носія великі відеофайли, якщо на диску немає файлової системи UDF (Universal Disc Format). Нагадаю, що на болванці можуть бути сусідами різні файлові системи. За замовчуванням це ISO-9660: вона розуміється навіть в MS-DOS і "залізні" DVD-плеєри її теж дуже люблять. Є також Joliet – надбудова над ISO-9660, роздільна довгі імена файлів, причому навіть в Unicode. І Linux, і Windows добре розуміють цю файлову систему, і багато "залізних" плеєри теж.
   
Але повернемося до UDF: її підтримку треба обов'язково включати, якщо ви записуєте "стандартний" DVD з відео, тобто з чіткою структурою каталогів VIDEO_TS (з фільмом, що складається з VOB-файлів) і іноді AUDIO_TS. Втім, особисто я використовую UDF при записі будь-яких DVD. Є два способи включити UDF для образу диска. Перший – використовувати ключ -udf, А другий – це "орієнтований" на DVD Video параметр -dvd-video. В останньому випадку треба, щоб імена файлів і каталогів (VIDEO_TS та інших) були у верхньому регістрі. При створенні образу файли (їх вміст) будуть відсортовані і розташовані в образі диска. Сортування не відбудеться, якщо всі назви не в верхньому регістрі. Все це повинно "сприяти" читання одержуваних дисків на всіх "залізних" DVD-плеєрах. Однак я цю сортування не включаю, і за наявною у мене інформації записані без неї диски з DVD Video все одно нормально читаються на "залізних" плеєрах.
   
Інше розширення до ISO-9660 – це Rock Ridge. Воно за замовчуванням включено в k3b і дає можливість використовувати більш довгі, ніж в Joliet, імена файлів, а також більшу глибину вкладеності каталогів і атрибути файлів UNIX (зверніть на це особливу увагу). Rock Ridge включається параметром -r, А назва цього розширення взято з фільму Мела Брукса "Блискучі сідла" (там було містечко Рок Рідж). Особливої потреби у включенні Rock Ridge я не бачу. До слова, записані мною у k3b (з включеним Rock Ridge) диски з DVD Video читаються лише з правами користувача root.
   
   
    Запис образу
   
   
Коли образ підготовлений, треба його записати на болванку. Тут допоможе програма wodim. У найпростішому випадку її запуск виглядає так:
   

# wodim dev=/dev/hdc -eject -v mycd.iso

   
Очевидно, що замість /dev/hdc ви можете підставити інший пристрій, а mycd.iso– Це назва файлу з образом. Параметр -eject висуває каретку приводу після закінчення запису. У wodim є ряд інших цікавих параметрів:


   
На цьому можна було б і закінчити статтю, але я не торкнувся ще однієї важливої теми – записи звичайних звукових CD.
   
   
    Запис музичних дисків
   
   
Перед записом аудіодиска необхідно підготувати звукові доріжки. Це звичайні WAV-файли з певними параметрами: два канали (стерео), знаковий integer – 16 біт, частота оцифровки – 44100 герц, PCM (Pulse-code modulation). Грубо кажучи, це самий стандартний WAV-файл, який можна собі уявити. Оскільки часто такі файли і з'являються в результаті їх копіювання з аудіодисків, спочатку розгляну цю, "зворотний" запису, операцію. Якщо ви хочете скопіювати audioCD, отримавши музичні файли з оригінальним якістю, вам допоможе утиліта cdparanoia. Взагалі вона знаменита своїм умінням зчитувати музику навіть з вкрай подряпаних дисків. Це вміння займає дуже багато часу, тому його можна відключати ключем Z. Тоді запуск програми виглядає приблизно так:
   

$ cdparanoia -BZ

   
Другий використовуваний тут параметр – B– Вказує, що кожну доріжку треба зберігати в окремий файл. Всі ці файли зберігаються в поточний каталог. Якщо ви бажаєте скопіювати тільки деякі доріжки, їх діапазон можна задати наступним чином:
   

$ cdparanoia 2-6 -BZ

   
(У прикладі копіюються звукові доріжки з другої по шосту включно.)
   
Тепер – знову до запису аудіодисків. Звуковий CD можна записати в двох режимах: TAO (track at once) і DAO (disk at once). TAO додає між доріжками паузи довжиною в 2 секунди, а крім того, після запису кожної доріжки вимикає лазер. DAO – більш новий і гнучкий режим. У ньому між доріжками можна записувати що завгодно (не тільки паузи, а й, наприклад, звукові нотатки), завдяки чому стає можливої навіть запис доріжки, яка буде доступна до відтворення, проте не пронумерована – слухач знайде її тільки перемотуванням (Прим. ред.: Це і є так звані "hidden tracks", часто поміщаються музичними виконавцями в кінець альбому.). У такі диски можна впроваджувати і текст (CD-Text). Крім того, DAO-режим – єдиний спосіб записати диск без пауз між піснями. Ще один режим, SAO (session at once), нагадує DAO, але підтримує багатосесійному. Для вибору режиму запису в wodim існують перемикачі:
   

-tao
-dao
-sao

   
Щоб записати WAV-файли на болванку, потрібно виконати приблизно таку команду (з каталогу, де вони знаходяться):
   

# wodim dev=/dev/hdc -tao -eject speed=4 -pad -audio *.wav

   
Розглянемо параметри. Нових для нас – всього два:


   
    Висновок (про growisofs)
   
   
Багато задач, описані в цій статті, вирішуються й іншими способами. Наприклад, для копіювання музичного диска в WAV-файли є утиліта icedax, а копіювати диск з даними можна командою readom. Цілком за бортом залишився консольна утиліта growisofs, що служить для запису даних на DVD, тому кінцівку я вирішив присвятити саме їй. growisofs – це подібність надбудови над wodim і genisoimage. Програма розуміє параметри від genisoimage. Ось як з її допомогою можна записати диск:
   

# growisofs -Z /dev/dvd -J -f -udf /foo/bar

   
"Рідний" параметр тут один – -Z, Який вказує, що записується перша сесія. Для наступної треба вказувати ключ -M. Інших власних параметрів у growisofs небагато. З основних назву лише -overburn, -Speed = швидкість і -dvd-compat (Закриває диск DVD + R і DVD-R: його не можна буде доповнити, зате він добре читається на "залізних" плеєрах).
   
Фіналізація багатосесійному диска з growisofs:
   

# growisofs -M /dev/dvd=/dev/zero

   
Запис підготовленого раніше образу диска:
   

# growisofs -dvd-compat -Z /dev/dvd=mycd.iso

   
У ході роботи growisofs образ диска створюється на льоту і через канал (pipe) вирушає на програмне забезпечення запису.
   
На завершення дам пораду, значення якого важко недооцінити: Працюючи з genisoimage і growisofs, не забувайте про параметр -f!

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*