Инструкция по установке звуковых ALSA драйверов в
ОС Gentoo Linux
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
| Теперь мы проверили работает ли
звук командой 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 в этот файле. Обратитесь к
этой документации
за подробностями.
Ссылки
По этим ссылкам вы можете найти дополнительную документацию:
- The Gentoo
Linux Desktop Configuration Guide
- ALSA Project
Homepage
- ALSA
Users Documentation
- ALSA Howto's and FAQ's
- Linux
Sound HOWTO
- Sound and MIDI Software For
Linux
|