CITKIT.ru - свободные мысли о свободном софте
Деловая газета CitCity.ru Библиотека CITForum.ru Форумы Курилка
Каталог софта Движение Open Source Дискуссионный клуб Дистрибутивы Окружение Приложения Заметки Разное
09.12.2016

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

ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)
24 December, 22:53
Kubuntu Feisty (15)
24 December, 18:42
Один на один с Windows XP (3758)
24 December, 11:46

Каталог софта

Статьи

Дискуссионный клуб
Linux в школе
Open Source и деньги
Open Source и жизнь
Windows vs Linux
Копирайт
Кто такие анонимусы
Лицензии
Нетбуки
Нужен ли русский Linux?
Пользователи
Дистрибутивы
Идеология
Выбор дистрибутива
Archlinux & CRUX
Debian
Fedora
Gentoo
LFS
LiveCD
Mandriva
OpenSolaris
Slackware
Zenwalk
Другие линуксы
BSD
MINIX
Движение Open Source
История
Классика жанра
Окружение
shell
Библиотеки UI
Графические среды
Шрифты
Приложения
Безопасность
Управление пакетами
Разное
Linuxformat. Колонки Алексея Федорчука
Заметки
Блогометки
Файловые системы
Заметки о ядре

Заметки :: Файловые системы

Запись CD-R/RW в BSD-системах

Версия 1.1
Версия 1.0 - на Unix.ginras.ru

Когда я впервые знакомился FreeBSD, запись компактов в ней мне казаласть задачей сложной и интуитивно неясной. Однако - лишь до тех пор, пока я не попробовал это проделать. И оказалось, что, как и все во Free, это - не просто. А - очень просто. В ознаменование чего я и составил себе для памяти этот маленький HOW-TO'й. Может быть, он еще кому-нибудь пригодится. Тем более, что, за исключением одного оговоренного ниже момента, все сказанное может быть использовано в любой BSD-системе - по крайней мере, за DragonFlyBSD ручаюсь.

Запись CD-R/RW во FreeBSD никогда не требовала каких-либо специфических настроек - типа включения эмуляции SCSI через IDE (что до недавнего времени было необходимо в Linux). Хотя и такой подход не возбраняется - он позволит использовать пакет cdrtools и, главное, многочисленные графические надстройки над ним. Однако часто более простым способом выглядит прямая запись диска штатной Free'шной утилитой burncd.

Тем не менее, в любом случае запись CD-диска начинается с создания его образа. Для чего требуется программа mkisofs из все того же пакета cdrtools. В штатном комплекте FreeBSD Distributions ее нет - она устанавливается из отдельного порта или прекомпилированного бинарника (sysutils/cdrtools). В DragonFlyBSD же этот пакет входит в базовый набор, устанавливаемый при первичной инсталляции.

Собственно создание образа диска происходит здесь точно также, как и в Linux'е:

$ mkisofs -R -J -o iso_name path2data

Опция -R обеспечивает поддержку расширения стандарта ISO9660 - Rock Ridge для Unix-систем (длинные имена, множественные точки в именах файлов, атрибуты доступа и принадлежности файлов и каталогов). Опция -J - это поддержка расширения Joliet для систем семейства Windows (то есть длинные имена файлов будут видны и там). Опция -o имеет своим значением имя создаваемого iso-образа. Ну а path2data - путь к каталогу, из которого будет создаваться образ.

Перед записью образ можно смонтировать для проверки. Делается это от лица root'а. Ранее, во FreeBSD 4-й ветки, это требовало поддержки в ядре псевдо-устройства vn. Такой порядок сохранился и в DragonFly, как это описано в соответствующем микро-How-to. В 5-й же ветке FreeBSD доступ к образу осуществляется через универсальное устройство /dev/md (memory disk - диска в оперативной памяти), поддержка которого включена в ядро GENERIC по умолчанию. Сначала это устройство следует сконфигурировать командой

$ mdconfig -a -t vnode -f path/iso_name

после чего возвращается

md#

где # - номер md-устройства (если оно единственное, будет md0). Собственно монтирование выполняется командой:

$ mount -t cd9660 /dev/md0 /mnt_point

Где /mnt_point - созданный заблаговременно пустой каталог (например, /mnt/iso). После этого этот каталог может быть просмотрен обычным образом, например,

$ ls /mnt/iso

Однако - только в режиме read only (то есть внести изменения в созданный образ простым копированием или удалением не удастся.

По завершении просмотра образа md-устройство следует размонтировать и удалить:

$ umount /mnt/iso;
$ mdconfig -a /dev/md0

Непосредственно запись диска выполняется утилитой burncd, которая входит в штатный комплект Distributions (то есть она доступна сразу после установки FreeBSD). Например, это можно сделать такой командой:

$ burncd -e -s max -f /dev/acd0 data iso_name fixate

Значения опций - следующие:

  • -e обеспечивает выдвижение лотка после записи,
  • -s -скорость записи (по умолчанию - 4, значение max обеспечивает максимально возможную скорость для данных привода и болванки,
  • -f - имя файла устройства (в примере - /dev/acd0),

Команда fixate указывает на фиксирование сессии (подразумевается односессионная запись). Ну а data предписывает запись диска с данными (а не аудиоCD) с образа iso_name.

У burncd есть еще несколько опций, с которыми можно ознакомиться посредством

$ man 8 burncd

В частности, полезной может быть опция -v, выводящая информацию о ходе записи. А опция -t осуществит имитацию записи, что позволяет в случае ошибки избежать порчи болванки.

Для стирания CD-RW в burncd предусмотрены команды blank (быстрая очистка оглавления диска) и erase (полная очистка диска)

$ burncd -e -f /dev/acd0 blank

или

$ burncd -e -f /dev/acd0 erase

соответственно. Нужно только помнить, что вторая операция займет немало времени - столько же, сколько и запись диска.

Если для целей чисто резервного копирования (например, архива вида *.tar.gz) не требуется запись дисков, доступных из других операционок, burncd можно использовать и без предварительного создания iso-образа (и, соответственно, без пакета mkisofs). Все, что для этого нужно (помимо заблаговременно созданного архива подходящего размера) - директива примерно такого вида:

$ burncd -f /dev/acd1c -s max data archive.tar.gz fixate

Правда, записанный таким образом диск не может быть ни прочитан в каких-либо других операционках, ни смонтирован как обычный CD - доступ к нему потребует прямого обращения к файлу соответствующего устройства, например:

$ tar xzvf /dev/acd1c

Однако выполнить запись такого рода гораздо быстрее. Особенно значителен выигрыш во времени при записи очень большого массива данных. В этом случае их можно собрать в единый тарбалл, утилитой split разбить на фрагменты подходящего размера:

$ split --bytes=650m archive.tar.gz [PREFIX]

где в качестве префикса можно указать какое-либо мнемонически полезное значение (дату создания архива, например), после чего последовательно записать кучу образовавшихся файлов (имеющих вид [PREFIX]aa, [PREFIX]ab, и так далее) почти так же, как было сказано выше:

$ burncd -f /dev/acd1c -s max data [PREFIX]?? fixate

Восстановление данных из такого архива выполняется следующим образом. Сначала содержимое полученной стопки дисков последовательно копируется в файлы на винчестере:

$ cp /dev/acd1c path2/file#

Затем они сливаются утилитой cat в единый архив:

$ cat file1 ... file# > archive.tar.gz

который и разворачивается обычным образом.

Возможность применения burncd для резервного копирования без предварительного создания iso-образов определяет, по моему мнению, ее предпочтительность перед cdrecord. Тем не менее, и его использование в BSD-системах не возбраняется - тем более, что в этом случае возможным становится и использование графических front-end'ов типа k3b или xcdroast. Но для этого, как и в Linux'е, необходимо включить эмуляцию SCSI через IDE - так называемый CAM (Common Access Metod). Этот же CAM необходим для записи DVD-дисков.




Комментарии

аноним, Tue Sep 15 14:50:07 2009:
аноним, понедельник, 14 сентября 2009 г. 14:56:08:
FREE BSD

низачот. FreeBSD.
аноним, Tue Sep 15 14:25:41 2009:
аноним, понедельник, 14 сентября 2009 г. 14:56:08:
FREE BSD не система для нарезания болванок, она для сетей

о-ло-ло - тро-ло-ло! а нафига тогда рабочий стол, GUI? Для сетей? - да нифига! кваку играют под фряхой )))
аноним, Mon Sep 14 14:56:08 2009:
FREE BSD не система для нарезания болванок, она для сетей
тупой виндусятник, Mon Sep 14 14:32:59 2009:
это чё? записать один файлик - делать iso? а если к этому файлику добавить другой файлик, надо делать iso из двух файликов, а прежний iso стирать? а если потом надо дописать третий файлик, четвертый, пятый?
или я окончательно торможу, или я не такой и тупой, чё сижу на венде...
Sosochka, Tue May 12 16:11:25 2009:
2аноним, вторник, 3 февраля 2009 г. 07:50:25:

==Боще щь ти мой! Изя, как это пгосто!
Даже сидюк записать у вас - гемор! :)

++Статья 4 летней давности + тут расказывается про консольные приложения.
kido, Tue May 12 11:23:37 2009:
Этот гемор называется думать серым веществом, а не тупо жать на кнопки а потом хвататься за голову.
Отличная статья.
аноним, Sat Feb 14 01:07:03 2009:
Пдчему с DVD диска, не копируется файл образа *.md0 ?
аноним, Tue Feb 3 07:50:25 2009:
Боще щь ти мой! Изя, как это пгосто!
Даже сидюк записать у вас - гемор! :)
аноним, Tue Feb 3 01:53:16 2009:
можно ещё так:
$ mkisofs -R -J path2data | burncd -e -s max -f /dev/acd0 data - fixate
по крайней мере в linux-е такая конструкция работает "на ура".

Комментарии заморожены.

Новости:

Все новости на CitCity.ru

Компании месяца

 
Последние комментарии
Почему школам следует использовать только свободные программы (101)
20 Декабрь, 14:51
ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)

24 Декабрь, 22:53
Linux в школе: мифы про школу и информатику (334)
24 Декабрь, 22:43
Kubuntu Feisty (15)
24 Декабрь, 18:42
Software is like sex: it's better when it's free.
©Linus Torvalds