Пишем диски в консоли Linux, в качестве памятки
Люди привыкли использовать навороченные пакеты типа Nero для записи CD/DVD дисков, которые просто прожигают оптические диски, а как они это делают, людям не интересно. Но мне, однажды, стало интересно и я решил по эксперементировать. Нижеперечисленные способы прожига/чтения оптических дисков с использованием файловой системы ext2fs не претендуют на повседневное использование, они лишь показывают, насколько большие возможности и прозрачную логику действий дает нам Linux.
Немного банальностей
Необходимая утилита для прожига дисков в Linux - cdrecord находится в пакете cdrkit. Так же она есть и в cdrtools, но с ним у меня возникали некоторые проблемы с записью больших файлов.
Быстро очистить CD/DVD-RW диск можно так:
1 | $ cdrecord blank=fast |
Полностью очистить CD/DVD-RW:
1 | $ cdrecord blank=all |
Записать образ на диск:
1 | $ cdrecord /path/to/obraz.iso |
Смонтировать образ в папку:
1 | $ mount -o loop /path/to/obraz.iso /mnt/obraz/ |
Создать образ CD/DVD диска:
1 | $ dd if=/dev/cdrom of=obraz.iso |
Проверить диск после прожига можно так:
считываем хэш образа, который записывали
1 2 | $ md5sum obraz.iso
2fa86f762895faef7833c6d1adf68cb2 |
считываем хэш с оптического диска и сверяем
1 2 | $ dd if=/dev/cdrom | md5sum
2fa86f762895faef7833c6d1adf68cb2 |
У cdrecord есть флаг -v — для подробного вывода информации о прожиге/очистке и -eject — для автоматического открытия лотка cdrom-a после завершения работы утилиты.
Не обязательно указывать устройство — если не укажете, cdrecord попробует найти его самостоятельно.
Определить файловую систему образа можно утилитой file
Как вы могли заметить, cdrecord записывает файл так же, как записывают образы дисков. Т.е. если вы запишите видео-файл так
$ cdrecord video.avi
то, примонтировать такой диск вы не сможете, т.к. на нем нет файловой системы. Однако, вы сможете создать образ диска, на котором, собственно, кроме video.avi, ничего и нет
1 | # dd if=/dev/cdrom > video.avi |
Получившийся файл вы сможете, как обычно, открыть видеоплеером.
Но как же записать каталог с файлами на DVD диск, чтобы передать его другу? Да, все верно, надо сначала создать образ с файловой системой с этим каталогом, а затем, записать этот образ на диск. К примеру:
1 2 | $ genisoimage -R -o pictures.iso Pictures/
$ cdrecord pictures.iso |
Записали. Монтируем и проверяем:
1 | # mount -t iso9660 /dev/cdrom /mnt/cdrom/ |
Флаг -R у genisoimage добавляет поддержку Rock Ridge.
Таким образом для записи использовалось всего две команды. Лично для меня это удобнее и прозрачнее, чем использовать GUI.
Экспериментируем
Обычно, на оптических дисках используются файловые системы iso9660 или udf, но перед вами нет никаких ограничений в использовании других файловых систем. Вы можете создать образ любого диска с любой файловой системой и просто записать его на DVD (главное, чтоб влез), затем, его смонтировать.
Например:
Создадим файл, размером 2000МБ:
1 2 3 4 | $ 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 |
Сделаем его блочным устройством. Это нужно для того, чтобы мы могли создать на нем файловую систему.
1 | # losetup /dev/loop0 test.ext2 |
(освободить /dev/loop0 можно командой # losetup -d /dev/loop0 )
Создаем файловую систему.
1 | # mkfs.ext2 -c /dev/loop0 -b 2048 |
С block size меньше 2048 ( по умолчанию — 1024 ) у меня не получалось примонтировать свежепрожженый диск, так что не опускайте эту опцию.
Теперь можно освободить /dev/loop0 и примонтировать сам образ:
1 2 | # losetup -d /dev/loop0
# mount -o loop test.ext2 /mnt/testfs |
Убеждаемся, что на /mnt/testfs есть свободное место:
1 2 | $ df -h | grep testfs /dev/loop0 2,0G 9,1M 1,9G 1% /mnt/testfs |
Копируем туда всякую всячину:
1 2 3 4 | $ cp -r /files/Pictures/интерьер /mnt/testfs/ $ cp -r /files/Video/Экстрим-Спорт/NASCAR.mkv /mnt/testfs $ ls /mnt/testfs/ lost+found NASCAR.mkv интерьер |
Если вы не можете скопировать файлы по причине отсутствия прав доступа, сделайте вашего пользователя владельцем каталога, в который вы смонтировали образ:
1 | # chown youruser /mnt/testfs |
Проверяем, сколько места осталось:
1 2 | $ df -h | grep testfs /dev/loop0 2,0G 1,1G 829M 56% /mnt/testfs |
Ну, теперь можно записывать файл на DVD-RW. Никаких ухищрений не надо, файл просто запишется как образ и диск можно будет примонтировать обычным способом.
1 | $ cdrecord test.ext2 |
После прожига, можно проверить диск:
1 2 3 4 5 | $ md5sum test.ext2 b62ecdb7a752db36d129593cc4b72380 test.ext2 # dd if=/dev/cdrom | md5sum dd: чтение «/dev/cdrom»: Ошибка ввода/вывода 12253db79095cc7943f534445510d539 |
Приехали… хэши не совпадают. Видимо, мой DVD-RW уже изжил свое. Попробуем полную очистку вместо быстрой и запишем заново:
1 2 | $ cdrecord blank=all
$ cdrecord test.ext2 |
Теперь все записалось хорошо. Монтируем диск:
1 | # mount /dev/cdrom /mnt/cdrom |
Готово! Не пришлось даже указывать тип файловой системы
1 2 | $ ls /mnt/cdrom
NASCAR.mlv интерьер |
Такой DVD диск с файловой системой ext2fs будет легко монтироваться в Linux/BSD системах, но пользователи Windows, к сожалению, его прочитать не смогут. Однако, этот пример показывает, что Linux никак не ограничивает пользователя в возможностях.
Popularity: 5% [?]
Похожие записи:
- Nginx + PHP-FPM или полный отказ от Apache2
- Виртуализация Linux средствами OpenVZ. Настраиваем собственный сервер виртуализации.
- Установка проприетарных драйверов Nvidia в OpenSUSE 11.4
- Nginx + HTTP Basic авторизация
- Рисуем графики нагрузки Nginx в Cacti








