あなたが提起する質問は基本的に次のとおりです。ALSA によって制御されるシステムに 32 を超えるサウンド カードを配置できますか? USB コントローラは、接続されているすべてのサウンド カードを認識していますが、ALSA システムは認識していないようです。
ここで何が起こっているかを確認するために、カーネル ソースに入りましょう。サウンド カードの最大数の問題に関する詳細は/sound/core/sound.c
、次のサイトで確認できます。
39 static int cards_limit = 1;
40
41 MODULE_AUTHOR("Jaroslav Kysela <perex@perex.cz>");
42 MODULE_DESCRIPTION("Advanced Linux Sound Architecture driver for soundcards.");
43 MODULE_LICENSE("GPL");
44 module_param(major, int, 0444);
45 MODULE_PARM_DESC(major, "Major # for sound driver.");
46 module_param(cards_limit, int, 0444);
47 MODULE_PARM_DESC(cards_limit, "Count of auto-loadable soundcards.");
48 MODULE_ALIAS_CHARDEV_MAJOR(CONFIG_SND_MAJOR);
49
50 /* this one holds the actual max. card number currently available.
51 * as default, it's identical with cards_limit option. when more
52 * modules are loaded manually, this limit number increases, too.
53 */
54 int snd_ecards_limit;
55 EXPORT_SYMBOL(snd_ecards_limit);
コードとそのコメントから、次の 2 つのことがわかりました。
変数 cards_limit はモジュール パラメータです。インストール時にこのパラメーターが 32 に設定されていると仮定します。ALSA サポートがカーネルに組み込まれている場合は、このオプションを変更したカスタム カーネルを構築できます。ALSA サポートが組み込まれておらず、モジュールとして読み込まれている場合は、モジュールの読み込み中にこのパラメーターを設定できます。これを行うには、システム構成を変更するか ( man modprobe.d
)、モジュールをアンロードしてから、オプションで再ロードします ( man modprobe
)。
制限は、自動的にロードされるサウンドカードの数のみを制限するように記述されています。この制限を克服するには、サウンドカードを担当するモジュールを手動でロードするだけで十分な場合があります。手動で追加されたサウンドカードについて、カーネルには制限が設定されていません。
ソース:カーネル 2.8 Git