Запис CD-диску під FreeBSD після першого знайомства з цією системою здавалося мені справою складною та інтуітивно неясною. Однак - лишень до того, як я не спрбував це зробити. Виявилось, що, як і все у FreeBSD, це - не просто. А дуже просто. В ознаменування цього я й склав собі для пам'яті цей маленький 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 -d -u /dev/md0

Безпосередньо запис диску виконується утилітою burncd, яка входить в штатний комплект Distributions. Наприклад, це можна зробити такою командою:

$ 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 можливий запис і мультисесійних дисків, але я ще цього не спрбував.

У FreeBSD можливе використання і стандартного Unix'ового пакету cdrtools, який є в портах та пакетах. Але для цього необхідно вмикати емуляцію SCSI через IDE (в ядрі GENERIC версії 5.1 вона за замовчанням відсутня).