Gentoo

Unix
Сайт о юникс системах.

Login here   Register   Lost your password ?  
Articles > Инструкция по установке звуковых ALSA драйверов в ОС Gentoo Linux

Author : Vincent Verleye / Date : 2005-01-14 15:21

View or add comments : (0)

Average members rating :

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

Версия:
1.2 от 18 Февраля 2003 года

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

Над документом работали:
Author: Vincent Verleye ( zu@pandora.be )
Editor: John P. Davis ( zhen@gentoo.org )
Переводчик: Dr][aM ( drcham@inbox.ru )

Содержание:

1. Вступление
1.1. Что такое ALSA?
1.2. Почему именно ALSA?
1.3. Какие звуковые карты поддерживают ALSA драйверы?
2. Инсталляция
2.1. Модули ядра
2.2. Установка ALSA модулей
2.3. Настройка звуковых драйверов ALSA
3. Запуск ALSA драйверов
3.1. Добавление ALSA драйверов в автозагрузку
3.2. Запуск драйверов и настройка звука
4. Последние штрихи
4.1. После обновления ядра...
4.2. /etc/modules.autoload
4.3. Ссылки

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

1.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 драйверах присутствует поддержка полного дуплексного режима воспроизведения и записи, поддержка одновременно нескольких звуковых карт, аппаратное управление потоками, расширенная поддержка микшера (для улучшения работы новых функций современных звуковых карт).

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

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

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

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

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

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

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

2.1. Модули ядра

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

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

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

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

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


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

# make dep clean
# make modules modules_install


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

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

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

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

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

# grep audio /proc/pci

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

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

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

Листинг .4

# env ALSA_CARDS='emu10k1' emerge alsa-driver


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

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

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

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

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

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

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

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

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

Листинг .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 драйвера:
Листинг .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
##


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

Проверьте, не закомментированы ли следующие строки:
Листинг .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.
Листинг .8

# update-modules


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

Также вы должны проверить файл /etc/devfsd.conf и удостовериться, что ALSA драйверы зарегистрированы правильно.
Листинг 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


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

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

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

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

# rc-update add alsasound boot


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

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

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

# /etc/init.d/alsasound start


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

# emerge alsa-utils
# amixer


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

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


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

Листинг .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. Последние штрихи

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

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

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

# emerge alsa-driver


4.2. /etc/modules.autoload

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

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

4.3. Ссылки

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

* 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

Page created in 0.328 seconds