GRUB ISO loopback boot 用に現行モデルの SanDisk Ultra Fit SDCZ430 64GB を仕入れて来たんだが、64bit 版の Windows 10 Pro 1809 上の VirtualBox 6.0.14 r133895 (Qt5.6.2) から「デバイス」→「USB」→「SanDisk Ultra Fit [0100]」を選んで SanDisk Ultra Fit SDCZ430-064G-G46 をホストからゲストに割り当てようとすると、一見成功したように見えるがゲストからは見えない。
「デバイス」→「USB」→「SanDisk Ultra Fit [0100]」にもチェックマークがついてないので、ゲストにはキャプチャされてないはずなのだが、バルーンヘルプには
このため再度「デバイス」→「USB」→「SanDisk Ultra Fit [0100]」をすると、
VBoxManage から usbdetach や usbattach を試してみるが、上記のように不正常にキャプチャされた状態だと、
usbhost の情報は以下のような感じ。
これは、デバイスを host から抜いても消えずに残り続ける。
これを解消するには、今の所 host を reboot する以外、方法が見当たらないんだがどしたらいいの?これ?
同じ USB ポートに旧モデルである SanDisk Ultra Fit SDCZ43 の 32GB モデルを挿した場合、同じく「デバイス」→「USB」→「SanDisk Ultra Fit [0100]」に見えるんだが、こちらは問題なくキャプチャされ guest に表示されるし、手持ちの他の USB フラッシュメモリでも特に問題はなさそうなので、USB ポートや VirtualBox 自体には問題はなさそう。どうも、現行モデルの Ultra Fit と VirtualBox の相性が良くないんじゃないかと。
旧モデルの Ultra Fit の usbhost の情報は以下のような感じ。
新モデルは SerialNumber が馬鹿みたいに長いので、ひょっとしてこれが原因なのでは?という気がするのだが、調べる方法がさっぱり分からない。
容量は手持ちの旧モデル 32GB で今回の新モデルが 64GB なので、これもひょっとすると?って気はするが、流石にそれはないかなと。
20191118: 追記
とりあえず Captured の状態が解除できない問題は、VirtualBox 関連のプロセスがすべて停止すれば解除される事が分かった。
具体的には、VM や manager が起動している間は
この状態ではまだ Captured の状態が解除されないが、しばらくすると自動的に VBoxSVC と VBoxSDS が停止して
この状態になれば Captured の状態は解除されていた。
また、この状態で再度 VM や manager を起動しても usbattach を行わない限りは Busy (host 側で使用中) の状態が勝手に Captured の状態になることはなかった。
「デバイス」→「USB」→「SanDisk Ultra Fit [0100]」にもチェックマークがついてないので、ゲストにはキャプチャされてないはずなのだが、バルーンヘルプには
ベンダID: 0781 プロダクトID: 5583 リビジョン: 0100 シリアルNo. ************************************************************************************************************************ 状態: キャプチャーと出ており、どうやらこのゲスト以外の VirtualBox のどこかに不正常にキャプチャされてる状態になってしまっている。
このため再度「デバイス」→「USB」→「SanDisk Ultra Fit [0100]」をすると、
USB デバイス "SanDisk Ultra Fit [0100]" の仮想マシン "******" への割り当てに失敗しました。と上部に帯が出て、これをクリックすると
詳細: USB device "SanDisk Ultra Fit" with UUID {********-****-****-****-************} is busy with a previous request. Please try again later. 終了コード: E_INVALIDARG (0x80070057) コンポーネント: HostUSBDeviceWrap インターフェース: [HostUSBDevice {********-****-****-****-************} 呼び出し先: [Console {********-****-****-****-************}と表示される始末。
VBoxManage から usbdetach や usbattach を試してみるが、上記のように不正常にキャプチャされた状態だと、
$ VBoxManage controlvm ****** usbdetach ********-****-****-****-************ VBoxManage.exe: error: USB device with UUID {********-****-****-****-************} is not attached to this machine VBoxManage.exe: error: Details: code E_INVALIDARG (0x80070057), component ConsoleWrap, interface IConsole, callee IUnknown VBoxManage.exe: error: Context: "DetachUSBDevice(usbId.raw(), dev.asOutParam())" at line 1391 of file VBoxManageControlVM.cpp
$ VBoxManage controlvm ****** usbattach ********-****-****-****-************ VBoxManage.exe: error: USB device 'SanDisk Ultra Fit' with UUID {********-****-****-****-************} is busy with a previous request. Please try again later VBoxManage.exe: error: Details: code E_INVALIDARG (0x80070057), component HostUSBDeviceWrap, interface IHostUSBDevice, callee IUnknown VBoxManage.exe: error: Context: "AttachUSBDevice(usbId.raw(), captureFilename.raw())" at line 1386 of file VBoxManageControlVM.cppのように言われて不正常なキャプチャを解除することすらできない。
usbhost の情報は以下のような感じ。
$ # SanDisk Ultra Fit SDCZ430-064G-46G $ VBoxManage list usbhost ... UUID: ********-****-****-****-************ VendorId: 0x0781 (0781) ProductId: 0x5583 (5583) Revision: 1.0 (0100) Port: 18 USB version/speed: 3/Super Manufacturer: SanDisk Product: Ultra Fit SerialNumber: ************************************************************************************************************************ Address: {********-****-****-****-************}\0038 Current State: Captured ...
これは、デバイスを host から抜いても消えずに残り続ける。
これを解消するには、今の所 host を reboot する以外、方法が見当たらないんだがどしたらいいの?これ?
同じ USB ポートに旧モデルである SanDisk Ultra Fit SDCZ43 の 32GB モデルを挿した場合、同じく「デバイス」→「USB」→「SanDisk Ultra Fit [0100]」に見えるんだが、こちらは問題なくキャプチャされ guest に表示されるし、手持ちの他の USB フラッシュメモリでも特に問題はなさそうなので、USB ポートや VirtualBox 自体には問題はなさそう。どうも、現行モデルの Ultra Fit と VirtualBox の相性が良くないんじゃないかと。
旧モデルの Ultra Fit の usbhost の情報は以下のような感じ。
$ # SanDisk Ultra Fit SDCZ43 32GB $ VBoxManage list usbhost ... UUID: ********-****-****-****-************ VendorId: 0x0781 (0781) ProductId: 0x5583 (5583) Revision: 1.0 (0100) Port: 3 USB version/speed: 3/Super Manufacturer: SanDisk Product: Ultra Fit SerialNumber: ******************** Address: {********-****-****-****-************}\0030 Current State: Busy
新モデルは SerialNumber が馬鹿みたいに長いので、ひょっとしてこれが原因なのでは?という気がするのだが、調べる方法がさっぱり分からない。
容量は手持ちの旧モデル 32GB で今回の新モデルが 64GB なので、これもひょっとすると?って気はするが、流石にそれはないかなと。
20191118: 追記
とりあえず Captured の状態が解除できない問題は、VirtualBox 関連のプロセスがすべて停止すれば解除される事が分かった。
具体的には、VM や manager が起動している間は
$ tasklist|grep -iE 'vbox|virtualbox' VirtualBox.exe 12988 Console 1 83,212 K VBoxSVC.exe 10392 Console 1 22,984 K VBoxSDS.exe 13100 Services 0 9,816 K VirtualBoxVM.exe 11924 Console 1 8,272 K VirtualBoxVM.exe 12700 Console 1 4,944 K VirtualBoxVM.exe 9600 Console 1 134,804 Kみたいになっているので、VM と manager を落とすと、
$ tasklist|grep -iE 'vbox|virtualbox' VBoxSVC.exe 10392 Console 1 23,088 K VBoxSDS.exe 13100 Services 0 9,820 Kのような状態になる。
この状態ではまだ Captured の状態が解除されないが、しばらくすると自動的に VBoxSVC と VBoxSDS が停止して
$ tasklist|grep -iE 'vbox|virtualbox'のように VirtualBox 関連のプロセスがすべて停止した状態となるので、
この状態になれば Captured の状態は解除されていた。
また、この状態で再度 VM や manager を起動しても usbattach を行わない限りは Busy (host 側で使用中) の状態が勝手に Captured の状態になることはなかった。
タグ
コメントをかく