Запис та використання оптичних носіїв (CD-DVD)
CD мають доріжки, але вони є послідовністю даних, що читається послідовно, і не є фізичною характеристикою диска. Для запису CD у FreeBSD ви готуєте файли даних, які формуватимуть доріжки на компакт-диску, а потім записуєте доріжки на CD.
Файлова система ISO 9660 була розроблена з урахуванням цих відмінностей. На жаль, вона успадкувала обмеження файлових систем, які були тоді. На щастя, вона дає механізм розширень, які дозволяють правильно записаним дискам обходити ці обмеження і при цьому працювати з системами, які не підтримують ці розширення.
Який інструмент використовувати для запису CD, залежить від того, чи є ваш пристрій для запису CD пристроєм ATAPI або будь-яким іншим. З пристроями для запису стандарту ATAPI використовується програма burncd, яка є частиною комплекту постачання системи. З пристроями SCSI та USB потрібно використовувати cdrecord з порту sysutils/cdrtools.
Burncd підтримує не всі пристрої. Щоб визначити, чи підтримується пристрій, перегляньте список підтримуваних пристроїв CD-R/RW .
# mkisofs -o imagefile.iso /path/to/tree
Ця команда створить файл imagefile.iso, який містить файлову систему ISO 9660, яка є копією дерева каталогів /path/to/tree. Під час роботи вона перетворюватиме імена файлів на імена, які задовольняють обмеження файлової системи ISO 9660, і виключить файли, які носять імена, невідповідні для файлової системи ISO.
Для того, щоб уникнути цих обмежень, є кілька опцій. Зокрема, -R включає використання розширень Rock Ridge, поширених у Unix-системах, з -J будуть застосовані розширення Joliet, які використовуються в системах від Microsoft, а-hfs може використовуватися для створення файлових систем HFS, які використовуються в MacOS.
Для CD, які використовуватимуться лише з системами FreeBSD, може використовуватися опція -U , яка скасовує всі обмеження на імена файлів. При використанні з -R генерується образ файлової системи, ідентичний початковому дереву FreeBSD, хоча при цьому стандарт ISO 9660 може порушуватися в декількох місцях.
Останньою часто використовуваною опцією є -b. Вона використовується для вказівки завантажувального образу для використання під час створення завантажувального CD у стандарті "El Torito". Ця опція вказує аргумент, який є маршрутом до завантажувального образу з кореня дерева, що записується на CD. Так що, поклавши, що /tmp/myboot містить завантажувальну систему FreeBSD із завантажувальним чином /tmp/myboot/boot/cdboot , ви можете створити образ файлової системи ISO 9660 в /tmp/bootable.iso наступним чином:
# mkisofs -U -R -b boot/cdboot -o /tmp/bootable.iso /tmp/myboot
Зробивши це, і маючи в ядрі відконфігурований пристрій vn, ви можете змонтувати файлову систему, виконавши:
# vnconfig -e vn0c /tmp/bootable.iso # mount -t cd9660 /dev/vn0c /mnt
У цей момент ви можете перевірити, що /mnt та /tmp/myboot ідентичні.
Якщо ваш пристрій для запису CD відповідає стандарту ATAPI, для запису ISO-образу на компакт-диск ви можете скористатися командою burncd . burncd входить до базового комплекту операційної системи та встановлена як /usr/sbin/burncd . Використовувати її дуже просто, тому що параметрів у неї небагато:
# burncd -f cddevice data imagefile.iso fixate
За цією командою файл imagefile.iso буде скопійовано на cddevice. За промовчанням використовується пристрій /dev/acd0c. Для отримання інформації про параметри,задати швидкість запису, викид диска після запису та запис звукових даних, зверніться до burncd (8) .
Хоча cdrecord має багато опцій, переважно використовувати її ще простіше, ніж burncd . Запис образу ISO 9660 робиться такою командою:
# cdrecord dev = device imagefile.iso
Тонким моментом при використанні cdrecord є визначення правильного пристрою dev. Щоб встановити параметр правильно, скористайтесь прапором -scanbus команди cdrecord , в результаті чого може вийти приблизно такий результат:
Тут наведено відповідні значення параметрів dev для наявних пристроїв. Знайдіть тут пристрій для запису CD, а в якості параметрів для dev задавайте три числа через коми. У нашому випадку CRW-пристрою відповідають числа 1,5,0, так що правильним параметром буде dev = 1,5,0. Є більш простий спосіб задати ці значення; зверніться до довідкової інформації про cdrecord (1) для з'ясування подробиць. Там же знаходиться інформація про запис звукових доріжок, управління швидкістю та іншими речами.
Ви можете копіювати музичні CD, виймаючи дані аудіо з CD до набору файлів, а потім записуючи ці файли на чистий CD. Процес дещо різний у випадках використання пристроїв ATAPI та SCSI.
Використовуйте cdda2wav для отримання даних аудіо.
% cdda2wav -v255 -D2,0 -B -Owav
Скористайтеся cdrecord для запису файлів .wav.
% cdrecord -v dev = 2,0 -dao -useinfo *.wav
Значення, що відповідає 2.0, має бути встановлено правильно, як це описано в 12.5.4.
Драйвер пристроїв ATAPI CD робить кожну доріжку доступною як /dev/acd d t n , де d є номером приводу, n відповідає номеру доріжки. Таким чином, перша доріжка на першому диску носитиме ім'я/dev/acd0t1 .
Переконайтеся, що файл є в каталозі /dev .
# cd /dev # sh MAKEDEV acd0t99
Вийміть кожну запис за допомогою команди dd (1) . При вийманні файлів ви повинні також використовувати специфічне значення розміру блоку.
# dd if = / dev / acd0t1 of = track1.cdr bs = 2352 # dd if = / dev / acd0t2 of = track2.cdr bs = 2352 .
Запишіть вилучені файли на диск за допомогою утиліти burncd. Ви повинні вказати, що це файли з аудіо і що burncd має зафіксувати диск після закінчення роботи.
# burncd -f /dev/acd0c audio track1.cdr track2.cdr. fixate
# dd if=/dev/acd0c of=file.iso bs=2048
Тепер, коли ви маєте образ, ви можете записати його на CD так, як описано вище.
Тепер після того, як ви створили стандартний CDROM з даними, ви, напевно, захочете змонтувати його і рахувати з нього дані. За замовчуванням mount (8) передбачає, що файлова система має тії ufs . Якщо ви спробуєте виконати щось на зразок:
# mount /dev/cd0c /mnt
ви отримаєте повідомлення "Incorrect super block", і диск не змонтується. CDROM не є файловою системою UFS, тому спроби змонтувати його таким чином зазнають невдачі. Вам просто потрібно вказати команді mount (8) , що файлова система має тип ISO9660 і все має заробити. Зробіть це, задавши параметр -t cd9660 під час виклику mount (8) . Наприклад, якщо ви хочете змонтувати пристрій CDROM, /dev/cd0c , каталог /mnt , ви повинні виконати:
# mount -t cd9660 /dev/cd0c /mnt
Зауважте, що ім'я пристрою ( /dev/cd0c у цьому прикладі) може бути іншим, залежно від інтерфейсу, що використовується в CDROM. Крім того, параметр -t cd9660 лише задає виконання утиліти mount_cd9660 (8) . прикладвище може бути спрощений до:
# mount_cd9660 /dev/cd0c /mnt
У такий спосіб, взагалі кажучи, ви можете використовувати компакт-диски люого виробника. Диски з деякими розширеннями ISO 9660 можуть працювати з дивностями. Наприклад, диски Joliet зберігають всі імена файлів у вигляді послідовностей двобайтових символів Unicode. Ядро FreeBSD (поки що) не може працювати з Unicode, тому не англійські символи виводяться у вигляді знаків питання. (Якщо працюєте з FreeBSD 4.3 або пізнішою версією, то в драйвері CD9660 є механізм для динамічного завантаження відповідної таблиці перетворення Unicode. Модулі для деяких поширених кодувань можуть бути отримані з порту sysutils/cd9660_unicode .)
Час від часу ви можете отримувати повідомлення "Device not configured" при спробі змонтувати CDROM. Це зазвичай означає, що привод CDROM вважає, що в ньому немає диска, або що привод не видно на шині. Привод CDROM може знадобитися кілька секунд, щоб зрозуміти, що він був закритий, так що будьте терплячі.
Іноді SCSI CDROM може загубитися через те, що він не мав достатньо часу, щоб відповісти на скидання шини. Якщо у вас є SCSI CDROM, будь ласка, додайте наступний параметр у конфігурацію вашого ядра і перебудуйте його.
Це вкаже вашій шині SCSI витримувати 15-секундну паузу під час завантаження, щоб дати приводу CDROM шанс відповісти на скидання шини.
Ви можете віддати перевагу запису файлу безпосередньо на CD без створення файлової системи ISO 9660. Деякі роблять так при створенні резервних копій. Це виконується набагато швидше. ніж запис стандартного компакт-диска:
# burncd -f /dev/acd1c -s 12 data archive.tar.gz fixate
Для отримання даних, записаних такна компакт-диск, потрібно зчитувати дані з файлу безпосереднього доступу до пристрою:
# tar xzvf /dev/acd1c