I was curious about the current state of MeeGo so i decided to have a look at the handset image that was released last Monday (v1.1). The image can be run inside QEMU or inside a chroot environment using Xephyr. I decided to go with the QEMU solution.
The setup is outlined here: wiki.meego.com/MeeGo_SDK_with_QEMU.
When QEMU is running, the emulated system can be accessed by SSH. So lets see what processes make up a Meego system (i have added some annotations; standard marks processes also found on a typical linux desktop).
[meego@localhost ~]$ ps -Hef
UID PID PPID C STIME TTY TIME CMD
# various kernel threads
root 2 0 0 07:53 ? 00:00:00 [kthreadd]
root 3 2 0 07:53 ? 00:00:00 [ksoftirqd/0]
root 4 2 0 07:53 ? 00:00:00 [migration/0]
root 5 2 0 07:53 ? 00:00:00 [watchdog/0]
root 6 2 0 07:53 ? 00:00:00 [events/0]
root 7 2 0 07:53 ? 00:00:00 [khelper]
root 8 2 0 07:53 ? 00:00:00 [async/mgr]
root 9 2 0 07:53 ? 00:00:00 [pm]
root 10 2 0 07:53 ? 00:00:00 [sync_supers]
root 11 2 0 07:53 ? 00:00:00 [bdi-default]
root 12 2 0 07:53 ? 00:00:00 [kblockd/0]
root 13 2 0 07:53 ? 00:00:00 [kacpid]
root 14 2 0 07:53 ? 00:00:00 [kacpi_notify]
root 15 2 0 07:53 ? 00:00:00 [kacpi_hotplug]
root 16 2 0 07:53 ? 00:00:00 [ata_aux]
root 17 2 0 07:53 ? 00:00:00 [ata_sff/0]
root 18 2 0 07:53 ? 00:00:00 [khubd]
root 19 2 0 07:53 ? 00:00:00 [kseriod]
root 20 2 0 07:53 ? 00:00:00 [kmmcd]
root 21 2 0 07:53 ? 00:00:00 [cfg80211]
root 22 2 0 07:53 ? 00:00:00 [kondemand/0]
root 23 2 0 07:53 ? 00:00:00 [kswapd0]
root 24 2 0 07:53 ? 00:00:00 [aio/0]
root 25 2 0 07:53 ? 00:00:00 [crypto/0]
root 33 2 0 07:53 ? 00:00:00 [scsi_eh_0]
root 34 2 0 07:53 ? 00:00:00 [scsi_eh_1]
root 37 2 0 07:53 ? 00:00:00 [kpsmoused]
root 38 2 0 07:53 ? 00:00:00 [usbhid_resumer]
root 39 2 0 07:53 ? 00:00:00 [l2cap]
root 40 2 0 07:53 ? 00:00:00 [krfcommd]
root 42 2 0 07:53 ? 00:00:00 [kjournald]
root 69 2 0 07:53 ? 00:00:00 [flush-8:0]
# the init process, sysvinit-2.86 (standard)
root 1 0 0 07:53 ? 00:00:00 init [5]
# hotplug support (standard)
root 72 1 0 07:53 ? 00:00:00 /sbin/udevd -d
# system instance of the dbus-daemon, broadcasts system events (standard)
dbus 256 1 0 07:53 ? 00:00:00 dbus-daemon --system --fork
# network connection management, see http://connman.net/
root 273 1 0 07:53 ? 00:00:00 /usr/sbin/connmand -W nl80211,wext
# access to hw sensors
root 275 1 0 07:53 ? 00:00:00 /usr/sbin/sensord
# http://meego.gitorious.org/meego-middleware/timed/
root 279 1 0 07:53 ? 00:00:00 /usr/bin/timed
# system and kernel logging (standard)
root 281 1 0 07:53 ? 00:00:00 /sbin/syslogd -m 0
root 287 1 0 07:53 ? 00:00:00 /sbin/klogd -x
# wifi connection management (standard)
root 293 1 0 07:53 ? 00:00:00 /sbin/wpa_supplicant -u
# ACPID events (standard)
root 297 1 0 07:53 ? 00:00:00 /usr/sbin/acpid
# the ssh session i am currently using
root 308 1 0 07:53 ? 00:00:00 /usr/sbin/sshd
root 513 308 0 07:54 ? 00:00:00 sshd: meego [priv]
meego 515 513 0 07:54 ? 00:00:00 sshd: meego@pts/0
meego 516 515 0 07:54 pts/0 00:00:00 -bash
meego 923 516 0 08:06 pts/0 00:00:00 ps -feH
root 314 1 0 07:53 tty1 00:00:00 /sbin/mingetty --noclear tty1
root 316 1 0 07:53 ttyS0 00:00:00 /sbin/agetty -L 115200 ttyS0 vt100
# bonjour/zeroconf service discovery (standard)
avahi 322 1 0 07:53 ? 00:00:00 avahi-daemon: running [linux.local]
avahi 323 322 0 07:53 ? 00:00:00 avahi-daemon: chroot helper
# telephony support http://ofono.org
root 328 1 0 07:53 ? 00:00:00 /usr/sbin/ofonod
# bluetooth device management (standard)
root 338 1 0 07:53 ? 00:00:00 /usr/sbin/bluetoothd
# user/session handling http://www.freedesktop.org/wiki/Software/ConsoleKit (standard)
root 352 1 0 07:53 ? 00:00:00 /usr/sbin/console-kit-daemon --no-daemon
# power management (standard)
root 448 1 0 07:54 ? 00:00:00 /usr/libexec/upowerd
# GPS, multiplexes the access to a GPS device
root 495 1 0 07:54 ? 00:00:00 /usr/libexec/gypsy-daemon --no-daemon
# X session launch utility
meego 741 1 0 07:57 ? 00:00:00 uxlaunch
root 743 741 0 07:57 ? 00:00:00 uxlaunch
# xserver (standard)
root 760 741 1 07:57 tty2 00:00:09 /usr/bin/Xorg :0 -nolisten tcp -dpi 120 -noreset
meego 772 741 1 07:57 ? 00:00:06 /usr/bin/mcompositor
meego 775 741 0 07:57 ? 00:00:00 /usr/bin/mthemedaemon
# the applaunchd helps to start applications faster with the help of boosters
# http://apidocs.meego.com/mtf/launcher.html
meego 776 741 0 07:57 ? 00:00:00 /usr/bin/applauncherd.bin
# boosters are pre-forked processes that are already initialized to some degree.
# if an app is started they load the app and start is main() function.
meego 788 776 0 07:57 ? 00:00:00 booster-m
meego 789 776 0 07:57 ? 00:00:00 booster-q
# handles prestarted applications http://apidocs.meego.com/mtf/prestart.html
meego 777 741 0 07:57 ? 00:00:00 /usr/bin/applifed
meego 778 741 0 07:57 ? 00:00:00 /usr/bin/mdecorator -remote-theme
# input method
meego 779 741 0 07:57 ? 00:00:01 /usr/bin/meego-im-uiserver -remote-theme
# input feedback deamon (audio/vibra) http://apidocs.meego.com/mtf/input_feedback.html
meego 780 741 0 07:57 ? 00:00:00 /usr/bin/meegofeedbackd
meego 781 741 0 07:57 ? 00:00:01 /usr/bin/sysuid -remote-theme
# dui => direct ui homescreen
meego 782 741 2 07:57 ? 00:00:15 /usr/bin/duihome --desktop -remote-theme
# QMF, process doing mail handling
meego 784 741 0 07:57 ? 00:00:00 /usr/bin/messageserver
meego 798 784 0 07:57 ? 00:00:00 [messageserver]
# crash handling
meego 785 741 0 07:57 ? 00:00:00 corewatcher-applet
# filesystem crawler
meego 786 741 0 07:57 ? 00:00:00 /usr/libexec/tracker-miner-fs
meego 762 1 0 07:57 ? 00:00:00 /usr/bin/ssh-agent
# user session instance of the dbus daemon, used for application IPC
meego 766 1 0 07:57 ? 00:00:00 dbus-daemon --fork --session --print-pid 9 --print
# user configuration, notifies apps about configuration changes (standard)
meego 769 1 0 07:57 ? 00:00:00 /usr/libexec/gconfd-2
# phone simulation, part of oFono
meego 793 1 0 07:57 ? 00:00:00 phonesim -p 12345 /usr/share/phonesim/default.xml
# system indexing, database daemon (standard)
meego 806 1 0 07:57 ? 00:00:00 /usr/libexec/tracker-store
# photo app that i've started earlier
meego 834 1 4 07:58 ? 00:00:18 meegophotos
# thumbnail service
meego 839 1 0 07:58 ? 00:00:03 /usr/libexec/tumblerd
What really surprised me is how much this system is like a linux desktop. Its using X, a full libc, the standard utilities, dbus etc… No stripped down libc, no busybox and no framebuffer. On one hand I quite like this but on the other I wonder how this translates to firmware size and memory consumption?