センサーがあります。センサーはUSB経由で接続され、/ devフォルダにttyUSB0というファイル名があります。次のコマンドセットがあります。
1: -m 1024 \
2: -cpu core2duo \
3: -serial stdio \
4: -display none \
5: -hda /dev/sdb \
6: -usb \
7: -usb -device usb-host:productid=0x1a86,vendorid=0x7523 \
8: -drive file=/home/fedor/Git/usb.img \
9: -kernel $BUILD/$E_INIT/$BUILD_TARGET
USBデバイスを接続するコマンドは、6、7、8ラインにありますが、機能しません。次のエラーメッセージが表示されます。
-device usb-host:productid=0x1a86,vendorid=0x7523: Parameter 'driver' is missing
ファイルに完全な読み取り/書き込み権限が付与されます。
sudo chmod -R uog=rwx /dev/ttyUSB0
次のコマンドを使用してファイルイメージを作成します。mkisofs -J -o usb.img /dev/ttyUSB0
fedor@fedor-VirtualBox:~$ lsusb
Bus 001 Device 003: ID 1a86:7523 QinHeng Electronics CH340 serial converter
Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
複数のソースを見てさまざまなオプションを試しましたが、デバイスが接続されていません。
追加の応答:
最初のリンク -ここにリンクの説明を入力してください
2番目のリンク -ここにリンクの説明を入力してください
3番目のリンク -ここにリンクの説明を入力してください
それはすべてです。私は他を探しません。はい、これらは実行指示です。拡張子が.shのファイルにあります。サイズが大きいが、ほんの一部です。 3行の代わりに-serial /dev/ttyUSB0を挿入すると、すべてがうまく機能しますが、デバイスとの交換は行われません。 USBデバイスをqemuに入れたいです。それがすべてです。
まとめるデバイスをリセットできません。なぜですか?わかりません。たぶん他の人が私に教えてくれるかもしれません。
1: sudo modprobe -r ch341
すべてを元に戻すにはsudo modprobe ch341
。
2: sudo chown -R fedor /dev/bus/usb
。
サム: qemu-system-x86_64 -help
端末に書き込んで「USBオプション」を取得します。
3.1: -usb enable on-board USB host controller (if not enabled by default)
。
3.2: -usbdevice name add the host or guest USB device 'name'
。
4: lsusb -v
次に、私が書いた命令はlsusbではなくlsusb -vでした。 2行が見つかりました:idVendor 0x1a86 QinHeng Electronics
、idProduct 0x7523 CH340 serial converter
。
5:次に、qemuを開き、デバイスが表示されていることを確認します。私はターミナルに次のように書く: qemu-system-x86_64
。 Qemuが開きます。
5.1:を押してqemu端末を開きます。Ctrl+Alt+2
5.2:私はqemuに書いてinfo usbhost
から次の情報を得ます。
Bus 1, Addr 3, Port 2, Speed 12 Mb/s, Class ff: USB device 1a86:7523
6:デバイスが利用可能であることを確認したら、.sh拡張子を持つファイルに次のように書きました。
1: -m 1024 \
2: -cpu core2duo \
3: -serial stdio \
4: -display none \
5: -hda /dev/sdb \
6: -usb \
7: -usbdevice host,vendorid=0x1a86,productid=0x7523 \
8: -kernel $BUILD/$E_INIT/$BUILD_TARGET
6行と7行を追加しました。
7:次のエラーが表示されます。could not add USB device 'host,vendorid=0x1a86,productid=0x7523'
答え1
ネストされた仮想化を実行しているようです。 VirtualBox VM内でLinuxを実行し、そのVM内で別のQemu VMを実行しようとしています。これは正しいですか?
また、使用しているLinuxディストリビューションの名前とバージョン、または少なくとも使用しているQemuのバージョンを指定する必要があります。
を使用する場合、-serial /dev/ttyUSB0
センサーはQemu VMに「本物の」シリアルデバイスとしてマークする必要があります。つまり、/dev/ttyS0
Qemu VMのオペレーティングシステムがLinuxまたはCOM1:
Windowsのように見えるはずです。
Qemu VMの制御下でシリアル変換器(およびセンサー)をUSBデバイスとして提供する前に、VirtualBoxがLinux VMでそれを使用できるようにする必要があります。lsusb
リストに表示されるので、すでに達成したものです。次のステップは、デバイスからLinux VMのusbserialドライバを切断することです。これを達成する方法はいくつかあります。
シリアルコンバータのサポートを担当するUSBシリアルドライバモジュールを取り外します。
sudo modprobe -r ch341
または、シリアルコンバータのUSBパス仕様を見つけて、ドライバにバインドを解除するように指示します。たとえば、
ls -l /sys/bus/usb-serial/devices/ttyUSB0
lrwxrwxrwx 1 root root 0 Dec 6 16:47 /sys/bus/usb-serial/devices/ttyUSB0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0/ttyUSB0/
私の例では、USBパスは次のとおりです1-8:1.0
。バインディングを解除する方法は次のとおりです。
echo -n "1-8:1.0" > sudo tee /sys/bus/usb/drivers/ch341/unbind
システムの正しいパスを見つける必要があります。
USBシリアルコンバータドライバがシャットダウンした後、Qemuが「raw」USBデバイスにアクセスできることを確認する必要があります。ユーザーとして仮想マシンを実行する場合fedor
:
sudo chown -R fedor /dev/bus/usb
その後、Qemu VMを起動し、独自にUSBシリアルコンバータデバイスを宣言することができます。
オプションのリストは-usb
#6行と#7行で2回指定されます。一度だけで十分ではないでしょうか?
返品、Qemu 4.2.50用Qemu USBエミュレーションドキュメントUSB-device
オプションが必要だと言う
-device usb-host,productid=0x1a86,vendorid=0x7523 \
あなたのものではなく
-device usb-host:productid=0x1a86,vendorid=0x7523 \
コロンの代わりにカンマを参照してください。これがエラーメッセージの原因である可能性があり、Qemuのバージョンによって構文が異なる場合があります。
3つのリンクのどれもmkisofs
コマンドに言及しません。これにより、達成する目標はまだ明確ではありません。
答え2
何もmodprobe -r
必要ありません。 AFAIK qemuは権限を除くすべてを処理します(したがってsetfacl
; chown
/chmod
も良いです)。
私の経験では、ホストコントローラはホストに接続されているデバイスと同じ種類のコントローラでエミュレートする必要があります。したがって、ほとんどの最新のマシンでは選択でき、qemu-xhci
一部の古いマシンでは試してみることができますusb-ehci
。
編集:デバイスが最高速度(12M)または低速(1.5M)デバイスで、何らかの理由でエミュレートされたXHCIホストコントローラ-usb
(エミュレートされたUHCIコントローラ)が利用できない場合は、そのデバイスを使用するのが正しいスイッチのようです。
qemuが古すぎてそれらのうちの1つをインストールできない場合は、利用可能な選択肢について学ぶことができます。
$ qemu-system-x86_64 -device help | grep '[e|x]hci'
name "ich9-usb-ehci1", bus PCI
name "ich9-usb-ehci2", bus PCI
name "nec-usb-xhci", bus PCI
name "qemu-xhci", bus PCI
name "usb-ehci", bus PCI
参照番号:https://github.com/qemu/qemu/blob/master/docs/system/devices/usb.rst