Глава 12. Работа со сменными носителями

Глава 12. Работа со сменными носителями

12.1. Инициализация и использование флоппи-дисков

Флоппи-диски, как и прочие дисковые устройства, очень похожи на жесткие диски, за исключением того, что нуждаются в первоначальном низкоуровневом форматировании. Для использования обычной 1440 KB дискеты, вставленной в первый дисковод, сперва (с правами пользователя root) отформатируйте ее::

# fdformat -f /dev/rfd0a

Затем, создайте единственный раздел, используя disklabel(8):

# disklabel -rw /dev/rfd0a floppy3

Создайте маленькую файловую систему, оптимизированную для маленького пространства:

# newfs -m 0 -o space -i 16384 -c 80 /dev/rfd0a

Теперь дискета может быть смонтирована как любой другой диск. Если у вас имеется дискета с уже созданной на ней файловой системой MS-DOS и вы хотите сделать ее доступной из NetBSD, то воспользуйтесь следующей командой:

# mount -t msdos /dev/fd0a /mnt

Однако, вместо того, чтобы использовать дискеты подобно обычным(большим) дискам, часто бывает удобно пропустить файловую систему и отправлять файлы на потоковое устройство:

# tar cvfz /dev/rfd0a file1 file2 ...

При работе с дискетами MS-DOS, как вариант, можно использовать пакет sysutils/mtools, который позволит избежать опасностей, связанных с извлечением неотмонтированной файловой системой.

12.2. Использование диска ZIP

  1. Убедитесь, что в вашей системе установлен привод ZIP:

    # dmesg | grep -i zip
    sd0 at atapibus0 drive 1: <IOMEGA ZIP 100  ATAPI, , 14.A> type 0 direct removable

    Так, один видим, он отображается sd0, как любой другой SCSI диск. Тот факт, что ZIP подключен к ATAPI, не имеет значения - SCSI ZIP определится точно также. ZIP помечен командой "removable", что позволяет использовать команду:

    # eject sd0
  2. Вставьте ZIP диск

  3. Проверьте состояние разделов ZIP:

    # disklabel sd0
    # /dev/rsd0d:
    type: ATAPI
     ...
    8 partitions:
    #  size offset  fstype [fsize bsize cpg]
     d: 196608  0  unused  0  0   # (Cyl. 0 - 95)
     h: 196576  32  MSDOS      # (Cyl. 0*- 95)
    disklabel: boot block size 0
    disklabel: super block size 0
    Раздел d

    обозначает весь диск, что традиционно для i386.

    Раздел h

    то, что вы ищете. Вы можете видеть, что на разделе используется файловай система MS-DOS.

    Следовательно, для доступа к диску, используйте раздел /dev/sd0h.

  4. Примонтируйте его:

    # mount -t msdos /dev/sd0h /mnt
  5. Получите доступ к файлам:

    # ls -la /mnt
    total 40809
    drwxr-xr-x 1 root wheel  16384 Dec 31 1979 .
    drwxr-xr-x 28 root wheel  1024 Aug 2 22:06 ..
    -rwxr-xr-x 1 root wheel 1474560 Feb 23 1999 boot1.fs
    -rwxr-xr-x 1 root wheel 1474560 Feb 23 1999 boot2.fs
    -rwxr-xr-x 1 root wheel 548864 Feb 23 1999 boot3.fs
    -rwxr-xr-x 1 root wheel 38271173 Feb 23 1999 netbsd19990223.tar.gz
  6. Отмонтируйте ZIP:

    # umount /mnt
    #
  7. Выньте ZIP:

    # eject sd0
    #

12.3. Чтение данных с CD в NetBSD

Data CD могут содержать программы, музыку (mp3, wav), фильмы (mp3, quicktime), исходные тексты, текстовые файлы и т.д. Перед тем, как получить доступ к этим файлам, CD должен быть подмонтирован к каталогу, подобно жесткому диску. Точно так же как и жесткие диски, имеющие различные файловые системы (ffs, lfs, ext2fs, ...), CD так же имеет файловую систему, называемую "cd9660". Реализованная в NetBSD файловая система cd9660 может использоваться как с поддержкой расширений Rockridge и Joliet, так и без них.

Устройства CD именуются как /dev/cd0a для SCSI и IDE (ATAPI).

Вы можете начать, имея эту информацию:

  1. Убедитесь в наличии привода CD:

    # dmesg | grep ^cd
      cd0 at atapibus0 drive 0: <CD-R/RW RW8040A, , 1.12> type 5 cdrom removable
      cd0: 32-bit data port
      cd0: drive supports PIO mode 4, DMA mode 0
      cd0(pciide0:1:0): using PIO mode 0, DMA mode 0 (using DMA data transfers)

    Здесь показано, что у вас имеется одни диск, "cd0". Это устройство IDE/ATAPI находится на шине atapibus0. Конечно, это устройство является сменным. Смотрите ниже.

  2. Вставьте CD

  3. Вручную примонтируйте CD:

    # mount -t cd9660 /dev/cd0a /mnt
    #

    Эта команда ничего не выводит. Она указывает системе примонтировать CD, находящийся по адресу /dev/cd0a, используя файловую систему "cd9660" к точке монтирования "/mnt", которая при этом, обязательно должна существовать.

  4. Проверьте содержимое CD:

    # ls /mnt
    INSTALL.html INSTALL.ps TRANS.TBL boot.catalog
    INSTALL.more INSTALL.txt binary  installation
    #

    Все просто здорово! Конечно, это NetBSD CD :)

  5. Отмонтируйте CD:

    # umount /mnt
    #

    Учтите, что если какая-либо программа обращается к этому каталогу (например "cd" с другой консоли), то эта команда не сработает. Если вы выключаете систему, то диск отмонтируется автоматически, не волнуйтесь.

  6. Создайте запись в /etc/fstab:

    Если вы не хотите каждый раз вводить полностью команду "mount", то есть возможность внести соответствующие значения в /etc/fstab:

    # Device  mountpoint  filesystem mount options
    /dev/cd0a  /cdrom   cd9660  ro,noauto 

    Необходимо создать точку монтирования /cdrom, выполните:

    # mkdir /cdrom
    #

    Теперь вы можете примонтировать диск следующей командой:

    # mount /cdrom
    #

    Доступ к диску и его отмонтирование осуществляется как и прежде.

    CD не будет примонтирован во время начальной загрузки, если указать опцию "noauto". Эта функция достаточно полезна, так как вы не будете все время иметь диск в приводе. Для получения дополнительной информации, обратитесь к man.mount.8; и mount_cd9660(8).

  7. Открыть CD:

    # eject cd0
    #

    Если диск примонтирован, то извлечь вы его не можете.

12.4. Чтение мульти-сессионных CD в NetBSD

Используйте mscdlabel(8) для добавления всех сессий к метке диска и затем используйте соответствующую ноду устройства для монтирования интересующей вас сессии. Возможно, вам придется создать необходимую ноду в /dev вручную. Например:

# mscdlabel cd1
track (ctl=4) at sector 142312
 adding as 'a'
track (ctl=4) at sector 0
 adding as 'b'
# ls -l /dev/cd1b
ls: /dev/cd1b: No such file or directory
# cd /dev
# ls -l cd1*
brw-r----- 1 root operator  6, 8 Mar 18 21:55 cd1a
brw-r----- 1 root operator  6, 11 Mar 18 21:55 cd1d
# mknod cd1b b 6 9

создаст /dev/cd1b. Проверьте права доступа для всех создаваемых вами устройств:

# ls -l cd1*
brw-r----- 1 root operator  6, 8 Mar 18 21:55 cd1a
brw-r--r-- 1 root wheel   6, 9 Mar 18 22:23 cd1b
brw-r----- 1 root operator  6, 11 Mar 18 21:55 cd1d
# chgrp operator cd1b
# chmod 640 cd1b
# ls -l cd1* 
brw-r----- 1 root operator  6, 8 Mar 18 21:55 cd1a
brw-r----- 1 root operator  6, 9 Mar 18 22:24 cd1b
brw-r----- 1 root operator  6, 11 Mar 18 21:55 cd1d

Теперь вы можете монтировать их.

# mount /dev/cd1b /mnt

12.5. Доступ непривилегированных пользователей к CD

По умолчанию, в NetBSD только пользователь "root" имеет право монтировать файловые системы. Если вы хотите дать такую возможность пользователям, то выполните следущее:

  • Дать права доступа к устройству.

    # chmod go+rw /dev/cd0a
  • Указать NetBSD, что пользователи имеют право монтировать файловые системы.

    # sysctl -w vfs.generic.usermount=1

    Обратите внимание, что это будет работать для всех устройств и файловых систем, а не только для CD с файловой системой ISO 9660.

Для нормальной работы нам необходимо создать точку монтирования. Например:

$ cd $HOME
$ mkdir cdrom
$ mount -t cd9660 /dev/cd0a `pwd`/cdrom

Пожалуйста, посмотрите mount(8) и, в качестве альтернативы, amd(8). Файлы примеров можно найти в /usr/share/examples/amd.

12.6. Монтирование образов ISO

Иногда бывает необходимо примонтировать образ ISO9660 файла перед тем, как прожечь его на диск. Если вы ранее работали с Linux, то знаете, что там это делается с помощью специальной файловой системы loop. В NetBSD испольуется другой путь: псевдо-диск vnode.

Иллюстрируем это примером. Предположим, что у вас есть ISO образ в вашем домашнем каталоге, называемый "mycd.iso":

  1. Запустим новую vnode, "указав" на файл ISO:

    # vnconfig -c vnd0 ~/mycd.iso
  2. Монтируем vnode:

    # mount -t cd9660 /dev/vnd0a /mnt
  3. Ух ты! Содержимое образа стало доступно в /mnt! Идите в этот каталог и работайте с образом.

  4. Отмонтировать образ можно следующим образом:

    # umount /mnt
  5. Затем, отконфигурируем vnode:

    # vnconfig -u vnd0

Обратите внимани, что этот метод может быть применен к любому файлу, содержащему файловую систему, а не только к образу ISO.

Для получения дополнительной информации обратитесь к vnd(4) и vnconfig(8).

12.7. Использование video CD с NetBSD

Для проигрывания MPEG Video, примонтируйте CD как обычный диск с данными (смотрите Раздел 12.3, «Чтение данных с CD в NetBSD») и затем воспользуйтесь пакетами graphics/mtv, multimedia/xine-ui, multimedia/mplayer or multimedia/gmplayer для воспроизведения mpeg файлов, сохраненных на CD.

12.8. Использование audio CD в NetBSD

Есть два способа работать с аудио компакт-дисками:

  1. Указать приводу проигрывать диск через наушники или звуковую карту, к которой привод CDROM должен быть непосредственно подключен. Для этого используйте такие программы, как cdplay(1), audio/xmcd, "kscd" из пакета audio/kdemultimedia, миксеры mixerctl(1), audio/xmix, audio/xmmix, базирующуюяся на Curses audio/cam или kmix, также являющейся частью пакета audio/kdemultimedia.

    Обычно, это работает на всех типах приводов - SCSI и IDE (ATAPI) CDROM, CDRW и DVD.

  2. Читать ("rip") аудиотрэки в бинарном виде без цифро->аналогового преобразования. Для этого существует несколько программ:

    • Для большинства приводов ATAPI, SCSI и некоторых пропиетарных стандартов может использоваться пакет audio/cdparanoia. С помощью этого пакета, данные могут быть сохранены в файл или направлены на стандартный выход в формате WAV, AIFF, AIFF-C или raw. В настоящее время, для версии cdparanoia, используемой в NetBSD, требуется указание опции -g. Приедем пример, где мы сохраняем 2-ой трэк диска в формате WAV:

      $ cdparanoia -g /dev/rcd0d 2 track-02.wav

      Если вы хотите грабить все файлы с диска,то вам может быть полезен пакетный режим:

      $ cdparanoia -g /dev/rcd0d -B
    • Для приводов ATAPI или SCSI CD-ROM может быть использован пакет audio/cdd. Для распаковки 2-го трэка с помощью cdd необходимо:

      # cdd -t 2 `pwd`

      Эта команда поместит файл, называемый track-02.cda в текущий каталог.

    • Так же, для приводов SCSI может использоваться пакет audio/tosha. Для распаковки 2-го трэка с помощью tosha необходимо:

      # tosha -d CD-ROM-device -t 2 -o track-02.cda

    Полученные данные могут быть затем кодированы в поток MP3 (смотрите Раздел 12.9, «Создание файлов MP3 (MPEG layer 3) из audio CD») или записаны на CD-R (смотрите Раздел 12.11, «Создание диска с аудио-данными»).

12.9. Создание файлов MP3 (MPEG layer 3) из audio CD

Основными шагами, необходимыми для создания файла MPEG layer 3 (MP3) из audio CD (используя программное обеспечение из коллекции портов NetBSD) являются:

  1. Распаковка (rip) аудио данных с CD как указано в Раздел 12.8, «Использование audio CD в NetBSD».

  2. Конвертация CD audio в формат WAV. Для этого просто необходимо дать задание необходимой программе (такой как tosha или cdd).

    • Используя пакет audio/sox выполните:

      $ sox -s -w -c 2 -r 44100 -t cdr track-02.cda track-02.wav

      она конвертирует track-02.cda из raw CD format в track-02.wav формата WAV, используя signed 16-bit words with 2 channels at a sampling rate of 44100kHz.

  3. Кодирование WAV файла в формат MP3.

    • Используя пакет audio/bladeenc, выполните:

      $ bladeenc -128 -QUIT track-02.wav

      Эта команда кодирует track-02.wav в файл track-02.mp3 формата MP3 с битрейтом 128kBit/sec. В документации на bladeenc найдется дополнительная информация.

    • При использовании пакета audio/lame введите:

      $ lame -p -o -v -V 5 -h track-02.wav track-02.mp3

      Вы можете использовать более низкое качество, в зависимости от вашего вкуса и аппаратных средств.

Готовый файл можно прослушать одним из следующих пакетов: audio/gqmpeg, audio/maplay, audio/mpg123 или audio/splay.

12.10. Использование CD-R для записи данных

Процесс записи разделяется на два шага, первый заключается в создвнии образа диска, а второй - непосредственно в записи его на носитель.

  1. Чтоение существующего ISO образа

    # dd if=/dev/rcd0a of=filename.iso bs=2k
    #

    Вы можете самостоятельно создать образ:

  2. Создание ISO образа

    Поместите исходные данные в один каталог. Образ диска содержит данные, помещаемые на диск в том виде, в котором они будут отображаться, используя формат ISO 9660. Базовый формат ISO 9660 пониает только имена 8+3 (имя и расширение). Поскольку это не соответствует практике Unix, то используется расширение "Rockridge Extension", поддерживающее длинные имена. В мире Microsoft так же есть подобное расширение, оно называется Joliet.

    Образ диска создается командой mkisofs из пакета sysutils/cdrecord.

    Пример: если ваши данные находятся в каталоге /usr/tmp/data, вы можете создать образ /usr/tmp/data.iso следующей командой:

    $ cd /usr/tmp
    $ mkisofs -o data.iso -r data
    Using NETBS000.GZ;1 for data/binary/kernel/netbsd.INSTALL.gz (netbsd.INSTALL_TINY.gz)
    Using NETBS001.GZ;1 for data/binary/kernel/netbsd.GENERIC.gz (netbsd.GENERIC_TINY.gz)
     5.92% done, estimate finish Wed Sep 13 21:28:11 2000
     11.83% done, estimate finish Wed Sep 13 21:28:03 2000
     17.74% done, estimate finish Wed Sep 13 21:28:00 2000
     23.64% done, estimate finish Wed Sep 13 21:28:03 2000
     ...
     88.64% done, estimate finish Wed Sep 13 21:27:55 2000
     94.53% done, estimate finish Wed Sep 13 21:27:55 2000
    Total translation table size: 0
    Total rockridge attributes bytes: 5395
    Total directory bytes: 16384
    Path table size(bytes): 110
    Max brk space used 153c4
    84625 extents written (165 Mb)
    $

    Обратитесь к странице руководства man mkisofs(8), для получения дополнительной информации по опциям утилиты. Документ Bootable CD ROM How-To поможет вам создать загрузочный CD.

  3. Запись образа на CD-R

    После того, как вы создали образ диска, необходимо записать его на CD. Это делается с помощью команды "cdrecord" пакета sysutils/cdrecord package. Вставьте пустой диск в привод и выполните:

    # cdrecord -v dev=/dev/rcd0d data.iso
    ...
    #

    В процессе выполнения вам будет показано много информации о приводе, диске и образе. Также идет обратный 10-ти секундный отсчет, что дает последнюю возможность отменить прожиг (при нажатии ^C).

    Обратите внимание, что cdrecord(8) работает как со SCSI, так и с IDE (ATAPI) приводами.

  4. Проверка

    Подмонтируйте записанный CD и проверьте доступность данных, смотрите Раздел 12.3, «Чтение данных с CD в NetBSD».

12.11. Создание диска с аудио-данными

Если вы хотите сделать резервную копию одного из ваших аудио компакт-дисков, то можно извлечь ("ripping") данные с диска и записать их на новый диск. Конечео, все прекрасно работает и в случае, если вы берете трэки с разных дисков, то есть вы можете создать диск, содержащий выбранные вами композиции!

Последовательность действий следущая:

  1. Взать ("rip") аудио-трэки руководствуясь Раздел 12.8, «Использование audio CD в NetBSD», в результате чего получим файл .wav

  2. Запишем файл .wav, используя sysutils/cdrecord:

    # cdrecord -v dev=/dev/rcd0d -audio -pad *.wav

12.12. Создание audio CD из mp3s

If you have converted all your audio CDs to mp3 and now want to make a mixed CD for your (e.g.) your car, you can do so by first converting the .mp3 files back to .wav format, then write them as a normal audio CD.

Необходимые шаги :

  1. Cоздаем .wav из .mp3:

     $ mpg123 -w foo.wav foo.mp3

    Сделайте это для всех mp3 файлов, которые вы хотите иметь на вашем аудио компакт-диске. Имена файлов .wav, которые вы используете, не имеют значения.

  2. Записать .wav на CD, как описано в Раздел 12.11, «Создание диска с аудио-данными».

12.13. Копирование audio CD

Копировать аудио компакт-диск без пауз, как это определяется стандартом CDDA вы можете используя утилиту cdrdao.:

# cdrdao read-cd --device /dev/rcd0d data.toc
# cdrdao write --device /dev/rcd1d data.toc

12.14. Копирование CD, имея два привода

Если у Вас на машине установлен и CD-R и CD-ROM, то Вы можете скопировать диск следующей командой:

# cdrecord dev=/dev/rcd1d /dev/rcd0d

Здесь CD-ROM (cd0) содержит компакт-диск, который Вы хотите копировать и CD-R (cd1) содержит чистый диск. Обратите внимание, что это работает только с компьютерными дисками, которые содержат некоторый вид данных, и не работает с аудио компакт-дисками! На практике Вы можете захотеть добавить такой параметр, как "speed=8" чтобы ускорить поцесс.

12.15. Использование CD-RW rewritables

Вы можете работать с приводом CD-RW точно так же, как и с приводом CD-R (смотрите Раздел 12.10, «Использование CD-R для записи данных»), создавая образы с помощью mkisofs(8) и записывая их с помощью cdrecord(8). Если Вы хотите очистить диск, Вы можете выбрать опцию "blank":

# cdrecord dev=/dev/rcd0d blank=fast

Есть еще несколько способов стереть CD-RW диск, их можно посмотреть вызвав cdrecord(8) с опцией "blank=help". Смотрите руководство cdrecord(8) для получения дополнительной информации.

12.16. Поддержка DVD

В настоящее время NetBSD поддерживает DVD через ISO 9660, используемую для приводов CD-ROM. Новая файловая система UDF, представленная на DVD, в настоящее время не поддерживается. DVDs, DivX и другие avi файлы можно просмотреть с помощью multimedia/ogle или multimedia/gmplayer.

Некоторые советы по созданию DVD смотрите в статье о growisofs и в этой статье, посвязенной записи CD и DVD в NetBSD.

12.17. Создание ISO образа из CD

Для создания ISO образа и контрольной суммы:

# readcd dev=/dev/cd0d f=/tmp/cd.iso

Или используйте dd(1):

# dd if=/dev/cd0d of=/tmp/cd.iso bs=2048

Если диск содержит ошибку, то вы можете попытаться восстановить сохранившееся:

# dd if=/dev/cd0d of=/tmp/cd.iso bs=2048 conv=noerror

Для создания ISO образа, необходимо сперва примонтировать диск:

# mount -t cd9660 -r /dev/cd0d /mnt/cdrom

Во вторых, получить образ:

# mkhybrid -v -l -J -R -o /tmp/my_cd.iso /mnt/cdrom/

12.18. Получение информации о диске с CD и ISO образа

Вы можете прочитать информацию о неотмонтированном диске следующей командой:

# file -s /dev/cd0d

Вы можете прочитать информацию об ISO образе следующей командой:

# isoinfo -d -i /tmp/my_cd.iso

Вы можете просмотреть уникальный номер неотмонтированного диска следующей командой:

# cd-discid /dev/cd0d

Вы можете просмотреть таблицу содержимого неотмонтированного диска следующей командой:

# cdrecord -v dev=/dev/cd0d -toc
Обновлено: 16.03.2015