カテゴリ
リンク

当サイトは、玄箱PRO (KURO-BOX/Pro)を中心とした組み込み、Linuxと電子工作を扱っています。
会社案内

情報セキュリティおよび個人情報の取り扱いについて


コメントとトラックバックは、spamを予防するために、編集担当が公開の作業をするまで非公開になっています。コメントはそれぞれ投稿した人のものです。

はじめに
 Debian Lenny (armel アーキテクチャ)をインストールした状態では ALSA (Advanced Linux Sound Architecture, サウンド関連のデバイス・ドライバやユーティリティ) が期待通りに動作しません。これはカーネル(EABI)を、OABI との互換性を保つようにオプション(COMPAT_OABI)を指定すると起きることが知られています。

 ところで、etch から lenny への移行で OABI のプログラムは必要なくなっているはずなので、問題のオプションを外したカーネルを作成してみました。

■2.6.29.3 カーネル
 2.6.29.3 カーネルのコンパイルは、これまでのバージョンと同じ方法で問題はありませんでした。コンパイル済みバイナリは以下になります。

 config ファイルやカーネル・ソースに対する変更は以下です。カーネル・ソースは別途入手してください。


 コンパイルについては、以前の記事[1][2][3]も参考にしてみてください。

[1] http://www.eleki-jack.com/Kurobox-pro2/2008/02/linux-2625rc1git4.html
[2] http://www.eleki-jack.com/Kurobox-pro2/2007/06/23.html
[3] http://www.eleki-jack.com/Kurobox-pro2/2007/06/33.html

■新しいカーネルで起動する
 新しいカーネルで起動しようとすると、root パーティションの指定がおかしいということで起動しませんでした。どうやら u-boot の環境変数がよくなかったようです(bootargs に root パーティションが指定されていなかった)。起動している Debian lenny で以下のコマンドを実行して環境変数を書き換えると無事起動できるようになりました。

fw_setenv bootcmd 'ide reset; ext2load ide 0:1 $(default_kernel_addr) /$(kernel); ext2load ide 0:1 $(default_initrd_addr) /$(initrd); setenv bootargs $(bootargs_base) $(bootargs_root) $(buffalo_ver); bootm $(default_kernel_addr) $(default_initrd_addr)'


■ALSA は?
 さて気になっていたALSA については、aplay で再生できるようになりました。arecord はまだ動作がおかしいようです。それではということで、いろいろなバージョンを比較してみました。すべて EABI でコンパイルしたカーネルです。
バージョンCOMPAT_OABIaplayarecord備考
2.6.25.4なしOKOKusb audio が一つのみでも aplay に -D hw0 が必要
2.6.26ありNGNG 
2.6.26なしOKNGusb audio が一つのみでも aplay に -D hw0 が必要
2.6.29.3なしOKNG 
2.6.30-rc7なし  起動中に panic する


 バージョン 2.6.26 の COMPAT_OABI つきカーネルが Debian lenny (armel) のデフォルトです。途中のバージョンは試せていないのですが、2.6.25.4 が期待する動作に一番近いということになってしまいました。ちょっと予想外な結果でした。

 ということで 2.6.25.4 を EABI かつ COMPAT_OABI オプションなしでコンパイルしたものを公開します。


 config ファイルやカーネル・ソースに対する変更は以下です。カーネル・ソースは別途入手してください。


光永 法明

 カテゴリ 

 

トラックバック(0)

このブログ記事を参照しているブログ一覧: Debian lenny (armel) と ALSA

このブログ記事に対するトラックバックURL: http://www.eleki-jack.com/mt/mt-tb.cgi/2986

おすすめ書籍
Powered by
Movable Type 4.1
/*yahoo remove*/