div.main {margin-left: 20pt; margin-right: 20pt}
Linux. Звук
"Алло, как слышно?.." Судя по письмам, приходящим на мой электронный
почтовый адрес, у многих пользователей возникли некоторые трудности с
настройкой звука. Попробуем рассмотреть этот вопрос поподробнее. Итак, сегодня
мы будем учить Linux говорить.
На теперешний момент существует
несколько различных драйверов звуковых карт под Linux. Почему? Углубимся в
недалекое прошлое. С появлением первых версий Linux Ханну Савойлайнен из
Финляндии написал драйверы для звуковой карты Creative Labs Sound Blaster.
После он вместе с другими разработчиками добавил поддержку и других популярных
(и не очень) звуковых карт. Впоследствии американская фирма 4Front
Technologies предложила Саволайнену сотрудничество и стала продавать драйверы
звуковых карт в качестве коммерческого продукта, который сейчас называется OSS
— Open Sound System. Эти драйверы используются во многих операционных
системах. В состав ядра Linux входит бесплатная версия звукового драйвера OSS
под названием OSS/Lite.
Но некоторых программистов, использовавших
звуковые карты Gravis UltraSound, этот драйвер не устраивал. И они, во главе с
Ярослевом Киселой, создали свой собственный проект под названием Gravis
UltraSound Project, чтобы написать драйвер для своих звуковых карт.
Впоследствии этот проект разросся, была добавлена поддержка других звуковых
карт. Тогда и появилась ALSA — Advanced Linux Sound Architecture. Но на
этом дело не закончилось. Разработчик Алан Кокс по заданию фирмы Red Hat
Software изменил звуковые драйверы OSS/Lite, выделив их в отдельные звуковые
модули, чем упростил настройку звука. Эти драйверы входят в стандартную
поставку Linux. Есть еще группа драйверов, которые выпускают сами
производители звуковых карт, но они поставляются только в двоичном коде. Это
позволяет производителям программного обеспечения держать в секрете от
конкурентов информацию об их оригинальных разработках. Но это не позволяет
пользователям самим исправлять ошибки и совершенствовать
драйверы.
Итак, сделаем выводы. Звуковые драйверы делятся на четыре
группы: 1. OSS/Lite — распространяются бесплатно, включены в ядро Linux,
поддерживают большинство звуковых карт, но больше уже не совершенствуются и не
имеют прямой поддержки Plug and Play; 2. OSS — поддерживают большое
количество звуковых карт, легко устанавливаются, поддерживают Plug and Play,
хорошо совместимы с OSS/Lite, имеют дополнительные возможности, но это
коммерческий продукт, который, кроме того, не предоставляет исходный
код; 3. ALSA — бесплатны, почти совместимы с OSS/Lite, поддерживают Plug
and Play, активно совершенствуются, имеют дополнительные возможности, но в
настоящее время поддерживают лишь несколько звуковых карт; 4. Драйверы
производителей звуковых карт — поддерживают звуковую карту, которая может не
поддерживаться другими драйверами, но доступны лишь в двоичном коде и не
всегда полностью совместимы с OSS/Lite.
Ну вот, с выбором драйвера мы уже определились. Теперь, для настройки, нам
не помешало бы собрать информацию о звуковой карте. Хотя часто, для того,
чтобы успешно настроить звуковую карту, не имея всех данных, рекомендуется
узнать производителя и модель звуковой карты, номер прерывания IRQ, адреса
портов ввода-вывода, каналы DMA, тип микросхемы, использующейся в звуковой
карте, тип шины для звуковой карты (ISA, ISA Plug and Play, PCI). Некоторые из
этих параметров можно узнать, просто открыв корпус компьютера. Если же у вас
стоит какая-либо другая ОС, то можно использовать те же параметры, что и в
ней.
Есть вообще три метода настройки звуковых карт в Linux.
Рекомендуется пробовать их в той последовательности, в которой они
описываются. Первый метод — использование автоматизированной программы
настройки. В состав некоторых дистрибутивов входит утилита, позволяющая
автоматически настраивать звуковые карты. Использование этой программки
является наиболее простым способом настройки звука. В Red Hat Linux для такой
настройки используется программка sndsonfig. Она производит поиск всех карт,
поддерживающих Plug and Play. Если таковые присутствуют в системе, то будет
выведен список, в котором можно выбрать необходимую звуковую карту. Затем
можно установить номер прерывания IRQ и каналы DMA, указать адрес порта
ввода-вывода. Для карт Plug and Play эти параметры можно установить
автоматически. После, тип звуковой карты сохраняется в файле
/etc/sysconfig/soundcard. Для Plug and Play карт также будет создан файл
/etc/isapnp.conf, который используется утилитами ISA Plug and Play для
настройки звука при загрузке системы. Также конфигурируется файл
/etc/conf.modules, в котором указываются соответствующие модули ядра для
загрузки во время старта системы.
Для настройки звуковых драйверов OSS
или ALSA воспользуйтесь аналогичными программами, которые идут в поставке с
ними. Второй метод включает в себя выполнение описанных выше действий
вручную. Если у вас карта ISA Plug and Play, то, если вы не используете
драйверы OSS или ALSA, для настройки сначала вам необходимо воспользоваться
утилитой isapnp. Для этого следует выполнить следующую последовательность
действий: создать резервную копию файла /etc/isapnp.conf; при помощи утилиты
pnpdump создать новый файл /etc/isapnp.conf, для чего выполните команду
pnpdump > /etc/isapnp.conf; отредактировать этот файл, установив
необходимые параметры карты, для чего достаточно снять комментарии с
соответствующих строк; запустить программу isapnp. Более подробно о настройке
карт ISA Plug and Play можно узнать из документации на isapnp, isapnp.conf,
pnpdump. Загрузкой звуковых модулей ядра занимается демон kerneld (или kmod
в новых версиях). Чтобы указать модули, которые следует загружать, необходимо
отредактировать файл /etc/conf.modules. Подробная информация о нем есть в
документации на указанный демон. Приводимый ниже пример реализует загрузку
драйверов для SoundBlaster 16 с драйвером OSS/Lite: alias sound sb
alias synth0 midi
alias midi opl3
options opl3 io=0x388
options sb io=0x220 irq=10 dma=3 dma16=7 mpu_io=0x330
Если вы используете драйвер ALSA, то имена модулей будут другими, для их
правильной настройки надо посмотреть соответствующую документацию. Для нашего
же случая файл конфигурации будет выглядеть следующим образом: alias char-major-116 snd
alias char-major-14 soundcore
alias snd-card-0 snd-sb16
alias snd-slot-0 snd-card-0
alias sound service-0-0 snd-mixer-oss
alias sound service-0-1 snd-seq-oss
alias sound service-0-3 snd-pcm1-oss
alias sound service-0-4 snd-pcm1-oss
options snd snd_card_limit=1
# options for sb16
options snd-sb16 snd_port=0x220 snd_mpu_port=0x330 snd_irq=10
snd_dma8=3 snd_dma16=7 snd_dma8_size=64 snd_dma16_size=128
smd_mic_agc=1 snd_isapnp=0
# initialize mixer
post-install snd-sb16 alsactl restore
Для настройки и загрузки драйвера OSS обычно используется скрипт soundon.
Если модули сконфигурированы правильно, то они должны загружаться
автоматически, как только какое-нибудь приложение обратится к звуковой
карте. Обычно модули расположены в каталоге /lib/modules/a.b.c/misc, где
a.b.c — версия ядра. Иначе их надо встроить в ядро.
Третий метод
заключается в непосредственной перекомпиляции ядра с указанием драйверов,
которые необходимо в него встроить. Этот метод не требует указания модулей для
загрузки. Подробнее перекомпиляцию ядра мы рассмотрим в какой-либо из
следующих статей (хотя можно почитать и мануал), но вкратце процесс настройки
драйверов звуковых карт можно описать так. После установки пакета с исходными
текстами надо зайти в каталог с исходниками (/usr/src/linux) и дать команду
make menuconfig — загрузится текстовая оболочка с менюподобным интерфейсом.
Для настройки требуется изменять опции в подменю "Sound" и "Additional low
level sound drivers". Программа интуитивно понятна и позволяет указать
описанные выше параметры звуковых карт без особых проблем. После вам
потребуется откомпилировать ядро и установить его.
Теперь, чтобы
убедиться в правильности настройки звуковой карты, надо проверить, загружаются
ли звуковые драйверы. Информацию о состоянии звуковой карты можно получить
командой cat /dev/sndstat. Если вместо информации вы получите сообщение об
ошибке, например cat:/dev/sndstat: Operation not supported by device, то это
значит, что звуковые модули не были загружены. Здесь стоит сказать, что для
драйвера ALSA каталог /dev/sndstat не создается. Его аналогом является каталог
/dev/asound.
После того, как вы удостоверились, что звуковые модули
загружаются, можно приступить к тестированию звуковой карты. В первую очередь
рекомендуется запустить микшер, попробовать поизменять различные настройки и
посмотреть, не возникают ли при этом ошибки. Используйте xmixer, aumix, kmix.
Для проигрывания файлов можно воспользоваться программами play или
kmedia.
X-Stranger xstranger@tut.by
|