Записать CD-диск во FreeBSD при первом знакомстве с этой системой казалось мне делом сложным и интуитивно неясным. Однако - лишь до тех пор, пока я не попробовал это проделать. И оказалось, что, как и все во Free, это - не просто. А - очень просто. В ознаменование чего я и составил себе для памяти этот маленький HOW-TO'й. Может быть, он еще кому-нибудь пригодится.
Запись CD-R/RW во FreeBSD (на примере версии 5.1, но так было и раньше) не требует никаких специфических настроек типа включения эмуляции SCSI через IDE (что необходимо в Linux). Хотя и такой подход не возбранаяется
Запись CD-диска начинается с создания его образа. Для чего требуется программа mkisofs. В штатном комплекте ее нет - устанавливается из портов или пакетов), причем необходимости в прочих компонентах пакета cdrtools не возникает. Собственно создание образа происходит также, как и в Linux'е:
$ mkisofs -R -J -o iso_name path2data-dir
Где опция -R обеспечивает поддержку расширения стандарта ISO9660 - Rock Ridge для Unix-систем (длинные имена, множественные точки в именах файлов, атрибуты доступа и принадлежности файлов и каталогов). Опция -J - это поддержка расширения Jouliet для систем семейства Windows (то есть длинные имена файлов будут видны и там). Опция -o имеет своим значением имя создаваемого iso-образа. Ну а path2data-dir - путь к каталогу, из которого будет создаваться образ.
Рекомендуемый объем образа для записи на 80-минутную болванку - 708 000 000-710 000 000 байт.
Перед записью образ можно смонтировать для проверки. Делается это от лица root'а. Ранее это требовало поддержки в ядре псевдо-устройства vn. Ныне (в 5-й ветке) доступ к образу осуществляется через универсальное устройство md (диска в оперативной памяти), поддержка которого включена в ядро 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. Например, это можно сделать такой командой:
$ burncd -e -s max -f /dev/acd0 data iso_name fixate
Значения опций - следующие:>/p>
- -e обеспечивает выдвижение лотка после записи,
- -s -скорость записи (по умолчанию - 4, значение max - для достижения максимально возможной),
- -f - имя файла устройства (в примере = /dev/acd0),
Команда fixate указывает на фиксирование сессии (подразумевается односессионная запись). Ну а data предписывает запись диска с данными (а не аудиоCD) с образа iso_name.
У burncd есть еще несколько опций, с которыми можно ознакомиться посредством
$ man 8 burncd
В частности, полезной может быть опция -v, выводящая информацию о ходе записи. А опция -t осуществит имитацию записи, что позволяет в случае ошибки избежать порчи болванки.
Для стирания CD-RW в burncd предусмотрены команды blank (быстрая очистка оглавления диска) и erase (полная очистка диска, которая может занять много времени - столько же, сколько и запись).
С помощью burncd можно записывать и мультисессионные диски, но я этого еще не пробовал.
Во FreeBSD можно использовать и стандартный Unix'овый пакет cdrtools, который имеется в портах и пакетах. Но для этого, как и в Linux'е, необходимо включить эмуляцию SCSI через IDE (в ядре GENERIC версии 5.1 она по умолчанию отсутствует).