原创 嵌入式 ARM 平台配置远程桌面

2019-7-8 18:03 3388 19 19 分类: MCU/ 嵌入式

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协议来登录基于WindowsRDP支持)的远程桌面服务器,详细请参考如下:

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:

-----------------------

 

 

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端进行连接访问

                                              image001.png

 

 

6). 总结

本文示例了基于ARM嵌入式平台进行远程桌面clientserver配置的方法供参考。


作者: hai.qin_651820742, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-1864768.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论0条评论)

登录后参与讨论
我要评论
0
19
关闭 站长推荐上一条 /2 下一条