## SBC dev environment with platform-virtual-machine

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.

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 sdb ~ sdd: