配置meego SDK的Xephyr运行环境
- 查验主机是否包含Intel图形芯片组
$ lspci | grep VGA
预期输出: 00:02.0 VGA compatible controller: Intel Corporation …
如果你的系统不含Intel图形芯片组, 请参考 MeeGo可用的SDK开发选项.
- 按照Getting Started 文中的描述下载你目标平台对应的MeeGo SDK.
- 解压下载的映像文件到工作目录
$ tar xvjf <compressed image file>
- 安装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:<user name>
允许用户”bob”访问X显示区的例子:
$ xhost +SI:localuser:bob
(如果你的主机重启了,那么在运行Xephyr或QT Creator前,需要再一次运行xhost命令)
- 挂载并切换根目录(chroot)到MeeGo映像
建立一个目录用于挂载MeeGo映像:
$ mkdir <image destination directory>
将Meego映像挂载到新建的目录上:
$ sudo mount -o loop,offset=512 <image file> <image destination directory>
切换系统的终端根目录(chroot)到MeeGo系统的根目录上:
$ sudo ./meego-sdk-chroot <image destination directory>
例子:
$ 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'
在Xephyr环境中启动MeeGo UI
- 设置DISPLAY环境变量
因为Xephyr是在chroot终端中运行的,因此无法获得主机DISPLAY环境变量的值. 在MeeGo chroot终端中运行startmeego脚本前,使用以下命令设置DISPLAY的值.
# export DISPLAY=:0
- 启动 Xephyr
从MeeGo chroot终端命令下执行:
# startmeego &
这会启动Xephyr服务器并且调用其它脚本启动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 <your application>
安装其它软件
你可以在MeeGo chroo环境里安装更多其它软件. 在MeeGo chroot终端中执行:
# zypper install <package>
你也可以使用以下命令更新整个MeeGo系统:
# zypper dist-upgrade
已知问题
- 依赖于DBus的一些面板显示(比如电池,网络)不能正确的报告设备信息.