FreeBSD 5.3 для конечного пользователя: три аспекта мультимедиа

Дмитрий Донцов aka mit

2005-05-17

Предисловие

Давно уже прошли те времена, когда FreeBSD считалась операционной системой для серверов, и хотя она в этом качестве по прежнему хороша, никто не запрещает использовать ее как десктопную систему. И в FreeBSD для этого все (если не все, то очень многое) имеется. Не знаю как кому, мне много не нужно:

  1. Воcпроизведение flash в моем любимом браузере Firefox;
  2. Звонки по интернет-телефону Skype;
  3. Работа с usb-устройствами, коих у меня два: обычная флэшка-свисток Transcend, и mp3-плеер MPIO Digit@lway FL-100.

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

1. Возпроизведение flash в браузере Firefox

Первым делом читаем блог Евгения Чайкина aka StraNNicK на эту тему. Поначалу, порт linuxpluginwrapper у меня просто не установился, по той простой причине, что по умолчанию в FreeBSD установлен пакет эмуляции Линукс-приложений - linux_base-rh-7.3. А linuxpluginwrapper, да и многие пакеты из его зависимостей требуют linux_base-8. Не беда, деинсталлируем linux_base-rh-7.3:

$ cd /usr/ports/emulators/linux_base
$ make deinstall

и устанавливаем linux_base-8:

$ cd /usr/ports/emulators/linux_base-8
$ make install clean

Теперь порт linuxpluginwrapper прекрасно собирается, и, кстати говоря, он тянет за собой linux-realplayer-10.0.4 (я бы все равно его поставил, потому что люблю слушать интернет-радиостанции). Отлично, теперь нужно настроить это дело. Это делается предельно просто: файл libmap.conf-FreeBSD5-current копируется из каталога примеров (по умолчанию /usr/local/share/examples/linuxpluginwrapper) в /etc/libmap.conf. Либо, если файл libmap.conf уже существует, просто скопируйте в него из libmap.conf-FreeBSD5-current следующие строки:

# Flash6 with Mozilla/Firebird/Galeon/Epiphany/Konqueror
[/usr/local/lib/linux-flashplugin6/libflashplayer.so]
libpthread.so.0			pluginwrapper/flash6.so
libdl.so.2			pluginwrapper/flash6.so
libz.so.1			libz.so.2
libstdc++-libc6.2-2.so.3	libstdc++.so.4
libm.so.6			libm.so.2
libc.so.6			pluginwrapper/flash6.so

Теперь открываем браузер и любуемся на флэшки:

Если браузер не отображает флэш-анимацию, то наберите в адресной строке about:plugins и убедитесь, что соответствующий плагин подключен.

2. Интернет-телефон Skype

Skype - замечательная штука, вы можете звонить в любую точку мира бесплатно (не учитывая, конечно, цену трафика, которого потребляется не много), на такой же интернет-телефон. Кроме того, можно звонить и на обычные телефоны, но за это уже требуют денюжку.

На сайте http://skype.com нет версии для FreeBSD, однако никто нам не помешает запустить skype в Линукс окружении. И соотвествующий порт имеется - net/skype/ (кстати, тоже зависит от linux_base-8).

$ cd /usr/ports/net/skype/
$ make install clean

Для использования skype вам потребуется гарнитура (микрофон и наушники), которую на любой компьютерной барахолке можно приобрести за 200-300 рублей, подойдет даже самая простейшая. Подключили к звуковой карте? Теперь настроим микрофон, для чего нам потребуется любой программный микшер. Я схватил первый попавшийся - gmixer (порт audio/gmixer/). Вся настройка заключается в установлении уровня сигнала микрофона на максимум (ну или как вам будет угодно).

Далее регистрируемся в сети Skype - это не сложнее, чем регистрация в аське, и на этом все - можем звонить кому хотим.
См. рисунок

Субъективно, качество звука гораздо выше, чем у обычного городского телефона, вы слышите практически неискаженный голос собеседника. Провалы звука конечно бывают (сеть), но это уже зависит от качества вашего подключения к интернету и аналогичного подключения вашего собеседника.

3. Работа с usb-устройствами

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

В файле /etc/rc.conf у вас должно быть указано:

usbd_enable="YES"

Что, как несложно догадаться, инициализирует usbd-демона при загрузке операционной системы. При подключении usb-устройства в каталоге /dev появляется файл (или файлы) соотвествующего устройства.

В моем случае, при подключении флэш-драйва Transcend появляются файлы - /dev/da0 и /dev/da0s4, а при подключении mp3-плеера - /dev/ugen0, /dev/ugen0.1 и /dev/ugen0.3. Появление/исчезновение файлов устройств при подключении/отключении заслуга - devfs (новшество, появившееся в пятой ветке FreeBSD). В FreeBSD 5.3 devfs управляет файлами устройств в каталоге /dev автоматически, так что в использовании /dev/MAKEDEV (как это было ранее) необходимости нет.

Файлы устройств создаются при подключении, однако доступ к ним обычного пользователя невозможен, поскольку права доступа на чтение и запись имеет только root. Решение этой проблемы изложено здесь. Суть метода в том, что соответствующие устройства прописываются в /etc/devfs.conf и при каждом подключении устройства происходит перезапуск devfs, примерно так:

$ /etc/rc.d/devfs restart

Однако мне это не кажется хорошей идеей. Гораздо лучше настроить демон usbd, для чего дописываем в /etc/usbd.conf примерно следующее:

# флэш-драйв
device "JetFlash TS256MJF2L 2.00"
	vendor  0x0ea0
	product 0x2168
	release 0x0200
	attach "/bin/sleep 3 ; /bin/chmod 0660 /dev/da0 /dev/da0s4"

#mp3-плеер
device "MPIO"
	vendor  0x2735
	product 0x0001
	release 0x0100
	attach "/bin/sleep 3 ; /bin/chmod 0660 /dev/ugen0 /dev/ugen0.1 /dev/ugen0.3"

Все, конечно, зависит от устройств, которые у вас есть. Параметр device - незначащий, просто должен быть, vendor - код производителя, product - код устройства, release - неизвестный мне код (колдунство, предыдущих кодов хватает, и без этого праметра можно прекрасно обходиться). Параметр attach важен, здесь мы указываем, что будет происходить при подключении устройства, а по сути - любые команды оболочки. В данном случае, сначала тормозим 3 секунды, чтобы успели появиться файлы устройств, а потом меняем на них права. Права можно установить и в 0666, чтобы устройствами могли пользоваться не только пользователи группы wheel, а вообще все пользователи системы. Кроме этих параметров существует еще параметр detach, который, как не трудно догадаться, определяет, что будет происходить при извлечении устройств.

Коды vendor, product, release можно определить, перезапустив usbd из консоли:

$ killall usbd && usbd -vd

Далее подключите устройства, определите параметры и перезапустите usbd в штатном режиме. Однако же, следует быть аккуратным, поскольку, если у вас есть usb-мышь или usb-клавиатура, то вы можете остаться без них, нажав Ctrl+C. Просто перейдите в другую консоль и выполните:

$ /etc/rc.d/usbd restart

Прекрасно, после этих несложных настроек мы можем подключить флэш-драйв и смонтировать его от пользователя (если, конечно, в вашей системе пользователю позволено это делать):

$ mount_msdosfs /dev/da0 /mount/point

А вот с mp3-плеером MPIO Digit@lway FL-100 сложнее, его нельзя подключить как обычный флэш-драйв, т.е. просто смонтировать. Для работы с этим плеером требуется специальный фирменный драйвер и специальное ПО (MPIO Manager). Это относится ко всем старым моделям MPIO, сейчас эта фирма уже выпускает плееры, которые запросто монтируются, например FY400 (если бы он еще поддерживал формат ogg, цены бы ему не было).

Все было бы совсем плохо, если бы не существовал MPIO Project, благодаря которому мы можем полноценно использовать продукцию MPIO Digit@lway в различных Unix-like системах. И во FreeBSD имеется соответствующий порт:

$ cd /usr/ports/audio/mpiosh
$ make install clean

Однако порт не собирается :), ругается на libusb. Дело в том, что если вы поддерживаете в актуальном состоянии дерево портов, то у вас, наверняка, установлена более новая версия libusb, чем требуется для mpiosh. Однако же, это не есть проблема, сначала узнайте какая версия libusb у вас имеется:

$ libusb-config --version

Затем перейдите в каталог work, откройте файл configure, и замените в нем строчку:

     if test "$LIBUSB_VER" \< "0.1.7"; then

на

     if test "$LIBUSB_VER" \< "0.1.10"; then
То есть, просто укажите актуальную для вашей системы версию libusb, после этого еще раз попробуйте собрать порт, все должно быть хорошо. Более подробно проблема описана здесь.

После этого дайте в консоли команду mpiosh и наслаждайтесь :).
См. рисунок

Нужно заметить, что mpiosh работает со многими старыми моделями MPIO Digit@lway, ну, а новые модели прекрасно работают как флэш-драйвы.

Итого

Если после прочтения этого опуса вы все еще считаете, что FreeBSD - серверная система для волосатых хакеров, абсолютно не приспособленная для использования в качестве рабочей и мультимедийной станции, то вы неисправимый консерватор :).
Успехов!