Linuxカーネルが管理できるUSBデバイスの最大数はいくつですか?これはルートハブまたは他の何かにも依存しますか?
この最大数を増やす方法はありますか?
大量のUSBスティックに書き込もうとしたときに問題が発生したため、これを行う必要があります。これを行うには、次のように設定します。
Ubuntu Linuxを実行しているコンピューターが1台あり、このマシンの3つのUSBポートに3つの(アクティブな)ハブが接続されています。これら3つのハブはすべて7ポートハブです。これら7つのポートのうち6つには、さらに多くのハブが接続されています。これにより、「2番目の」レイヤーにある3 * 6 = 18HUBの数がわかります。これらの各ハブは、アクティブな7ポートハブでもあります。これらの第2層HUBのすべてのポートにUSBスティックが接続されています。合計で126本のUSBスティックがコンピューターに接続されています。
すべてのUSBディスクデバイスを検索するスクリプトがあります(/ dev/disk/by-path /のリストを使用)。次に、各USBディスクデバイスが最初にパーティション化され、cpを使用して書き込まれ、syslinuxを使用して起動可能になります。これは並行して行われません!
問題:使用しているUSBディスクデバイスは105台しかありません
ls -la /dev/disk/by-path | grep usb | grep -v part | wc -l
3列(1列は2層目の1ハブに対応)のスティックのLEDも消灯しています。
これらのスティックをすべて機能させるにはどうすればよいですか? (またはおそらくそれ以上?)
ここで説明されているように、標準です: https://en.wikipedia.org/wiki/USB_device#System_design
1つのホストコントローラーに127台を超えるデバイス(ハブを含む)を接続することはできません。
現在:ホストコントローラー+3ハブ(第1層)+ 18ハブ(第2層)=ディスクデバイスとして表示されない22台のデバイス。
127からこれらの22個のUSBデバイスを引いたもの=カーネルがディスクとして管理できる105個のデバイス。
ADDRアドレスフィールドが7ビット長であるため、127デバイスはUSBプロトコルの厳しい制限です(ここを参照: http://www.beyondlogic.org/usbnutshell/usb3.shtml#USBProtocols )。
したがって、ソフトウェアではそれを増やす方法はありません。たぶん、ホストコントローラーインターフェイス以上のものを試してみるか、ハブの数を減らすことでトポロジを変更することができます(したがって、システムから認識されるディスクの数を増やすことができます)。