Gentoo Linux Documentation - Інструкція зі встановлення звукових драйверів ALSA в ОС Gentoo Linux

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

Якщо ваша карта підтримується звуковою підсистемою ядра або комерційними OSS/4Front звуковими драйверами, які вбудовані в ядро ​​версії 2.4.x, ви можете відразу включити підтримку вашої карти у вигляді модуля . Якщо ви вирішили піти цим шляхом, ознайомтеся з Linux Sound HOWTO.

Однак у OSS/4Front драйверів є деякі обмеження через те, що вони є комерційними. ALSA, навпаки, позбавлена ​​всіх цих недоліків. ALSA це повністю GPL та LGPL система звукових драйверів, які надають професійну якість запису, відтворення та обробки MIDI.

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

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

Враховуючи, що більшість людей використовує ядро ​​версії 2.4.х, то нам потрібно буде зібрати модулі ядра і модулі ALSA драйверів окремо. Ті ж, хто використовує ядро ​​версії 2.5.х, можуть зробити це на рівні ядра, так як ALSA драйвери вже вбудовані в ядро ​​цих версій.

Спочатку давайте переконаємося, що наше ядро ​​готове до роботи з ALSA драйверами. Потрібно переконатися, що в ядрі вимкнено всі звукові драйвери, а підтримка звуку виставлена ​​як модуль (M). В результаті ми повинні отримати модуль soundcore.o.

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

Якщо у вас вже є робоча конфігурація ядра системи, треба переконатися, що прибрана підтримка всіх звукових карт, а підтримка звуку виставлена ​​як модуль (M). Якщо ви хочете зробити це не перезавантажуючись то дотримуйтесь наведених нижче інструкцій:

Code listing 2.1

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

Code listing 2.2

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

Important: Це означає, що доведеться повторно встановлювати alsa-driver після кожного перескладання ядра.

Note:Однак немає необхідності встановлювати заново nvidia-kernel , оскільки Nv >/lib/modules/*/video і не будуть видалені командами make modules modules_install .

Тепер настав час встановити ALSA модулі для підтримки вашої звукової карти. Якщо у вас PCI звукова карта, то можна дізнатися чіпсет, на якому вона зроблена висновком команди /proc/pci

Code listing 2.3

Warning: Якщо у вас вже були встановлені звукові модулі іншого виробника, то їх треба тепер вивантажити. Перевірити які модулі завантажені можна командою lsmod і потім, за допомогою команди rmmod вивантажити їх із системи.

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

Однак можна заощадити час, дізнавшись ім'я модуля, який потрібно для коректної роботи ALSA драйверів зі звуковою картою. Це можна зробити, подивившись ALSA Soundcard Matrix. Мій модуль називається snd-emu10k1, тому що у мене звукова карта SBlive! на чіпсеті EMU10K1. Тепер можна вказати звуковим драйверам тип нашої звукової карти, не використовуючи префікс snd.

Code listing 2.4

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 встановлені у вашій системі.

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

Спочатку відредагуємо файл /etc/modules.d/alsa.

Warning: Не потрібно редагувати файл /etc/modules.conf. Натомість треба налаштовувати /etc/modules.d .

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

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

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

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

Note: Якщо у вас в системі встановлено кілька звукових карт, то треба в змінній cards_limit вказати їх точне число і в snd-card прописати всі потрібні модулі. Ви можете знайти приклади в розділі 6 інструкції ALSA Howto.

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

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

Code listing 2.8

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

Також ви повинні перевірити файл /etc/devfsd.conf і переконатися, що драйвери ALSA зареєстровані правильно.

Code listing 2.9: /etc/devfsd.conf

Note: Дані з devfsd.conf встановлюють права доступу до /dev/sound. Тому, якщо ви не маєте root прав, потрібно переконатися, що ви внесені до групи audio.

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

Перше, що треба зробити, щоб ALSA драйвери запускалися на стадії завантаженнясистеми це:

Code listing 3.1

Warning: Майте на увазі, що alsasound скрипт повинен бути занесений в "boot" - завантажувальний рівень, а не "default".

Так, як ми користуємося OS Linux, то перезавантажуватися не потрібно. Треба просто запустити драйвер ALSA вручну.

Code listing 3.2

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

Code listing 3.3

Warning: Якщо виникнуть проблеми із запуском amixer: "amixer: Mixer attach default error: Додаток до файлу або directory", то треба виконати insmod snd-mixer-oss і snd-pcm-oss . Тепер можна запустити amixer знову.

Code listing 3.4: тільки якщо Ви отримаєте помилку під час запуску amixer

Якщо все пройшло успішно, то тепер можна включити звук на основному і додатковому каналі.

Code listing 3.5

Тепер ми перевірили, чи працює звук командою aplay (alsa play). Якщо ви почули клацання, то звук працює нормально. Тепер настав час налаштувати гучність для цього скористаємося ncurses-заснованим alsamixer .

Якщо ви хочете слухати музику через XMMS, то потрібно встановити alsa-xmms командою emerge alsa-xmms .

Тепер, якщо ви перезавантажите систему то alsasound скрипт запуститися і відновить всі ваші налаштування.

Якщо ви оновите ядро ​​системи, то доведеться перезбирати ALSA модулі.

Немає необхідності повторно встановлювати alsa-libs і alsa-utils , тому вони не будуть видалені під час перескладання/зміни ядра системи. Видалений буде лише alsa-driver , оскільки він ставиться в директорію /lib/modules/*/kernel/sound/pci/ .

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

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

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