这是一个翻译自MeeGo网站的一个文章,也是对《MeeGo移动应用程序开发入门》的一个补充,详细介绍了如何使用Xephyr搭建MeeGo SDK的开发环境。
配置MeeGo SDK的Xephyr运行环境
查验主机是否包含Intel图形芯片组
- $ lspci | grep VGA
预期输出:
- 00:02.0 VGA compatible controller: ”’Intel Corporation”’ …
(你的系统最好含Intel图形芯片组).
下载你目标平台对应的MeeGo SDK
解压下载的映像文件到工作目录
- $ tar xvjf
安装meego-sdk-chroot脚本
“meego-sdk-chroot”脚本负责设置chroot环境的挂载点,并正确地启动chroot. 该脚本在退出时会卸载在启动时挂载的所有内容并清除启动时加载的所有进程. 如下命令可以下载此脚本:
- $ wget http://download3.meego.com/meego-sdk-chroot
为meego-sdk-chroot脚本增加可执行权限:
- $ chmod +x ./meego-sdk-chroot
配置主机上的X允许Xephyr可以访问其显示区(allow Xephyr to access the display)
- $ xhost +SI:localuser:
允许用户”bob”访问X显示区的例子:
- $ xhost +SI:localuser:bob
(如果你的主机重启了,那么在运行Xephyr或Qt Creator前,需要再一次运行xhost命令)
挂载并切换根目录(chroot)到MeeGo映像
建立一个目录用于挂载MeeGo映像:
- $ mkdir
将Meego映像挂载到新建的目录上:
- $ sudo mount -o loop,offset=512
切换系统的终端根目录(chroot)到MeeGo系统的根目录上:
- $ sudo ./meego-sdk-chroot
例子:
- $ sudo mkdir /opt/meego-handset
- $ sudo mount -o loop,offset=512 ./meego-handset-ia32-1.0.80.9.20100706.1-sdk-pre0721.raw /opt/meego-handset
- $ sudo ./meego-sdk-chroot /opt/meego-handset
在执行meego-sdk-chroot后,你看到的终端输出会是如下的一些内容:
- mount –bind /proc /home/ell/meego-sdk-0524/proc
- mount –bind /sys /home/ell/meego-sdk-0524/sys
- mount –bind /dev /home/ell/meego-sdk-0524/dev
- mount –bind /dev/pts /home/ell/meego-sdk-0524/dev/pts
- mount –bind /tmp /home/ell/meego-sdk-0524/tmp
- mount –bind /var/lib/dbus /home/ell/meego-sdk-0524/var/lib/dbus
- mount –bind /var/run/dbus /home/ell/meego-sdk-0524/var/run/dbus
- cp /etc/resolv.conf /home/ell/meego-sdk-0524/etc/resolv.conf
- root@meego-handset-sdk:/#
此时你已进入”MeeGo 终端”. 它仿如运行在真正的MeeGo操作系统里,路径,程序,库,环境这些都和你在MeeGo上网本或手机中看到的一模一样.
提示: ”meego-sdk-chroot”会用到”chroot”命令.请确保你的PATH路径中包含了”chroot”命令:
- $ alias chroot=’/usr/sbin/chroot’
#p#
在Xephyr环境中启动MeeGo UI
设置DISPLAY环境变量
因为Xephyr是在chroot终端中运行的,因此无法获得主机DISPLAY环境变量的值. 在MeeGo chroot终端中运行’’startmeego”脚本前,使用以下命令设置DISPLAY的值.
- # export DISPLAY=:0
启动 Xephyr
从MeeGo chroot终端命令下执行:
- # startmeego &
这会启动Xephyr服务器并且调用其它脚本启动MeeGo UI.
MeeGo UI
MeeGo UI
退出模拟器/li>你可以通过直接关闭Xephyr窗口(点击左上角的X按钮)停止Xephyr服务.并在MeeGo Chroot终端中输入exit退出MeeGo:
- # exit
这将关闭在chroot中启动的所有进程,并且卸载因chroot环境中需要而挂载的目录. 此时输出应该是如下这个样子的:
- umount /home/ell/meego-sdk-0524/proc
- umount /home/ell/meego-sdk-0524/sys
- umount /home/ell/meego-sdk-0524/dev/pts
- umount /home/ell/meego-sdk-0524/dev
- umount /home/ell/meego-sdk-0524/tmp
- umount /home/ell/meego-sdk-0524/var/lib/dbus
- umount /home/ell/meego-sdk-0524/var/run/dbus
调试
如果在运行Xephyr时遇到问题, 可以运行调试脚本查看运行过程中的详细信息:
- startmeego-debug
它会在命令行终端打印出来,在工作不正常时可以从中得到一些线索.
应用程序开发
你可以在MeeGo chroot环境中编译和运行MeeGo应用程序。默认情况下,应用程序会显示在新开的一个窗口中。为了能使你的应用能显示在Xephyr的MeeGo界面中,请在MeeGo chroot终端环境中以如下命令启动你的应用程序:
- # DISPLAY=:2
安装其它软件
你可以在MeeGo chroo环境里安装更多其它软件. 在MeeGo chroot终端中执行:
- # zypper install
你也可以使用以下命令更新整个MeeGo系统:
- # zypper dist-upgrade
已知问题
依赖于DBus的一些面板显示(比如电池,网络)不能正确的报告设备信息.
原文标题:MeeGo SDK with Xephyr
原文地址:http://wiki.meego.com/MeeGo_SDK_with_Xephyr
【编辑推荐】