Ниже приведен список того, что необходимо для установки поддержки SB AWE под Linux:
работающая Linux-система (например, дистрибутив Debian GNU/Linux),
SB AWE 32 или совместимая карта (например. SB32, SB32 PnP, SB AWE64, ...),
исходные тексты ядра Linux, включая драйвер звука OSS/Free (обычно включен в поставку, прочтите /usr/src/Linux/drivers/sound/Readme),
Звуковой Драйвер AWE 32.
Если у вас PnP-карта, вам также понадобится:
пакет утилит isapnptools.
Смотрите раздел "Источники", в котором описано, где можно найти эти программы.
Если у вас система Debian GNU/Linux - это означает, что нужны пакеты kernel-source-<версия>, awe-drv и, возможно, пакет isapnptools. Вы, наверное, также захотите установить другие awe-* пакеты, хотя они не так и важны для установки. Я настойчиво рекомендую установку пакета kernel-package для более простой компиляции и установки ядра.
Предположим, что вы правильно установили вашу карту в гнездо на материнской плате, и, возможно, проверили ее работоспособность в DOS или Windows.
Следующим шагом будет настройка инициализации карты в процессе загрузки (только если у вас PnP-карта). Следуйте документации в исходных текстах, соберите и установите пакет isapnptools (или используйте уже собранный пакет дистрибутива Debian), и, затем, наберите
# pnpdump > /etc/isapnp.conf |
будучи root-ом. Эта команда сгенерирует нормальный конфигурационный файл для ваших PnP-карт, но с закомментированными устройствами. Аккуратно отредактируйте этот файл, сравнивая значения номеров DMA-каналов, базовых значений портов ввода-вывода и номера IRQ с соответствующими значениями под DOS или Windows, если это возможно (в Windows'95, изучите ресурсы, выделенные карте в пункте resources (ресурсы) в device manager) ("Свойства:Система")). Если у вас возникли проблемы, еще раз подробно прочтите документацию к пакету isapnptools.
Предостережение |
ВНИМАНИЕ: isapnptools часто не могут правильно определить все три порта ввода-вывода устройства WaveTable карты SB AWE. Пожалуйста, сравните строку WaveTable в вашем файле isapnp.conf с тем, что приведено в примере в приложении к этому HOWTO. Настройте базы портов ввода-вывода, если это необходимо. |
Предостережение |
ВНИМАНИЕ: В соответствии с isapnp-faq, isapnp иногда неправильно программирует логический номер устройства. Если вы встретите сообщения об ошибках типа: |
Error occurred executing request 'LD 2' on or around line... Во время исполнения запроса 'LD 2' возникла ошибка в строке... |
попробуйте добавить строку (VERIFYLD N) в начале файла isapnp.conf. Вам придется использовать версию 1.10 или новее, чтобы этот ключ сработал. Если у вас нет возможности использовать версию 1.10 или новее, вы также можете ПРОПИСАТЬ логический номер устройства напрямую. Читайте isapnp-faq для более полной информации по этому вопросу. Если и это не заработает, свяжитесь со мной (и ребятами, занимающимися isapnp, им тоже будет интересно, я думаю).
Предостережение |
ВНИМАНИЕ: Убедитесь, что в последней строке написана команда (WAITFORKEY), которая иногда опускается старыми версиями pnpdump. |
Пример файла isapnp.conf для одной PnP-карты (звуковой карты) вы можете найти в приложении к этому документу (см.раздел "Пример isapnp.conf").
Если у вас Debian-система, то никаких дополнительных настроек не потребуется. isapnp будет запускаться в процессе загрузки в файле /etc/init.d/boot той частью скрипта, которую вы наверно захотите добавить в свои загрузочные скрипты:
# Настройка ISA PnP карт до загрузки # модулей. Это необходимо сделать ДО загрузки модулей, чтобы # настроить и запустить PnP карты ДО того, как # драйверы там все напутают. # if [ -x /etc/init.d/isapnp ] then /etc/init.d/isapnp start fi |
#! /bin/sh # /etc/init.d/isapnp: конфигурация Plug and Play карт test -x /sbin/isapnp || exit 0 /sbin/isapnp /etc/isapnp.conf exit 0 |
Если у вас другой дистрибутив Linux, то все зависит от вас. Я не знаю, что делать в других дистрибутивах (кто-нибудь желает послать мне более точную информацию?). Просто убедитесь в том, что isapnp запускается до загрузки модулей (см. ниже).
До сборки ядра вам придется установить Звуковой Драйвер AWE в стандартный драйвер звука ядра. Даже если ваши исходные тексты ядра включают расширение awedrv (см.каталог /drivers/sound/lowlevel/), вы захотите обновить программу awedrv. Следуйте инструкциям по установке в каталоге исходных текстов awedrv. Вкратце, вам придется запустить скрипт, который произведет необходимые изменения в исходных текстах ядра.
Проверьте, обновились ли исходные тексты ядра после запуска этого скрипта. Он просто проверяет, существует ли конкретный файл - если он существует, то он ничего не делает. Вам лучше предварительно удалить файл drivers/sound/lowlevel/awe_wav.c до запуска этого скрипта.
Затем вам надо настроить ядро, включив в нем поддержку звука. Я надеюсь, что вы немного разбираетесь в сборке ядра; обращайтесь в "HOWTO: Звук в Linux" (Linux Sound HOWTO) и "HOWTO: Ядро" (Kernel HOWTO) за подробной информацией. Перейдите в каталог исходных текстов ядра (например /usr/src/linux) и наберите:
# make config |
или make menuconfig, или make xconfig. Затем вам придется настроить ядро обычным образом. Используйте возможность создать маленькое и очень мощное ядро, собранное специально для вашей машины. Обязательно включите пункт "Поддержка загружаемых модулей" (Enable loadable module support), если вы собираетесь собрать драйвер звука в виде модуля (вы должны это сделать, если у вас PnP карта), но я уверен, что вы включите эту опцию в любом случае.
Затем вам будет задан вопрос о поддержке звука. Можно ответить Y или M здесь, если у вас не-PnP карта. Ответьте M здесь, если у вас PnP-карта. Вы должны собрать поддержку звуковой карты в виде модуля, при наличии PnP карты потому, что PnP карта должна быть инициализирована до загрузки модуля драйвера звука.
На следующие вопросы необходимо ответить Y, на все другие N:
Sound Blaster (SB, SBPro, SB16, clones) support (CONFIG_SB) [Y/n/?] (Поддержка Sound Blaster (SB, SBPro, SB16, clones) (CONFIG_SB) [Y/n/?]) Generic OPL2/OPL3 FM synthesizer support (CONFIG_ADLIB) [Y/n/?] (Поддержка Стандартного OPL2/OPL3 FM-синтезатора (CONFIG_ADLIB) [Y/n/?]) /dev/dsp and /dev/audio support (CONFIG_AUDIO) [Y/n/?] (Поддержка /dev/dsp и /dev/audio (CONFIG_AUDIO) [Y/n/?]) MIDI interface support (CONFIG_MIDI) [Y/n/?] (Поддержка MIDI-интерфейса (CONFIG_MIDI) [Y/n/?]) FM synthesizer (YM3812/OPL-3) support (CONFIG_YM3812) [Y/n/?] (Поддержка FM-синтезатора (YM3812/OPL-3) (CONFIG_YM3812) [Y/n/?]) lowlevel sound driver support [Y/n/?] (Поддержка звукового драйвера низкого уровня [Y/n/?]) AWE32 support (CONFIG_AWE32_SYNTH) [Y/n/?] (Поддержка AWE32 (CONFIG_AWE32_SYNTH) [Y/n/?]) |
Только последний вопрос касается WaveTable-синтезатора. Остальные касаются поддержки SB 16 драйвером звука OSS/Free.
В дополнение к этому, вам придется настроить порт ввода-вывода звуковой карты. Еще раз взгляните в файл isapnp.conf за подсказкой, если он есть. Для меня следующих стандартных значений достаточно. Заметьте, что стандартное значение, написанное в конфигурационном скрипте, может быть неверно (особенно значения SBC_IRQ и SB_MPU_BASE часто неверны для многих карт).
I/O base for SB Check from manual of the card (SBC_BASE) [220] (Номер базового порта для SB (сверьтесь с руководством по карте) (SBC_BASE) [220]) Sound Blaster IRQ Check from manual of the card (SBC_IRQ) [5] (Номер IRQ для SB (сверьтесь с руководством по карте)(SBC_IRQ) [5]) Sound Blaster DMA 0, 1 or 3 (SBC_DMA) [1] (Номер DMA для SB (SBC_DMA) [1]) Sound Blaster 16 bit DMA (_REQUIRED_for SB16, Jazz16, SMW) 5, 6 or 7 (use 1 for 8 bit cards) (SB_DMA2) [5] (Номер 16-битного DMA для SB (_ОБЯЗАТЕЛЬНО_ для SB16, Jazz16, SMW) 5, 6 or 7 (используйте 1 для 8-битных карт) (SB_DMA2) [5] MPU401 I/O base of SB16, Jazz16 and ES1688 Check from manual of the card (SB_MPU_BASE) [330] (Номер базового порта MPU401 для SB16, Jazz16 and ES1688 (сверьтесь с руководством по карте (SB_MPU_BASE) [330]) SB MPU401 IRQ (Jazz16, SM Wave and ES1688) Use -1 with SB16 (SB_MPU_IRQ) [-1] (SB MPU401 IRQ (Jazz16, SM Wave and ES1688) Используйте -1 для SB16 (SB_MPU_IRQ) [-1]) |
Теперь пересоберите ядро. Пользователь Debian должны использовать пакет kernel-package. Этот пакет позволяет собирать ядро так же просто, как и любой другой пакет в debian. Прочтите инструкцию в каталоге /usr/doc/kernel-package/. Подсказка:
# make-kpkg clean # make-kpkg -revision custom.1.0 kernel_image |
а затем dpkg -i /usr/src/kernel-image-2.0.29_custom.1.0_i386.deb.
Если у вас другой дистрибутив Linux, следуйте требованиям стандартных инструкций по сборке ядра. Не забудьте сделать make modules и make modules_install. Взгляните в "HOWTO: Звук в Linux" (Linux Sound HOWTO) и, возможно, в "HOWTO: Ядро" ( Kernel HOWTO) за подробной информацией.
После установки нового ядра вы должны перезагрузиться (убедитесь в том, что у вас есть под рукой работающий загрузочный флоппи-диск) Перекрестите пальцы :-).
Если у вас PnP-карта, убедитесь в запуске isapnp в загрузочном скрипте (как было описано выше) или вручную:
# /sbin/isapnp /etc/isapnp.conf Board 1 has Identity 74 00 00 e3 10 48 00 8c 0e: CTL0048 Serial No 58128 [checksum 74] |
Теперь вы можете установить драйвер звука, если собрали его в виде модуля:
# modprobe -a sound AWE32 Sound Driver v0.3.3e (DRAM 2048k) |
Если вам кажется, что объем памяти неверный (У меня были сообщения о том, что в одной карте AWE64 было 4096 Кб, а "определялось" 28672 Кб), попытайтесь либо обновить пакет awedrv или указать объем памяти в файле /usr/src/linux/drivers/sound/lowlevel/awe_config.h, например:
#define AWE_DEFAULT_MEM_SIZE 4096 /* kbytes */ |
Извините, но после этого вам придется пересобрать ядро (возможно пересборки модулей будет достаточно, но я в этом не уверен).
Если все заработало, вы наверно захотите загружать модуль звука автоматически. Можно использовать kerneld (это плохая идея - причины описаны в разделе 1.4) или добавить одну строчку, содержащую слово sound в ваш файл /etc/modules (в Debian) или добавить строку /sbin/modprobe -a sound в ваш загрузочный скрипт.