OpenEmbedded Build VM

The OpenEmbedded Build VM is a tool to cross-compile the root filesystem of the dSS. It allows developers to quickly and easily:
  • modify and customize existing packages
  • create new packages to be installed on the dSS hardware
  • create a new root filesystem
  • port the dSS software & root filesystem to alternate platforms

This disk image is based on the Gentoo distribution, which OpenEmbedded's bitbake build system is based on. It contains a fairly full-featured VM, running lots of tools that would be on a typical developer desktop installation. The kernel, libraries and packages are optimized to perform as a VirtualBox guest for developing the OpenEmbedded-based dSS.

Of course, there's all the digitalSTROM stuff as well:
  • pre-built openembedded environment
  • pre-build & installed dS485 stack (including ds485d)
  • pre-build dSS image
The current version notably does not have the following apps installed.
  • OpenOffice
  • Chrome/Chromium

Note: the image is mostly installed in German. If this is an issue for you, please let us know.

View Screenshot

Versions Available for Download

Quick Start

  • Uncompress the vdi.gz image
  • Install VirtualBox
  • Create a new VM with this .vdi file as a SATA disk
    - Set the PAE/NX to true (System/Processor settings)
  • Start the VM
  • Log in as root (password: dssadmin)
  • Start KDE: /etc/init.d/xdm start
  • Log in as dssadmin (password: dssadmin)
  • Start a shell: click "Konsole" on the desktop
  • Rebuild the dSS root filesystem:
    - cd /projects/Aizo/dSS/dss-oe
    - source setup-oe-core.sh targets/dss11-1gb-devel
    - bitbake dss11-image

Installation Details

The download is a VirtualBox hard disk image. It's not a full VM. The VM settings must be created for this image.

This approach was chosen due to the difficultly of predicting resources should be divided/allocated between the host and this guest. RAM, VRAM, number of processors allocated, etc. should be customized for every install. In addition, it's not very difficult to set up new VMs for this image using VirtualBox's GUI.

Prerequisites:
  • VirtualBox (4.1.12 and 4.1.18 have been verified). Other VMs packages (VMWare, Parallels) may work
  • About 40 GB free hard disk space for the incompressed image, plus some growing room. 60 GB is the maximum allowed for the current image.
  • Proper hardware (it's been seen that an older AMD platform running Ubuntu Linux cannot run this VM)
Create a new VirtualBox VM
  • In the System/Processor settings, PAE/NX must be activated (checked)
  • IO-APIC is probably good to have (found in System/Hauptplatine)
  • Networking: the default NAT (along with port forwarding for services) has been an acceptable networking solution for me
  • Bridging is another networking option which has been briefly tested with positive results
  • port forwarding is nice to have (with NAT anyway) -- see the command-line:
    'VBoxManage setextradata'
    (Protocol, GuestPort and HostPort must be set if using NAT config)
  • Audio: might be good to disable
  • no other settings besides the defaults should be necessary for baseline functionality

Operation

Run the VM from either the GUI or headless, from the command line

Users can log in via root with the password 'dssadmin' or user 'dssadmin' with password 'dssadmin'

To start KDE:
- log in as root (password: dssadmin)
- execute:
/etc/init.d/xdm start

To compile the dSS root filesystem and default packages:
- cd /projects/Aizo/dSS/dss-oe
- source setup-oe-core.sh targets/dss11-1gb-devel
- bitbake dss11-image

Known Issues

  • no network on startup (version oe_build_appliance_20120912a_20120922a2)
    This versions has the udev persistent network interfaces enabled, which causes problems. Somehow when run on a new host, a new networking interface is created, which is eth1, not eth0. After being copied multiple times, it will be eth2, eth3, etc...
    Fix: delete /etc/udev/rules.d/70-persistent-net.rules and reboot

Next Steps

  • Create a minimal, console-based build image that's not more than a few GB of mostly-openembedded stuff
  • Fix network issue mentioned above (already done; will be included with next image)

Tips, Tricks and Common Commands

/etc/init.d/xdm start Start KDE - not done by default in version 20120924b
emerge --sync Update database of available packages and current versions
emerge --update --ask --verbose Upgrade all packages that should be upgraded (ask first)
revdep-rebuild Gentoo: Reverse Dependency Rebuilder - scans libraries and binaries for missing shared library dependencies and attempts to fix them by re-emerging those broken binaries and shared libraries.
history View command history - provides insights into the creation of the VM
Guest:
dd if=/dev/zero of=/zeros.tmp
rm zeros.tmp
Host:
VBoxManage modifyhd "<vm_name>" --compact
Compact the VM hard disk - must zero free space first
ifconfig list the available network interfaces and show their status (for dssadmin user, this requires the explicit path: /sbin/ifconfig)

Port Forwarding

Security Notice: before enabling external ports and services, insure the that passwords have been changed from the default and the proper firewall settings are configured!

It's often convenient to expose ports from the VM to the host system. One key use is remote logins via ssh, which allows one to use the shell of the host to access the guest. Another example would be to expose a web server from the guest to the host or other systems on the network.

Port setup via VirtualBox is described on several pages:

[http://www.linuxjournal.com/content/tech-tip-port-forwarding-virtualbox-vboxmanage]
[http://www.nixternal.com/virtualbox-multiple-tcp-port-forwarding/]
[http://cheznick.net/main/content/virtualbox-network-access-via-nat]
[https://forums.virtualbox.org/viewtopic.php?f=5&t=37576]

Your author has written a couple of convenient scripts for checking and setting port forwarding on VirtualBox VM's (please excuse the expired SSL certificate).

2012-09-23_19-47-26_2560x1440a.png - Snapshot of initial KDE Desktop (180 KB) Bryant Hansen, 09/24/2012 08:54 PM