The Mer Wiki now uses your Mer user account and password (create account on

SDK on VirtualBox/Design

From Mer Wiki
Revision as of 12:58, 10 June 2013 by Lbt (Talk | contribs)

Jump to: navigation, search



The virtualised SDK architecture supports multiple devices and emulators with a single Build Engine.

The main components are:

  • Build Engine
  • Qt Creator
  • Virtualbox Emulator(s)
  • Physical device(s)

Shared Folders

Shared folders are used for sharing:

  • Configuration
  • SSH keys
  • Home directory
  • Targets
  • Other source directory trees


There are 3 shared folders at the moment.

mersdk:/etc/mersdk is mapped to the SailfishOS application areas mersdk folder and contains: configuration, targets and the ssh keys

home:/home/mersdk is mapped to the users 'home' directory

srcN:/home/srcN are each mapped to source directory areas on the host


The upcoming SDK will have 4 shared folders on the Engine and 2 on the Emulator:

  • ./vmshare is shared as 'config' to MerSDK and emulators mounted under /etc/mersdk/share
./vmshare/ssh/private_keys/*/	private keys to ssh to emulator and SDK
./vmshare/devices.xml		device description/config
  • ./mersdk/targets is shared as 'targets' to MerSDK mounted under /host_targets/
./mersdk/targets/*/		Targets
./mersdk/targets/targets.xml	Target description
  • ./mersdk/ssh is shared as 'ssh' to MerSDK mounted under /etc/sshd/authorized_keys
./mersdk/ssh/*/ 		authorized_keys for sshd
  • ./emulator/1/ssh is shared as 'ssh' to MerSDK mounted under /etc/sshd/authorized_keys
./emulator/1/ssh/*/ 		authorized_keys for sshd

Notice that there may be multiple emulators so each one has an 'internal persistent DeviceID' (ie not something changeable and user visible like a name) A simple index will be enough - we can use the same index for the internal LAN (see below)

Additional src dir mappings will look like this:

  • QtCreator asks for a shared src path
  • Runs:
VBoxManage sharedfolder add MerSDK src<N> --hostpath <path>
  • Also adds the path to:
./share/qtcreator/MerProject/QtCreator.ini at MerSDK/SharedSrc<N>
  • Then run sdk-manage --srcdir --add 1
  • This adds and mounts a mountpoint (systemd) change --add to --remove to remove
  • The current version of scripts in sdk-utils/sdk-vm assumes these paths



The SDK network serves the following purposes:

  • Host -> Build Engine for ssh/web
  • Host -> Emulator for ssh/debugging
  • Host -> Device for ssh/debugging
  • Build Engine -> internet for updates and information
  • Build Engine -> Device with ssh to support deployment
  • Emulator -> internet for updates and information
  • Build Engine -> Emulator with ssh to support deployment

To do this the Emulator and Build Engine will have 2 network adaptors. An adaptor running in NAT mode allows open outbound access and permits some incoming connections (ssh, www and gdb). This also handles Engine > Device connectivity. Another adaptor is a VirtualBox internal adaptor and supports open Build Engine <> Emulator(s) connectivity.

Note the emulator 'index' is just a low value integer to support multiple emulator configurations.

QtCreator and the Build Engine need to collaborate to setup the Emulator internal networking.

 <engine name="Mer SDK" type="vbox">
 <device name="Nemo N9" type="real">
 <device name="SailfishOS Emulator" type="vbox">
Personal tools