我们编译鸿蒙是通过服务器,那么有没有一种办法,让我们qemu能够直接通过服务器启动openharmony呢,而不是需要将image拷贝到外面,然后通过windows/linux的qemu来启动openharmony,实际上,这是有办法的。本文基于XMing来实现在windows上启动Linux的Xserver,或者Linux下直接启动openharmony
为了使得服务器能够接收远程的X11程序启动,我们需要打开sshd 服务的配置选项如下:
vim /etc/ssh/sshd_config X11Forwarding yes
此时,我们重启ssh服务即可
systemctl restart sshd
我们需要知道的是,X11转发的功能是在服务端提供了.Xauthority来识别,如果我们是直接在服务器上运行,则每次登录.Xauthority会在登录的账户上更新,如果我们是root登录,则位置为
/root/.Xauthority
但是我们通常情况下,代码是在chroot中构建,这样的话我们需要利用chroot中的.Xauthority,则如下:
cp .Xauthority /path/to/chroot/root/.Xauthority
假设我们的chroot环境目录是/root/work/kb/squashfs-root/
,则如下
cp .Xauthority /root/work/kb/squashfs-root/root/.Xauthority
为了让qemu正常运行,我们需要编写qemu脚本,这里参考qemu启动openharmony镜像(二) 在arm64的机器上编译和运行qemu即可
对于Linux主机,我们可以通过ssh 加上X/Y的配置打开X11 Forward功能,这里以131为例
ssh -XY root@172.25.130.131
此时我们进入openharmony的镜像输出路径
cd out/arm64_virt/packages/phone/images
直接运行脚本即可
./qemu-run.sh
我们知道,Windows不能直接启动X11的程序,我们需要借助XMing开源程序,这里有两种办法
我们借助MobaXterm程序,它默认集成了XMing二进制,我们通过其ssh登录的服务器,可以直接启动X11的程序,这里以xterm为例,如下:
我们知道Putty是很好用的开源ssh client,如果我们使用Putty登录ssh,则我们需要启用一个XMing后台,如下可以下载:
http://www.straightrunning.com/XmingNotes/
我们可以通过sourceforge网站来直接下载二进制安装
https://sourceforge.net/projects/xming/
此时我们如果没有putty,则可以预装一个,如果存在putty,则在Xming中不安装putty,如下
此时,我们可以发现Putty内部多了如下选项
此时我们通过putty打开一个ssh时,默认打开"Enable X11 forwarding"即可。
此时我们打开窗口如下:
此时我们直接进入环境中,启动脚本即可
./qemu-run.sh
至此,Openharmony启动效果如下:
我们知道,这样的方式是通过X11转发,在Windows/Linux以X11的服务器来运行一个X11程序,而我们这里服务器是qemu启动的窗口,所以这里可能存在兼容性问题,比较明显的是,无法使用鼠标。这和qemu启动的openharmony的兼容性相关。
所以,此方法只可以用作定位系统开机启动中存在的通用性问题,或学习鸿蒙操作系统的一种方式