我通过docker-machine创建了一个虚拟框:
$ docker-machine create --driver virtualbox default
在Guest-OS中,我想访问我的USB-Serial设备,这是一个Nordic nRF52840 DevKit,在macos中列为 /dev/tty.usbmodem144241
.
但是,此设备未被virtualbox列为USB设备 . 我还尝试将设备添加为端口模式"Host-Device"的串行端口,如in this link所述,但没有任何成功:
如果我将串行端口添加为 .tty-usbmodem
,则虚拟机将挂起'Starting',我必须终止所有虚拟机进程或断开串行电缆才能重新启动 . 如果我使用 .cu-usbmodem
虚拟机启动但立即崩溃 .
我坚持这个问题,因为docker for mac不支持没有虚拟机的 --devices
映射,而对于虚拟机我无论如何都无法管理添加端口 .
关于我还能尝试什么的任何想法?
1 回答
因此,事实证明,当设备实际连接时,virtualbox非常挑剔,并且无法像我使用VMWare那样无缝地工作:
我正在使用的设备实际上只是在USB菜单中显示为
SEGGER J-Link
必须添加为过滤器(过滤器真的很混乱>首先我认为它会忽略设备)
无法将设备添加到virtualbox 'on the fly'(使用'Show'窗口中的USB图标,请参见屏幕截图),在虚拟机启动之前不得连接它 .
串行选项卡无关紧要>全部通过USB选项卡处理 .
重要的事实是,虚拟机会启动 device must not be connected . 因此,添加设备的步骤如下:
关闭虚拟机电源
确保已启用USB控制器
将USB /串行设备连接到计算机(主机)
将其添加到虚拟框中的过滤器
现在每次要将设备与虚拟机一起使用时:
确保虚拟机已关闭(例如
docker-machine stop default
)断开USB /串行设备与计算机的连接
启动虚拟机(例如,
docker-machine start default
)Virtualbox现在应该能够"intercept"设备并将其列在
/dev
下,例如/dev/ttyACM0
在盒子启动后取出/插入已过滤的设备也可以正常工作(如果您在启动设备之前忘记断开设备,则无需再次关闭虚拟机 . 只需等待盒子启动,拔下插头即可在,应该是好的) .