Инструкция по установке звуковых ALSA драйверов в ОС Gentoo Linux

Contents:

1.Вступление

Что такое ALSA? 

The Advanced Linux Sound Architecture (ALSA) - это проект, который призван улучшить звуковую подсистему в ОС Linux. Предполагается, что в более новых версиях ядра Linux (2.3.x или 3.3.x) эти драйверы будут включены в ядро.

ALSA драйверы предоставляют полную поддержку аудио и MIDI в системе Linux.

Основываясь на данных с сайта http://www.alsa-project.org/, у ALSA драйверов есть следующие функции:

  • Полная поддержка всех звуковых интерфейсов, от простых звуковых до профессиональных многоканальных карт.
  • Драйверы представлены в системе в виде модулей.
  • Поддержка параллельного воспроизведения файлов (SMP-Symmetric Multiprocessing)
  • Высоко функциональная, легко используемая приложениями, библиотека пользовательского уровня (alsa-lib)
  • Поддержка более старых OSS API, совместимость с большинством OSS программ.
В ALSA драйверах присутствует поддержка полного дуплексного режима воспроизведения и записи, поддержка одновременно нескольких звуковых карт, аппаратное управление потоками, расширенная поддержка микшера (для улучшения работы новых функций современных звуковых карт).

Почему именно ALSA? 

Если ваша карта поддерживается звуковой подсистемой ядра или коммерческими OSS/4Front звуковыми драйверами, которые встроены в ядро версии 2.4.x, то вы можете сразу включить поддержку вашей карты в виде модуля. Если вы решили пойти по этому пути то ознакомьтесь с Linux Sound HOWTO.

Однако у OSS/4Front драйверов есть некоторые ограничения из-за того, что они коммерческие. ALSA, напротив, лишена всех этих недостатков. ALSA это полностью GPL и LGPL система звуковых драйверов, которые предоставляют профессиональное качество записи, воспроизведения и обработки MIDI.

Какие звуковые карты поддерживают ALSA драйверы? 

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

Узнать поддерживается ли ваша звуковая карта можно на сервере: http://www.alsa-project.org/alsa-doc/.

2.Инсталляция

Модули ядра 

Учитывая, что большинство людей использует ядро версии 2.4.х то нам потребуется собрать модули ядра и модули ALSA драйверов отдельно. Те же, кто использует ядро версии 2.5.х могут сделать это на уровне ядра, так как ALSA драйверы уже встроены в ядро этих версий.

Сначала давайте удостоверимся, что наше ядро готово для работы с ALSA драйверами. Надо убедиться, что в ядре отключены все звуковые драйверы, а поддержка звука выставлена как модуль (M). В результате мы должны получить модуль soundcore.o.

Note: Возможно, что ALSA драйверы будут работать, даже если поддержка звука в ядре выставлена как (Y), вместо модуля (M). Однако официальная инструкция по установке ALSA драйверов предполагает наличие модуля, чтобы ALSA сама могла его подгрузить когда это необходимо.

Если у вас уже есть рабочая конфигурация ядра системы, то надо убедиться, что убрана поддержка всех звуковых карт, а поддержка звука выставлена как модуль (M). Если вы хотите сделать это не перезагружаясь то следуйте нижеприведённым инструкциям:

Code listing 2.1

# cd /usr/src/linux
# cp .config ~/
# make mrproper
# cp ~/.config .
# make menuconfig

Теперь выберите поддержку звука (Sound Card Support) как модуль (M) и уберите поддержку всех звуковых карт. Теперь надо пересобрать ядро:

Code listing 2.2

# make dep clean
# make modules modules_install

Команда make modules сотрёт все модули из системы и соберёт их заново, даже те которые остались после предыдущей инсталляции ALSA драйверов.

Important: Это означает, что придётся переустанавливать alsa-driver после каждой пересборки ядра.

Note: Однако нет необходимости переустанавливать nvidia-kernel, так как Nvidia драйверы находятся в отдельной директории /lib/modules/*/video и не будут удалены командами make modules modules_install.

Установка ALSA модулей 

Теперь пришло время установить ALSA модули для поддержки вашей звуковой карты. Если у вас PCI звуковая карта то можно узнать чипсет, на котором она сделана выводом команды /proc/pci

Code listing 2.3

# grep audio /proc/pci

Warning: Если у вас уже были установлены звуковые модули другого производителя то их надо теперь выгрузить. Проверить какие модули загружены можно командой lsmod и потом, с помощью команды rmmod выгрузить их из системы.

Теперь можно просто воспользоваться командой emerge alsa-driver, и через некоторое время мы получим установленные звуковые драйверы с поддержкой всех звуковых карт.

Однако можно сэкономить время узнав имя модуля, который требуется для корректной работы ALSA драйверов со звуковой картой. Это можно сделать посмотрев ALSA Soundcard Matrix. Мой модуль называется snd-emu10k1, так как у меня звуковая карта SBlive! на чипсете EMU10K1. Теперь можно указать звуковым драйверам тип нашей звуковой карты не используя префикс snd.

Code listing 2.4

# env ALSA_CARDS='emu10k1' emerge alsa-driver

Note: Вы можете также указать тип вашей звуковой карты в файле /etc/make.conf, тогда при переустановке звуковых драйверов ALSA можно просто воспользоваться командой emerge alsa-driver. Например, это можно сделать так: echo 'ALSA_CARDS="emu10k1"' >> /etc/make.conf

Note: Если вы хотите поставить ALSA драйверы для нескольких звуковых карт то можно вписать их через пробел в переменную ALSA_CARDS. Например так: env ALSA_CARDS='emu10k1 intel8x0 ens1370' emerge alsa-driver

Note: Если вы хотите чтобы ALSA драйверы поддерживали OSS то надо поставить alsa-oss командой emerge alsa-oss, это ALSA/OSS совместимая оболочка.

Теперь звуковые драйверы ALSA установлены в вашей системе.

Настройка звуковых драйверов ALSA 

Для корректной работы драйверов необходимо внести изменения в некоторые конфигурационные файлы.

Сначала отредактируем файл /etc/modules.d/alsa.

Warning: Не надо редактировать файл /etc/modules.conf. Вместо этого надо настраивать /etc/modules.d.

Проверьте наличие следующих строк в самом конце этого файла. Там же нужно выставить максимальное количество используемых вами звуковых карт (как правило, одну).

Code listing 2.5: Внизу /etc/modules.d/alsa

alias /dev/mixer snd-mixer-oss
alias /dev/dsp snd-pcm-oss
alias /dev/midi snd-seq-oss

# Выставите правильное количество.
options snd cards_limit=1

Теперь надо указать какой модуль будут использовать ALSA драйвера:

Code listing 2.6: В /etc/modules.d/alsa

## после завершения запустите `update-modules'.
## Для дополнительно информации прочтите INSTALL file в /usr/share/doc.
##
##  ALSA блок
alias snd-card-0 snd-emu10k1
## Если у вас больше чем одна, добавьте:
## alias snd-card-1 snd-intel8x0
## alias snd-card-2 snd-ens1370
##  OSS/Free блок
## alias sound-slot-0 snd-card-0
## alias sound-slot-1 snd-card-1
##

Note: Если у вас в системе установлено несколько звуковых карт то надо в переменной cards_limit указать их точное число и в snd-card прописать все нужные модули. Вы можете найти примеры в Разделе 6 инструкции ALSA Howto.

Проверьте, не закомментированы ли следующие строки:

Code listing 2.7: Ближе к концу файла /etc/modules.d/alsa

alias /dev/mixer snd-mixer-oss
alias /dev/dsp snd-pcm-oss
alias /dev/midi snd-seq-oss

Теперь проверьте, правильно ли вы отредактировали /etc/modules.d/alsa и потом запустите команду update-modules.

Code listing 2.8

# update-modules

Note: Команда update-modules внесёт исправления в файл /etc/modules.conf основываясь на изменениях, которые вы сделали в файле /etc/modules.d/alsa.

Также вы должны проверить файл /etc/devfsd.conf и удостовериться, что ALSA драйверы зарегистрированы правильно.

Code listing 2.9: /etc/devfsd.conf

# ALSA/OSS содержание
# Вы можете изменить права доступа к аудио устройствам
LOOKUP          snd          MODLOAD ACTION snd
LOOKUP          dsp          MODLOAD
LOOKUP          mixer        MODLOAD
LOOKUP          midi         MODLOAD
REGISTER        sound/.*     PERMISSIONS root.audio 660
REGISTER        snd/.*       PERMISSIONS root.audio 660

Note: Данные из файла devfsd.conf устанавливают права доступа к /dev/sound. Поэтому, если вы не обладаете root правами, нужно убедиться, что вы внесены в группу audio.

3.Запуск ALSA драйверов

Добавление ALSA драйверов в автозагрузку 

Первое, что надо сделать чтобы ALSA драйверы запускались на стадии загрузки системы это:

Code listing 3.1

# rc-update add alsasound boot

Warning: Имейте в виду, что alsasound скрипт должен быть занесен в "boot" - загрузочный уровень, а не "default".

Запуск драйверов и настройка звука 

Так, как мы пользуемся OS Linux то перезагружаться не требуется. Надо просто запустить ALSA драйвер вручную.

Code listing 3.2

# /etc/init.d/alsasound start

Теперь ALSA драйверы запущены. Если все в порядке то команда lsmod должна показать модуль ALSA. Однако звука пока не будет, так как не установлены alsa-utils.

Code listing 3.3

# emerge alsa-utils
# amixer

Warning: Если возникнут проблемы с запуском amixer: "amixer: Mixer attach default error: No such file or directory", то надо выполнить insmod snd-mixer-oss и snd-pcm-oss. Теперь можно запустить amixer снова.

Code listing 3.4: только если Вы получите ошибку при запуске amixer

# insmod snd-mixer-oss
# insmod snd-pcm-oss
# amixer

Если всё прошло успешно то теперь можно включить звук на основном и дополнительном канале.

Code listing 3.5

# amixer set Master 100 unmute
# amixer set PCM 100 unmute
# aplay /usr/kde/3/share/sounds/pop.wav // (pop.wav это часть KDE)

Теперь мы проверили работает ли звук командой aplay (alsa play). Если вы услышали щёлканье то звук работает нормально. Теперь пора настроить громкость для этого воспользуемся ncurses-основанным alsamixer.

Если вы хотите слушать музыку через XMMS то надо установить alsa-xmms командой emerge alsa-xmms.

Теперь, если вы перезагрузите систему то alsasound скрипт запуститься и восстановит все ваши настройки.

4.Последние штрихи

После обновления ядра... 

Если вы обновите ядро системы то придётся пересобрать ALSA модули.

Нет необходимости переустанавливать alsa-libs и alsa-utils, так они не будут удалены при пересборке/смене ядра системы. Удален будет только alsa-driver, так как он ставиться в директорию /lib/modules/*/kernel/sound/pci/.

Code listing 4.1: необходимо после каждой перекомпиляциии ядра

# emerge alsa-driver

/etc/modules.autoload 

Нет необходимости редактировать /etc/modules.autoload, так как после выполнения команды rc-update add alsasound boot, ALSA модули будут автоматически загружены при запуске системы.

Нет необходимости добавлять snd-pcm-oss или snd-mixer-oss в этот файле. Обратитесь к этой документации за подробностями.

Ссылки 

По этим ссылкам вы можете найти дополнительную документацию:



Updated 18 February 2003
Vincent Verleye
Author

John P. Davis
Editor

Dr][aM
Переводчик

Summary:  Данное руководство расскажет о том как настроить ALSA драйвера в Gentoo Linux. Оно может послужить дополнением к Gentoo Linux Desktop Configuration Guide.