Openembedded for Dabba2 (Atom platform)

The Dabba2 OE adoptation is built on the earlier work done for Dabba1. A local overlay is created and a base OE snapshot is used, in this case snapshot is from early May, 2010.

First stop is at creating the machine configuration for the platform D510MO.


#@TYPE: Machine
#@NAME: D510MO cloned from Ion

TARGET_ARCH = "i686"

#TARGET_ARCH = "atom"
#MACHINE_ARCH = "core2"

include conf/machine/include/tune-atom.inc

MACHINE_FEATURES = "kernel26 x86 acpi udev hotplug i2c spi  usbhost pci ethernet keyboard screen serial nfs vfat ext2 ext3"


MACHINE_ESSENTIAL_EXTRA_RDEPENDS ?= ""
MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS ?= ""

# update-alternatives script installed in rootfs needs to be the same as
# u-a script used for building image which is defined with
# PREFERRED_PROVIDER_virtual/update-alternatives-native
#
# DISTRO_UPDATE_ALTERNATIVES ?= "${PREFERRED_PROVIDER_virtual/update-alternatives}"

KERNEL_IMAGETYPE = "bzImage"

PREFERRED_PROVIDER_virtual/kernel ?= "linux-meego"

GLIBC_ADDONS = "nptl"
GLIBC_EXTRA_OECONF = "--with-tls"



In tune-atom.inc defined

TARGET_CC_ARCH = "-march=atom -mtune=atom"

This, of course, assumes a 4.5.x gcc compiler.



Then following the OpenMoko task/image styling, would like to chase the Dabba2 target with the following image milestones. Each of the milestone builds ont the previous one, so that we get the right context to build and test the new functionality.

  • dabba2-minimal-image : A basic kernel and a busybox login prompt
  • dabba2-initrd-image    :  Initrd setup for bootsplash
  • dabba2-ivtv-image       :  ivtv driver testing with mplayer 
  • dabba2-db-image        : MySQL 
  • dabba2-x11-image       : X with the matchbox window manager
  • dabba2-mythtv-image  : Basic mythtv installation


Openembedded for Dabba1 (Via platform)

An embedded distirbution will bring greater robustness to a project like Dabba1 and OpenEmbedded is mature enough to build a distribution for a complex application like mythtv. Though I had prior experience in dealing with buildroot (SnapGear) , DSLinux , OpenEmbedded does have a steep learning curve.

The Dabba1 Via platform looks and feels more like an embedded platform: headless, no easy access other than the network and limited storage/RAM and pathetic CPU power. One problem with natively hosted distribution like gentoo or RH for Dabba1 is that any root file system corruption or major system-wide misconfiguration can render the system not bootable. Of course, backups should be taken and can be restore, but that is not the same as simply re-generating the distribution.

The OE allows a local overlay to be created and the components defined in the  overlay can override the ones in the main meta-distribution. So in the local overlay we will maintain the top-level components needed for Dabba1 and tweak them for our purpose. The local overlay is version controlled.

Following are the overlay members for Dabba1:


For the initrd/bootsplash:
dsplash, dsplash-themes, klibc-udev, klibc-extras, mkinitcpio, klibc, splashutils   

WinTV PVR 350 support:
ivtv-utils, ivtv-firmware, xorg-driver

Mythtv:
mysql, mythplugins, taglib, lirc, mythtv 
       
System start/init:
nvram-wakeup,  dabba-setup,  initscripts,

X Support:
xorg-xserver, blackbox, xorg-font,
 
Front panel:
lcdproc, dmon, 

Other:
mplayer,  netbase, util-linux-ng

Making life little easy is the fact that the VIA epia architecture is already supported by the OE :
kernel ==> linux-epia
machine (generic) ==> epia.conf
gcc tuning ==> conf/machine/include/tune-c3.inc

Dabba1 distribution is based off these elements.



Gentoo  for Dabba1

Initially  toyed with Red Hat 7.3 (2.4.19 kernel) on the Dabba1 platform (VIA EPIA 500) and quickly gave up as I felt it was too unwieldy for the Dabba project. This was followed by Gentoo experiment.

Started with the 2006.1 stage3 installation on the VIA platform and then emerged the needed components one by one.  This was finally concluded with a manual build of mythtv-0.20.2.

One thing that stood out in this whole process was the painful comilation times on VIA platform. This alone should motivate to look for other methods or distributions.

For the build following config was used: (/etc/make.conf)

CFLAGS="-Os -march=c3 -m3dnow -pipe -fomit-frame-pointer"
CHOST="i586-pc-linux-gnu"

CXXFLAGS="${CFLAGS}"

USE="x86 mmx 3dnow lirc apache2 mysql net usb -ldap libwww samba session ssl zlib bzip2 udev nptl nptonly crypt dba gd pcre posix ncurses gif imlib jpeg tiff png alsa ogg vorbis mad flac -arts mp3 avi crypt dvd transcode aac libdvdread fftw matroska xvid mpeg quicktime theora X v4l2 xinerama xv sdl -dri opengl mythtv cdr qt truetype joystick xvmc "

INPUT_DEVICES="keyboard mouse joystick"

VIDEO_CARDS="trident v4l vesa fbdev"