为S3C6410,S5PC110等ARM平台快速构建一个Meego环境

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 &

你可能感兴趣的:(ARM,meego)