Ubuntu12.04で/dev/dspを使えるようにする
Ubuntu12.04で/dev/dspを使えるようにします。/dev/dspはUbuntu10.10以降のカーネルでデフォルトだと無効になっているので、カーネルをビルドし直します。
手順
ビルドに必要なものをインストール
$ sudo apt-get install build-essential $ sudo apt-get install kernel-package $ sudo apt-get install libncurses5-dev
linuxのソースをダウンロード
$ apt-cache search linux-source linux-source - Linux kernel source with Ubuntu patches linux-source-3.2.0 - Linux kernel source for version 3.2.0 with Ubuntu patches $ sudo apt-get install linux-source-3.2.0
/usr/src/linux-source-3.2.0.tar.bz2 にダウンロードされます。
ソースコードを展開する
$ sudo su - # cd /usr/src/ # tar xf linux-source-3.2.0.tar.bz2 # ls linux-headers-3.2.0-23 linux-headers-3.2.0-23-generic linux-headers-3.2.0-24 linux-headers-3.2.0-24-generic linux-source-3.2.0 linux-source-3.2.0.tar.bz2 # cd linux-source-3.2.0/
現在のビルドの設定を反映させる
# cp /boot/config-3.2.0-24-generic .config # make oldconfig
/dev/dspを使えるように設定を変更する
# make menuconfig
configのメニューが開くので、「Device Drivers」->「Sound card support」->「Advanced Linux Sound Architecture」と進み、
・OSS PCM (digital audio) API - Include plugin system
・OSS Sequencer API
にチェックを入れます。
Makefileを編集してカーネルのバージョンに名前をつける
# vim Makefile // 4行目を変更 EXTRAVERSION = -24-generic.devdsp
カーネルのバージョンは3.2.xx{EXTRAVERSION}になります。僕の環境だと3.2.16-24-generic.devdspになりました。
カーネルをビルドする
# CONCURRENCY_LEVEL=2 make-kpkg --revision=1 --initrd kernel-image
CONCURRENCY_LEVELは並列でビルドするときのコア数です。ビルドが完了すると/usr/srcにパッケージファイルが作成されます。
カーネルのインストール
# cd ../ # ls linux-headers-3.2.0-23 linux-headers-3.2.0-24 linux-image-3.2.16-24-generic.devdsp_1_amd64.deb linux-source-3.2.0.tar.bz2 linux-headers-3.2.0-23-generic linux-headers-3.2.0-24-generic linux-source-3.2.0 # dpkg -i linux-image-3.2.16-24-generic.devdsp_1_amd64.deb
インストール後に再起動します。
これで/dev/dspはデバイスとして有効になっているはずですが、デバイスドライバがないためか、使おうとするとbusy状態で使えませんとエラーが出ます。
デバイスドライバのインストール
$ sudo apt-get install alsa-oss
試しに使ってみる
$ echo 1 > /dev/dsp