- 代碼: 選擇全部
Debian Sound
Reference: http://www.tux.org/~tbr/sound-debian/
http://www.alsa-project.org/
http://people.debian.org.tw/~moto/tips/tips_index.html
* compile kernel 將 sound 的部份 compile 進去
* 設定 sound card (sndconfig)
-> sndconfig 會偵測 kernel 所提供的 sound driver
# apt-get install sndconfig
# sndconfig
注意: 若一切順利的話, 該程式會產生一個檔案 /etc/modutils/sndconfig,
並且執行 update-modules 產生新的 /etc/modules.conf
* 設定 sound card (alsa)
-> 當kernel本身提供的sound driver不敷使用時, 安裝alsa
-> Debian 已經有包裝 kernel-2.4.16 ~ kernel-2.4.18 相關的 alsa modules (apt-cache search alsa),
應可直接安裝, 以下是若是沒有提供相關的 alsas modules 時的作法
# apt-get install alsa-source alsa-utils
# cd /usr/src
# tar xvjf alsa-driver.tar.gz
# cd /usr/src/modules/alsa-driver
# ./configure
# make
# make install
# ./snddevices
注意: 會安裝到 /lib/modules/`uname -r`/kernel/sound 底下,
將你允許使用 /dev/dsp 的使用者加入 audio 這個 group 底下,
或是 chmod 666 /dev/dsp 開放給所有使用者使用
# apt-get install alsaconf
注意: 這個 package 是 4.0.x 版的, 目前 alsa-source 最新版為 5.0.x,
還是可以使用該工具幫忙設定, 然後在調整成 5.0.x 的設定
(大同小異, 只是module name有些變動)
# alsaconf
注意: 自動偵測會抓不到任何一個chip, 要手動去選一個,
http://www.alsa-project.org/~goemon/ 列出 alsa 支援的 chip, 及 chip 的原始網站,
設定完成後, 會在 /etc/alsa/modutils 底下產生一個檔案,
假設產生的檔案是 0.5, 你選擇的chip是 abcde
# cp /etc/alsa/modutls/0.5 /etc/modutils/alsa
# vim +"%s/snd-card-abcde/snd-abcde/g" +"wq" /etc/modules/alsa
# update-modutls
# /etc/init.d/alsa start
# /etc/init.d/alsasound start
注意: 若是有問題, 修改你的 /etc/modutils/alsa, 通常是參數的問題,
options snd .....
options snd-abcde .........
^^^^^^^^^
為設定給 snd-abcde 的參數, 將有問題的參數拿掉或修正
注意: 剛裝好alsa時, mixer設定為mute, 所以會發不出聲音, 找個mixer的工具(eg. xmix)
或是使用 alsa-utils 中的 alsamixer, amixer 來將之打開
使用 amixer 將聲音打開
# amixer set -c 0 Master 70 unmute
# amixer set -c 0 PCM 70 unmute
# amixer set -c 0 CD unmute
* 安裝 multi-media 軟體
(1) Win32 Codec
-> 有了這個codec之後, mplayer, avifile 都可以撥放 window multimedia 的格式 (*.wmv),
avifile 甚至可以撥 *.asf *.asx (不過不能直接在網路上聽, 不知為何)
# wget http://ftp.lug.udel.edu/MPlayer/releases/w32codec-0.60.tar.bz2
# tar xvjf w32codec-0.60.tar.bz2
# mkdir /usr/lib/win32
# cp w32codeec-0.60/* /usr/lib/win32
(2) MPlayer (http://www.mplayerhq.hu/homepage/)
-> 尚未包裝 deb, 必需抓下來後 compile
# wget http://ftp.lug.udel.edu/MPlayer/releases/MPlayer-0.90pre5.tar.bz2
# tar xvjf MPlayer-0.90pre5.tar.bz2
# cd MPlayer-0.90pre5
# ./configure --prefix=/opt/mplayer --disable-gcc-checking \
--with-win32libdir=/usr/lib/win32
# make
# make install
(3) avifile
# apt-get install avifile-aviplayer
(4) xmms
# apt-get install xmms alsa-xmms
注意: Output Plugin 選擇 ALSA output plugin
* 修改 alsaconf
Reference: http://people.debian.org/~mrd/deb-ref/apt-dpkg-ref.html
http://linux.nctu.edu.tw/web/moto/tips/debian/pack_deb.html
http://www.debian.org/doc/manuals/programmer/index.html
http://www.infodrom.org/Debian/doc/maint/
# apt-get install devscripts fakeroot debmake
# apt-get source alsaconfig
注意: 用 apt-get source 抓下來會自動幫你解開(xxxx.orig.tar.gz, xxxx.diff.gz, xxxx.dsc),
若是要手動做, 可用以下的兩種方法
(1) dpkg-source
# dpkg-source -x alsaconf_0.4.3b-4.dsc
# cd alsaconf-0.4.3b
# patch alsaconf debian.patch
(2) patch, zcat, tar
# tar xvzf alsaconf_0.4.3b.orig.tar.gz
# mkdir alsaconf_0.4.3b/debian
# zcat alsaconf_0.4.3b-diff.gz | patch -p0
# chmod +x alsaconf_0.4.3b/debian/rules
# cp -r alsaconfig-0.4.3b alsaconfig-workversion
# cd alsaconfig-workversion
# ....
注意: 最好是先產生一個新的目錄, 在該目錄上修改, 因為原先的 source 在包 package 時要用
# cd alsaconfig-0.4.3b
# patch -C 2 alsaconf alsaconfig-workversion/alsaconfig > debian.patch
# dpkg-changelog --newversion 0.4.3b-5
# dpkg-buildpackage -rfakeroot -uc -b -d -> 產生 bindary 的 package
# dpkg-buildpackage -rfakeroot -uc -S -d -> 產生 xxxx.diff.tar.gz, xxx.desc
注意: 其實這並不完全, 有個盲點
- 若是修改多個 file 時該如何是好 ? ( patch -p0 < patchfile ??)
- TODO:
(1)alsaconf 用一個 module: snd-detect 來自動偵測要用那個 driver,
但是解開後(alsa-source, alsa-base, alsaconf)並沒有看到這個module,
或許可以參考sndconfig的作法來做自動偵測的功能
(是否可以將sndconfig寫成snd-detect這個module呢?)