Мультимедиа в FreeBSD


Dru Lavigne
перевод Станислава Лапшанского
Впервые опубликован: http://www.computerra.ru.


Недавно я купила новый компьютер и решила сделать из него мультимедийную рабочую станцию. Я совершенно измотала себя, проводя слишком много времени за научной работой и сетевым администрированием, поэтому я осознала, что пришло время хорошенько покопаться в мире Flash'а, DVD и mp3.

На первый взгляд, FreeBSD неважно смотрится в качестве операционной системы для рабочей станции. Устоялось мнение, что FreeBSD это "непробиваемый" сервер, однако для того, чтобы заставить работать на ней звуковую плату или Java-программу, вам нужно обладать знаниями доктора наук. Это чушь! Действительно, вам потребуется время для того, чтобы собрать и сконфигурировать необходимые вам компоненты, но в этом и заключается прелесть FreeBSD. Ни одна компания не навяжет вам своего видения того, что должно быть у вас на экране, и вы получите большое удовольствие от осознания того, что создали систему исключительно согласно своему представлению об удобстве и функциональности. Не говоря уже о буквально сотнях мультимедийных программ, некоторые из которых значительно опережают конкурирующие коммерческие решения.

В этой статье я сконцентрирую свое внимание на установке последней версии системы из самых свежих исходников, а также интегрировании Java, Flash и проигрывателя потокового мультимедиа-контента в браузер. Я выбрала медленный, методичный маршрут, так что следуйте за мной, находя моменты, которые будут вам интересны.

Поскольку я являюсь параноиком, я собираюсь провести установку с CD, а затем, защитив систему брандмауэром от вторжений, воспользоваться утилитой cvsup для полного обновления дерева исходных кодов. Перед тем как начать установку, я всегда делаю копии следующих фалов на дискетту:
Файл конфигурации интерпретатора команд (~/.cshrc)
Правила брандмауэра (/etc/ipfw.rules)
Файл /etc/rc.conf, исправленный в соответствии с моими предпочтениями
Файл конфигурации программы cvsup, файл refuse, а так же файл /etc/make.conf.

Затем я инсталлирую систему с CD, при этом выбирая полную инсталляцию, включив в нее установку дерева портов (ports collection). Как только проинсталлирован каталог /bin, я нажимаю Alt+F4, что позволяет мне оказаться в интерпретаторе команд. Я монтирую гибкий диск с сохраненными файлами, и копирую первые три файла:
mkdir /floppy
mount -t msdos /dev/fd0 /floppy
cd
cp /floppy/.cshrc .
source .cshrc (Теперь интерпретатор будет
выдавать мне мое любимое приглашение)

cp /floppy/.cshrc /usr/share/skel/dot.cshrc (теперь и пользователи,
которых я впоследствии
создам будут использовать
мое любимое приглашение)

cp /floppy/ipfw.rules /etc/
cp /floppy/rc.conf /etc/
umount /floppy

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

Теперь, когда я защищена брандмауэром, надо сходить в Интернет и загрузить архивы последних исходных кодов, а также текущее дерево портов. Во-первых, я устанавливаю утилиту cvsup-without-gui:
su
Password:
cd /usr/ports/net/cvsup-without-gui
make install clean

После завершения инсталляции я опять подмонтирую гибкий диск и скопирую необходимые файлы:
mount -t msdos /dev/fd0 /floppy
cp /floppy/cvs-supfile ~
cp /floppy/make.conf /etc/
cd /usr/local/etc
mkdir cvsup
cd cvsup
mkdir sup
cd sup
cp /floppy/refuse .
umount /floppy


Если вы до этого никогда не пользовались утилитой cvsup, вам следует предварительно ознакомиться с содержанием соответствующей главы руководства системного администратора FreeBSD (см. http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/cvsup.html).

Когда я впервые познакомилась с утилитой cvsup, я была одновременно и напугана и заинтригована. Теперь я не могу без нее жить. Она дает мне уверенность ;-) в том, что моя система действительно находится в последнем обновленном состоянии и в отношении функциональности и в отношении безопасности, а также что все мои приложения самые свежие и клевые. В руководстве администратора написано, как правильно отредактировать для ваших нужд необходимые конфигурационные файлы утилиты cvsup. Вот, например, мои выглядят примерно так:
more /root/cvs-supfile
*default host=cvsup.ca.freebsd.org
*default base=/usr/local/etc/cvsup
*default prefix=/usr
*default tag=RELENG_4_6_2_RELEASE
*default release=cvs delete use-rel-suffix compress
src-all
ports-all tag=.
doc-all

more /usr/local/etc/cvsup/sup/refuse
doc/es*
doc/fr*
doc/ja*
doc/ru*
doc/zh*
ports/biology
ports/chinese
ports/french
ports/german
ports/hebrew
ports/japanese
ports/korean
ports/russian
ports/ukranian
ports/vietnamese

more /etc/make.conf
# $FreeBSD: src/etc/defaults/make.conf,v 1.97.2.67
# 2002/06/02 16:07:01 matusita Exp $
#
CFLAGS= -O -pipe
#
# Для запрещения сборки некоторых частей базовой системы:
NO_BIND= true # не собирать BIND
NO_FORTRAN= true # не собирать g77 и соответствующие библиотеки
NO_I4B= true # не собирать пакет isdn4bsd
NO_LPR= true # не собирать lpr и соответствующие программы
NOPROFILE= true # Не компилировать библиотеки для профайлера
NOUUCP= true # не собирать uucp и подобные программы
DOC_LANG= en_US.ISO8859-1

После того, как вы отредактируете конфигурационные файлы, запустите cvsup, вот так:
cvsup -g -L 2 ~/cvs-supfile

В процессе работы cvsup будет выводить на экран информацию о том, что она делает. Во время первого запуска cvsup загрузит много изменений в каталог src, а это значит, что вам придется пересобрать операционную систему (make world). (Чем ты занимался в субботу? Да ничего особенного, просто переделывал мир…) Вам не придется выполнять перекомпиляцию системы после каждого запуска cvsup. Только если изменится каталог src. В однажды обновленной системе каталог src изменяется достаточно редко, обычно это происходит, когда в безопасности системы находят брешь, которую надо закрыть. Руководство администратора содержит инструкции, как регулярно запускать cvsup используя cron. Я предпочитаю делать это вручную, чтобы глядя на вывод cvsup, видеть, изменился ли каталог src (в принципе, ничего не мешает посмотреть вывод в присланном cron'ом письме - прим. переводчика).

Также утилита cvsup загружает последние изменения в коллекции портов. Ее содержимое меняется ежедневно, поэтому я ежедневно запускаю cvsup, для того, чтобы иметь самые свежие версии портов. Затем я запускаю утилиту portupgrade (которая находится в разделе sysutils коллекции портов), чтобы обновить уже установленные у меня порты (При этом следует иметь в виду, что иногда обновленное программное обеспечение работает не так, как хотелось бы и вместо исправления мелких и незаметных для вас багов вы получаете неработоспособную в вашей конфигурации программу. Например, недавно так было с русским апачем, а непосредственно сейчас есть проблемы с proftpd версии 1.2.6. Такие проблемы возникают достаточно редко для того, чтобы можно было не замечать их на домашней системе. Но на сервере это недопустимо - прим. переводчика). Майкл Лукас написал отличную статью (см. http://www.onlamp.com/pub/a/bsd/2001/11/29/Big_Scary_Daemons.html), посвященную использованию portupgrade. Она поможет вам начать работать с этой утилитой.

Так как операционная система еще не обновлялась, мне придется ее перекомпилировать после запуска cvsup. Если вы никогда не перекомпилировали систему, внимательно прочитайте соответствующую часть руководства администратора (см. http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html).

Сейчас у меня свежеустановленная система, поэтому перед перекомпиляцией я не буду делать резервное копирование данных. Если мне понадобится перекомпилировать уже работающую систему, я обязательно уделю несколько минут для резервирования моего домашнего каталога и каталога настроек /etc:
cd /etc
tar cvfz /dev/fd0 .
tar cvfz etc.tar.gz .

Каталогу /etc я уделила больше внимания и скопировала его не только на дискету, но и в файл. Затем я послала по электронной почте самой себе этот файл, на случай непредвиденных обстоятельств (небольшая паранойя в вопросе резервного копирования никогда не повредит - прим. переводчика). Я не усердствую так с моим домашним каталогом, поскольку обычно не храню в нем данных, о потере которых буду потом сожалеть. Кроме закладок (bookmarks) для моего браузера. Я всегда пересылаю себе по почте файл с закладками. Если вы беспокоитесь о своих данных, сделайте резервное копирование вашего домашнего каталога.

Первый раз перекомпилируя операционную систему, тщательно следуйте инструкции из руководства администратора. Будьте готовы к тому, что это займет определенное время. Используйте то ядро, которое поставляется с системой. Вы успеете скомпилировать ядро по вашему вкусу после перекомпиляции системы. На свежеустановленной системе я сразу перехожу в однопользовательский режим для того, чтобы следующие несколько часов ничего кроме перекомпиляции на нем не делать. На рабочей системе я не перехожу в однопользовательский режим до тех пор, пока не наступит время инсталлировать перекомпилированную систему.
shutdown now (входим в однопользовательский режим)
cd /usr/src
make -j4 buildworld (это самое долгое действие;
оно занимает около двух часов на
свежеустановленном P3 с 320Mb
оперативной памяти)
make buildkernel
make installkernel
make installworld
shutdown -r now

После перезагрузки я получаю полностью обновленную систему. Теперь я могу заняться установкой моих любимых приложений. Я начну с установки последнего релиза XFree86, поскольку большинство мультимедийных приложений требуют его наличия. На мой взгляд, самым простым способом установить XFree86 - просто скачать исходные коды и запустить встроенный инсталляционный сценарий (если вы гордый владелец FreeBSD версии выше или равной 4.6, то для вас самым простым и логичным путем установки XFree86 будет запуск утилиты /stand/sysinstall, в которой еще на этапе инсталляции системы можно установить и настроить XFree86 - прим. переводчика). Поскольку я еще не устанавливала никаких приложений, я закачаю исходные тексты старым, добрым способом при помощи программы ftp (для гарантированной закачки файлов в FreeBSD используется стандартная утилита fetch, поддерживающая докачку и содержащая массу других полезных функций - прим. переводчика). Но сначала я создам каталог, в котором я буду хранить эти файлы:
mkdir /usr/XFree86-4
cd /usr/XFree86-4

ftp ftp.xfree86.org
Connected to ftp.xfree86.org.
220 ftp.xfree86.org FTP server (Version wu-2.6.1(1)
Wed Dec 5 13:09:53 EST 2001) ready.
Name (ftp.xfree86.org:genisis): anonymous
331 Guest login ok, send your complete e-mail address as password.
Password: dlavigne6@cogeco.ca
ftp> cd pub
ftp> cd XFree86
ftp> cd 4.2.0
ftp> cd binaries
ftp> cd FreeBSD-4.x
ftp> get Xinstall.sh
ftp> get extract
ftp> get Xbin.tgz
ftp> get Xlib.tgz
ftp> get Xman.tgz
ftp> get Xdoc.tgz
ftp> get Xfnts.tgz
ftp> get Xfenc.tgz
ftp> get Xetc.tgz
ftp> get Xvar.tgz
ftp> get Xxserv.tgz
ftp> get Xmod.tgz
ftp> bye


Теперь дело за малым - вызвать инсталляционный сценарий:
sh Xinstall.sh

и ответить на задаваемые им вопросы (нажимайте "Enter", для того чтобы выбрать ответ по умолчанию, в случае, если вы не знаете что ответить).

После установки XFree, можно приниматься за сборку своего любимого оконного менеджера. На данный момент мне очень нравится KDE, который очень-очень долго компилируется. Стоит попробовать запустить процесс компиляции, перед тем как ложиться в постель, в надежде на то, что к тому времени, как вы проснетесь утром, он закончится. Итак, на одном терминале я напечатала:
cd /usr/ports/x11/kde3
make install clean

Теперь я переключусь на второй терминал и установлю библиотеки XFree86-4, о которых забыла (на самом деле не забыла, поскольку XFree86 установлен, просто они не зарегистрированы в базе портов и поэтому система о их наличии не догадывается - прим. переводчика), так как большинство приложений требуют их наличия в системе:
cd /usr/ports/x11/XFree86-4-libraries
make install clean

А на третьем терминале я сконфигурирую сервер XFree86. Сегодня я впервые конфигурирую систему с USB мышью. Во время установки системы, я ответила "да" на вопрос, есть ли у меня USB мышь. На всякий случай, я проверила наличие соответствующих строк в файле /etc/rc.conf:
usbd_enable="YES"
moused_flags="/dev/ums0"
usbd_flags="-vv"

Перед конфигурированием сервера XFree86 узнайте следующую информацию:
Модель вашей видеокарты
Количество памяти на видеокарте
Тип вашей мыши и номер последовательного порта, в который она включена (если это последовательная мышь)
Затем:
/stand/sysinstall
Configure
XFree86
XF86Setup (если у вас неподдерживаемая
видеокарта и вы получаете сообщение
об ошибке, выберите xf86config)

Если вас спросят о типе вашей мыши, выберите правильный и запустите тестирование для проверки правильности выбора. Теперь, с ее помощью, вы можете выбрать видеокарту и сделать необходимые настройки. Надеюсь, что при этом у вас не возникнет проблем и все получится довольно быстро.

После того, как я получила работоспособный сервер XFree86, я вышла из режима суперпользователя и создала в своем домашнем каталоге файл .xinitrc, который содержал следующую строку:
exec startkde

Как только компиляция KDE завершится, я смогу напечатать на терминале startx и тем самым запустить KDE.

Теперь приступим к браузеру. Я очень довольна браузером Mozilla. Несмотря на то, что в нем есть странности, в целом он неплох: быстр, конфигурируем, поддерживает штепсели (plug-in) и скины.
cd /usr/ports/www/mozilla
make install clean

Теперь соберем ядро, которое способно поддерживать звук и работу Java-машины:
cd /usr/src/sys/i386/conf
cp /GENERIC MULTIMEDIA

В файл MULTIMEDIA я добавила следующие строки:
options SER_LDT #используется Java
options CPU_ENABLE_SSE #используется DVD декодерами
device pcm #поддержка PCI SoundBlaster


Мне давно нравится SoundBlaster PCI 128. Это недорогая звуковая плата, которая требует для своей работы всего одну строку в конфигурационном файле ядра.

После сохранения измерений в файле MULTIMEDIA, компилируем ядро:
cd /usr/src
make buildkernel KERNCONF=MULTIMEDIA
make installworld KERNCONF=MULTIMEDIA

После того, как ядро установлено, я перегрузила машину:
reboot

Теперь, используя Mozilla, я загружу файлы необходимые для поддержки Java:

http://java.sun.com/j2se/1.3/download.html
Выберите "Linux GNUZIP Tar shell script"
Согласитесь с лицензионным соглашением
Сохраните файл в /usr/ports/distdiles/j2sdk-1_3_1_04-linux-i586.bin

http://wwws.sun.com/software/java2/download.html
Выберите загрузку JavaTM 2 SDK 1.3.1 (необходима бесплатная регистрация)
Сохраните файл в /usr/ports/distfiles/j2sdk-1_3_1-src.tar.gz

http://www.eyesbeyond.com/freebsddom/java/jdk13.html
Выберите "Download the latest BSD JDK 1.3.1 patchset"
Согласитесь с загрузкой Patchset7
Сохраните в /usr/ports/distfiles/bsd-jdk131-patches-7.tar.gz
cd /usr/ports/java/linux-sun-jdk13
make install clean

cd /usr/ports/java/jdk13
make install clean

Для того чтобы убедиться, что это сработало, перезапустите Mozilla и зайдите в меню Help -> About Plug-ins. Вы должны получить страницу, в которой упоминается штепсель Java. Небольшое путешествие на сайт http://javaboutique.internet.com должно полностью развеять ваши сомнения относительно работоспособности Java.

Теперь очередь потокового мультимедиа-контента:
cd /usr/ports/www/plugger
make install clean

Этот порт устанавливает поддержку mpeg, avi, quicktime, midi и pdf. Полный список вы сможете найти в меню Help -> About Plug-ins. Затем идите проверять работоспособность этого штепселя (см. http://fredrik.hubbe.net/plugger/test.html).

Наконец штепсель для Flash:
cd /usr/ports/www/flashplugin-mozilla
make install clean

Перед инсталляцией штепселя имейте ввиду, что Flash - это зарегистрированный товарный знак и он был "создан исключительно для Windows и Macintosh компьютеров". Помимо этого имеются определенные проблемы с правами на редистрибуцию. Из всего этого следует, что GPL версия не полностью поддерживает Flash-функциональность. Это значит, что некоторые Flash сайты будут работать, некоторые будут виснуть, а некоторые будут ронять ваш браузер.

Например, если вы установите Flash-штепсель, даже не пытайтесь сходить на сайт http://www.shockwave.com, если вы, конечно, не хотите наблюдать падение вашего браузера. Я выяснила, что от фазы Луны и набора используемых заклинаний зависит, увижу ли я на сайте Hallmark электронную открытку или просто серый прямоугольник. Однако мой браузер без проблем показывает мне заставки, которые все более популярны на сайтах современного Интернета. Кто бы мог подумать!

Теперь, когда Mozilla оснащена штепселями, я займусь установкой какого-нибудь скина. Отправимся по меню: Edit -> Preferences -> Appearance -> Themes. Теперь кликните на ссылку "Get New Themes".

Мне нравятся темы с http://www.mozdev.org. Тема SkyPilot выглядит достаточно интересно, так что я кликну на ее ссылке, а затем, еще раз на ссылке Install. Затем я отметила пункт "Use this theme" в диалоговом окне и нажала кнопку "OK". После того, как инсталляция скина завершилась, я отправилась опять в Preferences, где выбрала в списке "SkyPilot" и опять нажала "OK". Mozilla сказала мне, что изменения войдут в силу после перезапуска.

Теперь, когда мой браузер ужасно красиво ;-) выглядит, я пойду на мой любимый сайт с "обоями" (см. http://www.digitalblasphemy.com).

Для смены обоев в KDE, кликните правой кнопкой мыши на рабочем столе и выберите "Configure Desktop". Затем кликните "Background Icon", вкладку "Wallpaper", а затем укажите файл с вашими любимыми обоями.

В следующей статье мы отправимся в удивительный мир звука, а так же посмотрим на кое-какие утилиты, которые поразят даже ваших друзей-виндузятников.

http://www.onlamp.com/pub/a/bsd/2002/09/05/FreeBSD_Basics.html.

Обновлено: 12.03.2015