仮想ハードドライブ(特にfreeNASをインストールするとき)を電話やビデオゲームコンソールなどの外部デバイス用のUSB大容量記憶装置周辺機器として使用する場合があります。私の考えは、設定からすべてのUSBストレージデバイスを削除し、代わりにNASの一部として仮想化して、定期的なバックアップルーチンの一部として簡単に作成することでした。
USBが対称設定ではないことに気づいたので、NASにスレーブポートが必要でした。また、これは実際のUSBコントローラカードで行われるため、USBポートをスレーブポートとして「使用」する実際の方法はありません。
私の質問は、ハードウェア、ソフトウェア、またはそれらの組み合わせでこれを達成するためのどのようなエミュレーションまたは変換方法がありますか?スレーブポートを操作できる場合は、大容量ストレージモードでLinux USB-gadget APIを使用できるようです。しかし、USBスレーブやUSB-OTGをサポートするいかなる種類の拡張カードも見つからないようで、この設定で動作する他のハードウェアソリューションもないようです。
誰にもポインターがありますか?
編集:そのようなデバイスは動作しますか?
答え1
「一括ストレージガジェット」のドキュメントを確認してください。これが出発点になる可能性があります。 https://www.kernel.org/doc/html/latest/usb/mass-storage.html
仮想USBデバイスをホストするコンピュータのハードウェアについては、特別なものは必要ありません。私もこれについて研究してみた結果、市販されているほとんどのUSB-CコントローラがUSBデバイス(ホストではない)モードに入ることができるようです。 USB-Cポートを搭載したAppleコンピュータには、ターゲットディスクモードをサポートする正しいチップがあります。 「Black Apple」(macOSを実行しているApple以外のコンピュータ)群衆は、このチップがどれほど一般的であるかを証明しています。 Black Appleは、この機能がオペレーティングシステムの一部ではないため、ターゲットディスクモードに入ることはできません。 Appleはこの機能をファームウェアに入れます。これにより、コンピュータが起動できないコンピュータを修正するためにこのモードに入ることができます。
ここに追加する内容はあまりありません。これまで私が知っているのは、Linuxコンピュータが仮想USBデバイスとして機能する機能を開発する「USBガジェット」というプロジェクトがあるということだけです。この作業を実行するために必要なハードウェアはかなり一般的であることがわかっており、ますます多くのラップトップがUSB-Cを電源入力ポートとして使用しています。 USB電源を正しく動作させるには、電源を供給する「ホスト」と電源を受け取る「デバイス」が必要です。各USB-PD電源装置は、接続されているすべてのデバイス(たとえば、USB-Cを電源入力ポートとして使用するノートブック)への電源供給をネゴシエートするUSBホストです。
答え2
LinuxベースのOSがオプションの場合は、USBフロントエンドを持つLIOを確認できます。
「USB Gadget Fabricモジュールを使用すると、LinuxからUSB(汎用シリアルバス)を介してローカルストレージをエクスポートし、他のシステムからそれを通常のストレージデバイスとしてマウントできます。」(https://en.wikipedia.org/wiki/LIO_(SCSI_target))
今申し上げられないのは次のとおりです。
- どのような配線が必要ですか?単純な1対1の接続をしないでください。機械が破損する可能性があります!
- 特定のUSBポートを設定する方法
もっと時間があればもっと勉強しましょう!
編集:試しましたが失敗しました。実際よりはるかに簡単に聞こえます。たぶん、他の人はこれについてのより多くの情報を持っていますか?