/ Статьи / Системное / Прожиг дисков в Linux из консоли. Не совсем обычные способы записи и монтирования CD/DVD дисков. /

Прожиг дисков в Linux из консоли. Не совсем обычные способы записи и монтирования CD/DVD дисков.

Дата публикации: May 10, 2010, 11:57 p.m.
Теги: cd, dvd,
Автор: Brainsburn

прожиг cd dvd дисков

Люди привыкли использовать навороченные пакеты типа Nero для записи CD/DVD дисков, которые просто прожигают оптические диски, а как они это делают, людям не интересно. Но мне, однажды, стало интересно и я решил поизвр^Wпоэксперементировать =) Нижеперечисленные способы прожига/чтения оптических дисков с использованием файловой системы ext2fs не претендуют на повседневное использование, они лишь показывают, насколько большие возможности и прозрачную логику действий дает нам Linux.

Немного банальностей

Необходимая утилита для прожига дисков в Linux - cdrecord находится в пакете cdrkit. Так же она есть и в cdrtools, но с ним у меня возникали некоторые проблемы с записью больших файлов.

Быстро очистить CD/DVD-RW диск можно так:
$ cdrecord blank=fast
Полностью очистить CD/DVD-RW:
$ cdrecord blank=all
Записать образ на диск:
$ cdrecord /path/to/obraz.iso
Смонтировать образ в папку:
$ mount -o loop /path/to/obraz.iso /mnt/obraz/
Создать образ CD/DVD диска:
$ dd if=/dev/cdrom of=obraz.iso
Проверить диск после прожига можно так:
считываем хэш образа, который записывали
$ md5sum obraz.iso
2fa86f762895faef7833c6d1adf68cb2
считываем хэш с оптического диска и сверяем
$ dd if=/dev/cdrom | md5sum
2fa86f762895faef7833c6d1adf68cb2
У cdrecord есть флаг -v - для подробного вывода информации о прожиге/очистке и -eject - для автоматического открытия лотка cdrom-a после завершения работы утилиты.

Не обязательно указывать устройство - если не укажете, cdrecord попробует найти его самостоятельно.

Определить файловую систему образа можно утилитой file

Как вы могли заметить, cdrecord записывает файл так же, как записывают образы дисков. Т.е. если вы запишите видео-файл так

$ cdrecord video.avi
то, примонтировать такой диск вы не сможете, т.к. на нем нет файловой системы. Однако, вы сможете создать образ диска, на котором, собственно, кроме video.avi, ничего и нет
# dd if=/dev/cdrom > video.avi
Получившийся файл вы сможете, как обычно, открыть видеоплеером.

Но как же записать каталог с файлами на DVD диск, чтобы передать его другу? Да, все верно, надо сначала создать образ с файловой системой с этим каталогом, а затем, записать этот образ на диск. К примеру:

$ genisoimage -R -o pictures.iso Pictures/
$ cdrecord pictures.iso
Записали. Монтируем и проверяем:
# mount -t iso9660 /dev/cdrom /mnt/cdrom/
Флаг -R у genisoimage добавляет поддержку Rock Ridge.

Таким образом для записи использовалось всего две команды. Лично для меня это удобнее и прозрачнее, чем использовать GUI.



Экспериментируем

Обычно, на оптических дисках используются файловые системы iso9660 или udf, но перед вами нет никаких ограничений в использовании других файловых систем. Вы можете создать образ любого диска с любой файловой системой и просто записать его на DVD (главное, чтоб влез), затем, его смонтировать.

Например:
Создадим файл, размером 2000МБ:
$ dd if=/dev/zero of=test.ext2 bs=1M count=2000
2000+0 записей считано
2000+0 записей написано
 скопировано 2097152000 байт (2,1 GB), 21,8446 c, 96,0 MB/c
Сделаем его блочным устройством. Это нужно для того, чтобы мы могли создать на нем файловую систему.
# losetup /dev/loop0 test.ext2
(освободить /dev/loop0 можно командой # losetup -d /dev/loop0 )
Создаем файловую систему.
# mkfs.ext2 -c /dev/loop0 -b 2048
С block size меньше 2048 ( по умолчанию - 1024 ) у меня не получалось примонтировать свежепрожженый диск, так что не опускайте эту опцию.

Теперь можно освободить /dev/loop0 и примонтировать сам образ:
# losetup -d /dev/loop0
# mount -o loop test.ext2 /mnt/testfs
Убеждаемся, что на /mnt/testfs есть свободное место:
$ df -h | grep testfs
/dev/loop0            2,0G  9,1M  1,9G   1% /mnt/testfs
Копируем туда всякую всячину:
$ cp -r /files/Pictures/интерьер /mnt/testfs/
$ cp -r /files/Video/Экстрим-Спорт/NASCAR.mkv /mnt/testfs
$ ls /mnt/testfs/
lost+found  NASCAR.mkv  интерьер
Если вы не можете скопировать файлы по причине отсутствия прав доступа, сделайте вашего пользователя владельцем каталога, в который вы смонтировали образ:
# chown youruser /mnt/testfs
Проверяем, сколько места осталось:
$ df -h | grep testfs
/dev/loop0            2,0G  1,1G  829M  56% /mnt/testfs

Ну, теперь можно записывать файл на DVD-RW. Никаких ухищрений не надо, файл просто запишется как образ и диск можно будет примонтировать обычным способом.

$ cdrecord  test.ext2
После прожига, можно проверить диск:
$ md5sum test.ext2 
b62ecdb7a752db36d129593cc4b72380  test.ext2
# dd if=/dev/cdrom | md5sum 
dd: чтение «/dev/cdrom»: Ошибка ввода/вывода
12253db79095cc7943f534445510d539
Приехали... хэши не совпадают. Видимо, мой DVD-RW уже изжил свое. Попробуем полную очистку вместо быстрой и запишем заново:
$ cdrecord blank=all
$ cdrecord test.ext2
Теперь все записалось хорошо. Монтируем диск:
# mount /dev/cdrom /mnt/cdrom
Готово! Не пришлось даже указывать тип файловой системы :)
$ ls /mnt/cdrom
NASCAR.mlv интерьер
Такой DVD диск с файловой системой ext2fs будет легко монтироваться в Linux/BSD системах, но пользователи Windows, к сожалению, его прочитать не смогут. Однако, этот пример показывает, что Linux никак не ограничивает пользователя в возможностях.






Возможно, эти материалы Вас заинтересуют:


Рекомендовать эту страницу:

Комментарии:(3)

# oziris July 4, 2010, 9:59 a.m.
спасибо за статью, все-бы так объясняли.

# Vollemar March 21, 2011, 4:25 p.m.
а что же вы не упомянули об том, что можно писать файл прямо безо всякой файловой системы
cdrecord somepornofile.avi

его потом даже монтировать ненадо. тупо mplayer /dev/cdrom
и все играет.

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

# Brainsburn March 21, 2011, 9:55 p.m.
Vollemar, про запись файла без ФС упомянул, читайте внимательней ;)

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

Гость, Вы можете оставить свой комментарий.

Стиль кода:
Имя
Сайт * не обязательное поле
Поставьте галку, если вы - бот
Поставьте галку, если вы - человек

Друзья! Убедительная просьба воздержаться от нецензурной лексики!



Справка:
Если вы хотите использовать в тексте комментария специальные символы, например, [ и ], используйте их внутри тега [code] [/code]
Вы можете использовать теги BBcode. Для оформления кода и подсветки синтаксиса используйте тег [code] или [code=название_языка], например, [code=python]
Ссылки вставляйте так: [url]zenux.ru[/url] или так: http://zenux.ru, но не так: zenux.ru
Текст сообщения должен быть в пределах 3000 символов.




Последние комментарии:

Stas: Еще есть хороший редактор Codelobster IDE... >>>
xx: > “Не стоит сильно ругать и проклинать По... >>>
Eugene: Галка, внешний вид изменить совершенно не сложно.... >>>
Галка: А сильно сложно Убунту переделывать?... >>>
Brainsburn_: “Написание в 1-й” подразумевает “в первой”, а не в... >>>