Работа с ISO-образами в GNU/Linux из консоли
В большинстве современных дистрибутивов уже включены утилиты по работе с ISO-образами. Их можно создавать и использовать, применяя лишь несколько утилит, в зависимости от цели. Итак, данная статья будет разбита на три небольшие части: монтирование ISO-образа, создание и прожиг.
Использование
За монтирование ISO-образа, как впрочем и за монтирование вообще, в GNU/Linux отвечает mount. ISO-образ монтируется аналогично другим устройствам, с правами суперпользователя:
$ mount -t iso9660 -o loop /home/user/sample.iso /media/cdrom/
Единственные отличия в том, что нужно явно указывать файловую систему и дополнительно "-o loop". В данном примере, файл sample.iso будет смонтирован в каталог /media/cdrom/. Для монтирования нескольких ISO, можно воспользоваться советом из комментариев, и задействовать явное указание /dev/loopX при монтировании, где X - номер loop-устройства, начиная с "0". Например, -o loop=/dev/loop1.
При наличии ошибки: "mount: could not find any device /dev/loop#"
Необходимо предварительно подгрузить модуль "loop", от суперпользователя:
$ modprobe loop
Чтобы получить список файлов и директорий ISO-образа без его монтирования, можно использовать isoinfo:
$ isoinfo -l -i /home/user/sample.iso
Вывод данной команды будет похож на вывод ls -lR в любом каталоге. То есть будут отображены все подкаталоги и их содержимое. Если вывод окажется слишком длинным, можно его направить на less или more, либо на grep, для вывода строк по заданному шаблону:
$ isoinfo -l -i /home/user/sample.iso | less
Создание
ISO-образ в GNU/Linux можно создать из каталога или скопировав содержимое оптического диска используя представленные ниже утилиты. Для создания копии диска существует два варианта. Первый, с использованием утилиты общего назначения - dd (подробней об утилите можно почитать тут, спасибо комментариям), выглядит это так:
$ dd if=/dev/sr0 of=/home/user/sample.iso
где,
/dev/sr0 - используемый привод, заменяйте при необходимости на свой
/home/user/sample.iso - имя образа
Чтобы dd пропускал сбойные секторы, или заполнял ошибочные нулями, можно использовать параметр conv=noerror (спасибо комментаторам). Есть и другой вариант:
$ readcd dev=/dev/sr0 f=/home/user/sample.iso
Для основанных на Debian дистрибутивах, эта строка должна выглядеть так:
$ readom dev=/dev/scd0 f=/home/user/sample.iso
Здесь уже все должно быть ясно. Если все верно и прошло без ошибок, то обе команды создадут ISO-образы с одинаковой контрольной md5sum суммой.
Создать образ из каталога немного сложнее, однако разобраться все же следует. За это отвечает программам genisoimage, в большинстве современных дистрибутивов mkisofs ссылается на нее. Если Вы не уверены, будет ли созданный образ использован в Windows системах, то добавьте опцию - J. Опция -nobak исключит ненужные файлы бекапов, заканчивающихся на ~, а опция -V добавит заголовок образа. Итак, получится следующее:
$ genisoimage -V label -r -J -nobak -o /home/user/sample.iso /home/user/files/
Для детального ознакомления следует почитать man genisoimage.
11 комментариев:
Неплохо было бы для новичков как резать CD и DVD и все камни какие есть, в свое время пришлось долго разбиратся над DVD
Спасибо за комментарий.
Прожиг планировался, о чем нам намекает первый абзац, но не сложилось пока. Думаю, позже будет.
Еше не плохо было бы упомянуть, что для большинства критических операция нужны рутовые права, или соответствующая преднастройка ;)
хм, чего-то я не учел, добавлю
спасибо
А почему не упомянут самый простой способ создания образа диска?
$mount -t iso9660 /dev/scd0 /media/cdrom
$cp /dev/scd0 /home/image.iso
>Однако этот способ имеет недостатки по >сравнению со следующим, который помимо >того, что выполняет dd не читает пустые >секторы и корректирует ошибки:
dd пропускает пустые секторы и корректирует ошибки.
> А почему не упомянут самый простой способ создания образа диска?
как-то он не слишком труЪ выглядит
> dd пропускает пустые секторы и корректирует ошибки.
пруфлинк в студию
>пруфлинк в студию
Тут весьма подробное описание dd.
dd умеет пропускать сбойные секторы (с опцией conv=noerror), либо заполнять нулями несчитанные данные (с опцией conv=noerror).
> $ mount -t iso9660 -o loop /home/user/sample.iso /media/cdrom/
Для "единичного случая" сойдет. Но если возможно монтирование и др. устройств через loopback, то тогда уж лучше явно указать:
-o loop=/dev/loop0
для другого:
-o loop=/dev/loop1
итд.
А сама статья хорошая и полезная для новичков: кратко и по делу.
> с опцией conv=noerror
спасибо, добавил, полезное замечание
> то тогда уж лучше явно указать:
-o loop=/dev/loop0
угу, также добавил, спасибо
а также, благодарю за ссылку на статью по dd, её тоже добавил в статью
Отправить комментарий