"); //-->
By Toradex秦海
1). 简介
在PC平台经远程桌面连接已经是非常方便了,而现在在嵌入式ARM平台,由于远程控制或者远程调试的需要,配置远程桌面的需求也越来越多,本文就着重演示基于嵌入式ARM平台实现远程桌面服务器端和客户端应用示例。
本文演示所使用的ARM平台来自Toradex基于NXP iMX6Q SoC平台的Apalis iMX6 ARM核心板。
2). 准备
a). Apalis iMX6Q ARM核心版配合Apalis Evaluation Board载板,连接调试串口UART1(载板X29)到开发主机方便调试。更多关于Apalis iMX6配合Apalis Evaluation Board载板的说明请参考Datasheet和开发上手指南。
b). Apalis iMX6Q 安装基于Toradex Linux BSP V2.8 并集成Qt opensource 5.9基本库的Embedded Linux,系统基于Ycoto Project/OpenEmbedded 编译环境进行编译,编译方法请参考这里,编译好的Linux Image安装方法请参考这里。
3). Apalis iMX6 WinCE 系统下远程桌面配置
a). Apalis iMX6 除了本文下面要演示的Embedded Linux系统,也支持WinCE系统,因此这里也将WinCE系统下远程桌面配置做简单罗列,但并不做相关测试演示。
b). Apalis iMX6 WinCE 作为远程桌面Client配置,通过CETSC 工具,使用RDP协议来登录基于Windows(RDP支持)的远程桌面服务器,详细请参考如下:
https://developer.toradex.cn/knowledge-base/remote-desktop-protocol-rdp-on-windows-ce
c). Apalis iMX6 WinCE 作为远程桌面Server配置,通过VNC Server 工具,使用VNC协议来供支持VNC协议的Client登录,详细请参考如下:
https://developer.toradex.cn/knowledge-base/VNC-Server-(WinCE)
4). Apalis iMX6 Embedded Linux 系统下远程桌面配置之Client端
a). 通过 FreeRDP 工具,使用RDP协议连接 RDP 远程桌面Server端(Windows 主机为主)
./ 安装 FreeRDP 软件,可以通过下面两种方法:
// 通过OE环境直接编译到Embedded Linux Image里面去
-----------------------
# add freerdp to build/conf/local.conf
IMAGE_INSTALL_append = " freerdp"
-----------------------
// 或者通过OE环境编译出对应的ipk安装包,然后在Apalis iMX6模块系统上面通过opkg命令来安装
-----------------------
# compile freerdp related ipk package in OE envirionment
$ bitbake freerdp
# cp below ipks to Apalis iMX6 and install
$ cd deploy/ipk/armv7at2hf-neon-mx6qdl
$ scp freerdp_1.0.0-7677-g62da9d2-r0_armv7at2hf-neon-mx6qdl.ipk libfreerdp1.2_1.0.0-7677-g62da9d2-r0_armv7at2hf-neon-mx6qdl.ipk root@ipaddress_aplis_imx6:/home/root/
$ opkg install libfreerdp1.2_1.0.0-7677-g62da9d2-r0_armv7at2hf-neon-mx6qdl.ipk
$ opkg install freerdp_1.0.0-7677-g62da9d2-r0_armv7at2hf-neon-mx6qdl.ipk
-----------------------
./ 通过下面示例命令连接RDP 远程桌面Server,更多配置选项可以通过执行 “xfreerdp --help” 来查看
-----------------------
$ xfreerdp /u:username /p:password /v:server ipadress or domain name
-----------------------
b). 通过 Tightvnc viewer工具,使用VNC协议连接 VNC 远程桌面Server端(Linux 主机为主)
./ 安装 Tightvnc软件,可以通过下面两种方法:
// 通过OE环境直接编译到Embedded Linux Image里面去
-----------------------
# add tightvnc to build/conf/local.conf
IMAGE_INSTALL_append = " tightvnc"
-----------------------
// 或者通过OE环境编译出对应的ipk安装包,然后在Apalis iMX6模块系统上面通过opkg命令来安装
-----------------------
# compile tightvnc related ipk package in OE envirionment
$ bitbake tightvnc
# cp below ipks to Apalis iMX6 and install
$ cd deploy/ipk/armv7at2hf-neon
$ scp libxaw6-6_1.0.13-r2_armv7at2hf-neon.ipk tightvnc-viewer_1.3.10-r2_armv7at2hf-neon.ipk root@ipaddress_aplis_imx6:/home/root/
$opkg install libxaw6-6_1.0.13-r2_armv7at2hf-neon.ipk
$ opkg install tightvnc-viewer_1.3.10-r2_armv7at2hf-neon.ipk
-----------------------
./ 通过下面示例命令连接VNC 远程桌面Server,更多配置选项可以通过执行 “vncviewer --help” 来查看
-----------------------
$ vncviewer vncserver_ipadress:<DISPLAY#>
-----------------------
5). Apalis iMX6 Embedded Linux 系统下远程桌面配置之Server端
a). 通过 X11vnc工具,使用VNC协议提供基于X11桌面服务器的远程桌面Server端
./ 安装 X11vnc 软件,可以通过下面两种方法:
// 通过OE环境直接编译到Embedded Linux Image里面去
-----------------------
# add x11vnc to build/conf/local.conf
IMAGE_INSTALL_append = " x11vnc"
-----------------------
// 或者可以在Apalis iMX6模块系统上面通过opkg命令来在线安装
-----------------------
# on Apalis iMX6 Linux, make sure it has internet access
$ opkg update
$ opkg install x11vnc
-----------------------
./ 通过下面示例命令启动远程桌面Server,然后即可通过vncviewer client来进行连接
-----------------------
# on Apalis iMX6, startup vnc server
$ x11vnc -display :0
# on vnc client, use vncviewer to visit
$ vncviewer apalis_imx6_ipadress:0
-----------------------
b). 通过 Teamviewer Host工具,建立teamviewer远程桌面Server端
./ 由于teamviewer软件本身的特性,可以提供穿透局域网的远程桌面服务,而上述所列的软件默认都是只能在局域网内工作
./ 安装 Teamviewer Host软件
// 在Linux主机上面下载Teamviewer Host针对armv7架构的tar压缩包,解压并重新打包为tar.bz2压缩包以便于在Apalis iMX6系统上面解压
-----------------------
# on Linux host
$ wget https://download.teamviewer.com/download/linux/teamviewer-host_armhf.tar.xz
$ tar Jxf teamviewer-host_armhf.tar.xz
$ tar cjvf teamviewer-host_armhf.tar.bz2 teamviewer/
-----------------------
// 将teamviewer安装包上传到Apalis iMX6系统上进行解压并检查安装依赖环境,teamviewer需要Qt的一些基本库。
-----------------------
# on Apalis iMX6 Linux
$ tar xjvf teamviewer-host_armhf.tar.bz2
$ cd teamviewer
# run below command to check the dependency requirement
./tv-setup checklibs
…
-----------------------
// 由于本文这里编译的image绝大多数Qt库都已经有了,个别没有的可以通过OE环境单独编译出来ipk安装包,再在Apalis iMX6上面进行安装。通过上面打印信息看到缺少的是 libqt5x11extras5 依赖库,参考如下进行安装
-----------------------
# on OE envirionment
$ bitbake qtx11extras
# cp below ipks to Apalis iMX6 and install
$ cd deploy/ipk/armv7at2hf-neon
$ scp libqt5x11extras5_5.9.7+git0+34dcc9ea76-r0_armv7at2hf-neon.ipk root@ipaddress_aplis_imx6:/home/root/
$ opkg install libqt5x11extras5_5.9.7+git0+34dcc9ea76-r0_armv7at2hf-neon.ipk
-----------------------
// 检查依赖没有问题后,通过下面命令进行安装,安装过程中遇到提示都选择Yes。
-----------------------
$ ./tv-setup install
-----------------------
// 安装成功后,修改teamviewer开机自启动systemd服务文件 /etc/systemd/system/termviewerd.service 为如下内容
-----------------------
[Unit]
Description = TeamViewer remote control daemon
After = systemd-networkd-wait-online.service network.target network-online.target dbus-org.freedesktop.network1.service
Wants = dbus-org.freedesktop.network1.service network-online.target
Requires = dbus-org.freedesktop.network1.service
[Service]
Type = forking
PIDFile = /var/run/teamviewerd.pid
ExecStart = /opt/teamviewer/tv_bin/teamviewerd -d
Restart = on-abort
StartLimitInterval = 60
StartLimitBurst = 10
[Install]
WantedBy = multi-user.target
-----------------------
// 另外,我这里遇到了random pool 初始化延迟的问题导致teamviewer开机自启动timeout失败,可以通过安装下面ipk包解决
-----------------------
# random pool initiate will print below kernel message when finished
kernel: random: crng init done
# on OE environment, compile rng-tools ipk package
$ bitbake rng-tools
# cp below ipks to Apalis iMX6 and install
$ cd deploy/ipk/armv7at2hf-neon
$ scp rng-tools_5-r0_armv7at2hf-neon.ipk root@ipaddress_aplis_imx6:/home/root/
$ opkg install rng-tools_5-r0_armv7at2hf-neon.ipk
-----------------------
// 上述项目都配置完成后重启
./ 卡机后稍微等待一小段时间teamviewr服务即可自启动成功,这时候打开teamviewr界面根据提示的ID等信息,通过teamviewer client端进行连接访问

6). 总结
本文示例了基于ARM嵌入式平台进行远程桌面client和server配置的方法供参考。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
英特尔重返 DRAM 赛道?深入解析与软银合作的 Z-Angle 内存项目
如何精确的使用示波器进行测量!
有熟悉linux下pppoe的吗
超温及降温报警器电路
[求助]S3C4510b连接两个RTL8201时的问题
s3c44b0x中文手册第4章
Atlas展示了深层科技如何存活下来
DC-DC 转换器工作原理是什么?
超短波物品遗留提醒报警器电路
S3C44B0X中文数据手册第八章
TACC借助 Horizon 系统探索高性能计算混合精度与 FP64 仿真技术
莫悲观,车企迎来盈利增长转折点
简易漏电报警器电路
S3C44B0X中文数据手册第2章
多用袖珍双向报警器电路
“漏音”6G芯片技术击败了狭窄的太赫兹束限制
学习并行总线波形捕获与分析!
求教一个ARM9200 VXWORKS网口启动的问题!
:“北极星”车辆GPS卫星定位视频(图像传输)监控报警系统免费
Material公司的电池为每个角落提供电力
教你怎样改善输出滤波
贵重家电防盗报警器电路
S3C44B0X中文数据手册第3章
[原创]免提通话功能芯片GM415x
Gartner再度预测人工智能支出趋势
S3C44B0X6第六章
机器人技术将颠覆人工智能基础设施:未来之路何在
LimX筹集2亿美元用于构建具身智能
中国Agibot计划在塞尔维亚生产类人机器人
利用Wave-Inspector进行数字系统查障