Recently, I am interested in SBC (single-board computer) and need to prepare a Linux development environment because many utilities/tools/packages are ONLY available on Linux (such as cross-compiler). I have 2 Mac mini and 1 MBP, and I want to share the Linux development environment among these computers with minimal efforts. Then, it comes to me to utilize Vagrant and VirtualBox to automate Linux environment setup.
Then, I meet several problems... Here I explain how those problems are solved, and the results are committed to github.
USB SD-Card Reader
Now popular SBCs use SD-card as storage to store Linux or Android, so it's necessary to use dd command to write Linux/Android images onto SD-card. For this purpoase, I select one combo card reader: Digifusion SD2 GO 120 in 1:
However, when the Digifusion card reader is connected to the USB port on my MBP, the card reader is automatically mounted by Mac OSX. Of course I can manually add USB filter with VirtualBox GUI
But I don't like GUI that breaks my idea to automate development environment setup. So, I need to automate it with VBoxManage.
First, it's failed to enable virtual USB controller. You need to install VirtualBox 4.2.18 Oracle VM VirtualBox Extension Pack. After installing extension pack, the
--usb on and
--usbehci on can work successfully with Vagrantfile:
Second, you need to add USB filter with
VBoxManage usbfilter command. Before writing the filter, you can observe that Digifusion card reader is treated as mass storage:
So, to solve the problem simply, I add one USB filter to allow VirtualBox to mount any USB mass storage onto the VM:
With above script, when the VM is launched with
vagrant up command, you can see one USB filter "Any mass storage" is added in VirtualBox GUI:
And, the devices in Ubuntu (precise64) for Digifusion card reader are mounted as