Linux(好ましくはUbuntu)でUSB-USBデータ転送システムを作成したいと思います。これを行うには、外部ハードウェアまたはスイッチ(このケーブルを除く)。これはシステムにUSBドライブを取り付けるのと同じですが、この場合、あるLinuxシステムが別のシステムにインストールされます。どうやって作れますか?
私のカーネルプログラミングの経験が非常に基本的であることを考えると、利用可能なカーネルモジュールはありますか?
ベストアンサー1
はい可能ですが、はいいいえUSB-Aコネクタ(通常はマザーボードのUSBに接続されています)がある2本のUSBケーブルを切り、データケーブルを交差接続します。このような自家製ケーブルを使用してUSB電源コードを接続すると、オンボードUSB処理チップが揚げられる可能性が高くなります。。自宅でこれをしないでください!
ほとんどのコンピュータのマザーボードでUSBを処理するチップはホストチップです。さらに、作業速度を上げ、CPUの負荷を軽減するために、多くの低レベル通信を処理します。 USBポートのピンを処理してホスト以外の役割を果たすようにコンピュータをプログラムすることはできません。チップレベルでは、ホストの役割とホストの接続を切り替えることができるデバイスはほとんどありません。これには、より高価なチップが必要なためです。そのため、スマートフォン、GPS、電子ブックなどのスマートデバイスはすべてLinuxまたは同様のデバイスを実行しますが、通常のssh
USBケーブルを介して接続すると通信できません。
デバイスは接続されると一種の愚かなモードに入り、ホストコンピュータ(マイデスクトップシステム)はストレージをUSBディスクとして使用できます。接続が失われると、デバイスはホストと同じインタフェースを使用してデータを取得します(ケーブル接続は必要ありませんが内部で発生します)。これらのデバイスの場合、Linux が両方のシステムで実行されていても、システム間の通信はありません。。これは、デスクトップに接続する通常のマイクロまたはミニUSBケーブルとは別のものです。
2台のデスクトップコンピュータの間には通常USB-A-USB-Aケーブルが必要なため、上記の操作は不可能です。これは一般的ではありません(接続を駆動する通常のチップでは機能しないため)。
2つのUSB-Aコネクタを使用するUSB-USBソリューションは、途中にいくつかの電子機器があるケーブルに基づいています。 (USB→シリアルをシリアル→USBケーブルに接続してから、すべて1つで接続するのと似ています)。通常のシリアルポートを介してケーブルを介してUUCPなどを使用することもできますが、一般的に転送するにはドライバが必要です。他のシステムにログインするには、inetdと正しい設定が必要な場合があります。
1この方法でソフトウェアを変更できる唯一のデバイスは、この特定のチップを搭載したArduinoボードです。このチップを使ってマザーボードを作成しました。 二重通常のArduinoボードと同じくらい高価です。