在安装MeeGo 1.1 SDK中使用的是MeeGo 1.1新提供的工具mad-admin,从安装的过程可知,其依赖于qemugl。但是这个工具不能使用最新的img,runtimes已经限定,不能更换,也例如我们自己新作了一个img,希望安装在此新的img上运营,这就吃现问题。参考MeeGo SDK Building QEMU Tools,可以使用qemugl来建立其他img的qemu。所有参考均可在http://wiki.meego.com/Developer_Guide入口获取
根据指引,step by step,可以工作,但是也有问题,在网上查,MeeGo将只维护mad-admin的方式,不在维护qemugl,例如-s aava的选项不起作用等等,尤其新的的img更有风险,但是其提供的xterm以及命令行方式,仍还能在开发中给予帮助。所以我们仍记录下来。而且这个步骤也展现了mic2的使用,并可用于封装我们自己的i㎎。因此跑一篇也是必要的。
关于handset哈和qemu的问题。qemu作为一个虚拟机模拟了x86的很多操作希望,这就是我们看到的加载kvm_intel内核模块的作用。Intel的atom系列号称x86,特别是最吸引人的mrst也号称x86,但是mrst为了适用于手持设备,估计是改动了不少,似的原有的qemu的VT所提供的x86无法支持。因此为mrst提供handset的img,是无法在QEMU中获得supported,需要将kernel更换为kernel-netbook,以获得qemu的支持。
步骤一:安装所需的软件包:
$ sudo apt-get install yum rpm kpartx parted syslinux isomd5sum kvm zlib1g-dev squashfs-tools python2.6-dev
$ cat /etc/apt/sources.list.d,确保包括以下部分,否则加上,需要安装MIC2deb http://repo.meego.com/MeeGo/sdk/host/repos/ubuntu/10.04/ /
deb http://repo.meego.com/MeeGo/tools/repos/ubuntu/10.04/ /
$ sudo apt-get install mic2,在/usr/local/bin目录中将看到安装的mic2的命令。
参考:http://wiki.meego.com/SDK/Docs/1.1/Building_a_MeeGo_chroot_on_Linux
步骤二:更换㎎的kernel
1、下子1123日的版本meego-handset-ia32-mtf-1.1.80.7.20101123.1-sda.bin.bz2,并通过bunzip2命令进行解压。
2、为了麻烦,我们将解压后的meego-handset-ia32-mtf-1.1.80.7.20101123.1-sda.bin的绝对路径赋值给IMAGE:
$ IMAGE=/workspace/meego/image/meego1.1_release/meego-handset-ia32-mtf-devel-1.1-sda.bin
3、MIC2的命令chroot的使用:
$ sudo kpartx -a -v $IMAGE
add map loop1p0 (252:1): 0 3906250 linear /dev/loop0 1
$ mkdir /tmp/handset
$ sudo mount /dev/mapper/loop0p1 /tmp/handset
$ sudo mic-chroot /tmp/handset... 通过mic-chroot,在img解开后的目录中通过命令行的方式操作,进行更换kernel,使之可在QEMU上获得支持。
$ sudo extlinux --install /tmp/handset/boot/extlinux
设置为启动盘
$ sudo umount /tmp/handset
$ sudo fdisk /dev/loop0,依次敲入a,1,w。a-Enter a to toggle the "bootable" flag on a partition.Enter 1 to select the first partition as the bootable one. Enter w to write your changes to the partition table in the image.
$ sudo kpartx -d -v $IMAGE
4、在mic-chroot中更换kernel,并安装开发软件包
# zypper remove kernel-mrst ,some is kernel-mid
# zypper install kernel-netbook mesa-dri-* xorg-x11-drv-vesa syslinux-extlinux
新建extlinux.conf,并计划在开机后进入命令行模式
# cd /boot/extlinux
# ln -sf ../vmlinuz-*netbook .
# MEEGO_KERNEL=`ls /boot/vmlinuz-*netbook | sed -e 's%/boot/%%'` && echo /
"PROMPT 0
TIMEOUT 1
DEFAULT meego
LABEL meego
KERNEL $MEEGO_KERNEL
APPEND ro root=/dev/sda1 3" /
> /boot/extlinux/extlinux.conf
# zypper addrepo http://repo.meego.com/MeeGo/sdk/target/repos/meego/trunk meego-sdk,这里可能用1.1代替trunk,在于采用哪个i㎎。
# zypper install meego-sdk-qemugl-addon-handset kmod-virtiogl
# zypper install openssh-server
# chkconfig --add sshd
# chmod u+s /usr/bin/Xorg
# exit 退出ch-root
步骤三:采用Qemugl开启模拟器
$ sudo qemugl -m 1024 -net user,hostfwd=tcp:127.0.0.1:6666-:22 -net nic,model=e1000 -vga std -boot c -enable-kvm -enable-gl -device virtio-gl-pci -hda $IMAGE对于采用mad-admin的runtimes,可以在/usr/lib/madde/linux-i686/runtimes,中有raw文件,实际上我们直接用qemugl来操作该raw文件,一样可以得到模拟器。同理,我们也可以对该img采用相同的步骤进行mic-chroot的操作。当然有ssh,好像意义不太大。
开启后能够进入命令行,帐号和密码都是meego,采用命令uxlaunch开启界面,有些问题,如下所示。另外我们也在上面运行了一个hello world的小程序,到还勉强可以。右图是startx开启xterm的方式
这是我在mad-admin中运行hello小程序的截图,我觉得倒不一定是qemugl去出现了什么问题,MeeGo隔几天就给一个版本,自然不会太过稳定。
相关链接:我的MeeGo/Moblin相关文章