Meego项目亦然停止,但是好的嵌入式Linux发行版舍Meego和Ubuntu以外,实难寻觅,所以我们很可能还存在Meego的移植需求,过程非常简单。依照http://wiki.meego.com/Image_Creation安装MIC2,准备如下的kickstarter文件(graphics使用软解码)
# -*-mic2-options-*- -f raw --save-kernel --arch=armv7hl -*-mic2-options-*-
#
# Do not Edit! Generated by:
# kickstarter.py
#
lang en_US.UTF-8
keyboard us
timezone --utc America/Los_Angeles
part / --size=1750 --ondisk mmcblk0p --fstype=ext3
# This is not used currently. It is here because the /boot partition
# needs to be the partition number 3 for the u-boot usage.
part swap --size=8 --ondisk mmcblk0p --fstype=swap
# This partition is made so that u-boot can find the kernel
part /boot --size=32 --ondisk mmcblk0p --fstype=vfat
rootpw meego
xconfig --startxonboot
# desktop --autologinuser=meego --defaultdesktop=DUI --session="/usr/bin/mcompositor"
#
# mcompositor depends on EGL, so we move to twm windowmanager for the moment for primaII
desktop --autologinuser=meego --defaultdesktop=DUI --session="/usr/bin/twm"
user --name meego --groups audio,video --password meego
repo --name=1.2.0.90-oss --baseurl=http://repo.meego.com/MeeGo/builds/1.2.0.90/@BUILD_ID@/repos/oss/armv7hl/packages/ --save --debuginfo --source --gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-meego
repo --name=1.2.0.90-non-oss --baseurl=http://repo.meego.com/MeeGo/builds/1.2.0.90/@BUILD_ID@/repos/non-oss/armv7hl/packages/ --save --debuginfo --source --gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-meego
%packages
@MeeGo Compliance
@MeeGo Core
@X for Handsets
@MeeGo Handset Desktop
@MeeGo Handset Applications
@MeeGo Base Development
@Minimal MeeGo X Window System
@Chinese Support
# for bringup, we are now using fbdev and software mesa
mesa-dri-swrast-driver
xorg-x11-drv-fbdev
xorg-x11-utils-xev
%end
%post
# save a little bit of space at least...
rm -f /boot/initrd*
rm -f /var/lib/rpm/__db*
rpm --rebuilddb
# Remove cursor from showing during startup BMC#14991
echo "xopts=-nocursor" >> /etc/sysconfig/uxlaunch
# open serial line console for embedded system
# our board uses ttyS1
#
# echo "s0:235:respawn:/sbin/agetty -L 115200 ttyO2 vt100" >> /etc/inittab
echo "s0:235:respawn:/sbin/agetty -L 115200 ttyS1 vt100" >> /etc/inittab
# Set up proper target for libmeegotouch
Config_Src=`gconftool-2 --get-default-source`
gconftool-2 --direct --config-source $Config_Src
-s -t string /meegotouch/target/name N900
# Normal bootchart is only 30 long so we use this to get longer bootchart during startup when needed.
cat > /sbin/bootchartd-long << EOF
#!/bin/sh
exec /sbin/bootchartd -n 4000
EOF
chmod +x /sbin/bootchartd-long
# Use eMMC swap partition as MeeGo swap as well.
# Because of the 2nd partition is swap for the partition numbering
# we can just change the current fstab entry to match the eMMC partition.
sed -i 's/mmcblk0p2/mmcblk1p3/g' /etc/fstab
# Without this line the rpm don't get the architecture right.
echo -n 'armv7hl-meego-linux' > /etc/rpm/platform
# Also libzypp has problems in autodetecting the architecture so we force tha as well.
# https://bugs.meego.com/show_bug.cgi?id=11484
echo 'arch = armv7hl' >> /etc/zypp/zypp.conf
%end
%post --nochroot
if [ -n "$IMG_NAME" ]; then
echo "BUILD: $IMG_NAME" >> $INSTALL_ROOT/etc/meego-release
fi
%end
运行如下脚本可以得到Meego的image,之后解压缩,以loop方式mount并拷贝到SD卡的文件系统分区即可。
#!/bin/bash
if [ `whoami` != root ]; then
echo "This script must be run as root, e.g.:"
echo "sudo $0"
exit -1
fi
# create meego image from kickstart. this will contain everything but the kernel
mic-image-creator --cache=../mycachedir --format=loop --arch=armv7hl --pkgmgr=yum --config=handset-armv7hl-prima2.ks --release=1.2.0.90.12.20110809.2
这一过程也可以自动化进行:
CURDIR=`pwd`
OUTDIR=${CURDIR}/1.2.0.90.12.20110809.2/images/meego-handset-armv7hl-xxx/
cd ${OUTDIR}
bunzip2 meego-handset-armv7hl-xxx-1.2.0.90.12.20110809.2.img.bz2
mkdir img
mount -o loop meego-handset-armv7hl-prima2-1.2.0.90.12.20110809.2.img img
if [ -d $1 ]; then
echo "copy meego rootfs to $1"
cp -fa img/* $1
umount img
rm -fr img
fi
启动Meego桌面的脚本如下:
#!/bin/bash
#
# we have no EGL for the moment, so we use SW render to
# bootup desktop
#
export QT_GRAPHICSSYSTEM=native
export M_USE_SOFTWARE_RENDERING=1
export DISPLAY=":0.0"
xhost +
/usr/bin/mthemedaemon &
/usr/bin/meegotouchhome -fullscreen -show-cursor -software &