понедельник, 30 марта 2009 г.

ISO9660 from terminal

Работа с 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.

Отправить комментарий