嵌入式 ARM 平臺(tái)配置遠(yuǎn)程桌面
By Toradex秦海
1). 簡(jiǎn)介
在PC平臺(tái)經(jīng)遠(yuǎn)程桌面連接已經(jīng)是非常方便了,而現(xiàn)在在嵌入式ARM平臺(tái),由于遠(yuǎn)程控制或者遠(yuǎn)程調(diào)試的需要,配置遠(yuǎn)程桌面的需求也越來越多,本文就著重演示基于嵌入式ARM平臺(tái)實(shí)現(xiàn)遠(yuǎn)程桌面服務(wù)器端和客戶端應(yīng)用示例。
本文演示所使用的ARM平臺(tái)來自Toradex基于NXP iMX6Q SoC平臺(tái)的Apalis iMX6 ARM核心板。
2). 準(zhǔn)備
a). Apalis iMX6Q ARM核心版配合Apalis Evaluation Board載板,連接調(diào)試串口UART1(載板X29)到開發(fā)主機(jī)方便調(diào)試。更多關(guān)于Apalis iMX6配合Apalis Evaluation Board載板的說明請(qǐng)參考Datasheet和開發(fā)上手指南。
b). Apalis iMX6Q 安裝基于Toradex Linux BSP V2.8 并集成Qt opensource 5.9基本庫的Embedded Linux,系統(tǒng)基于Ycoto Project/OpenEmbedded 編譯環(huán)境進(jìn)行編譯,編譯方法請(qǐng)參考這里,編譯好的Linux Image安裝方法請(qǐng)參考這里。
3). Apalis iMX6 WinCE 系統(tǒng)下遠(yuǎn)程桌面配置
a). Apalis iMX6 除了本文下面要演示的Embedded Linux系統(tǒng),也支持WinCE系統(tǒng),因此這里也將WinCE系統(tǒng)下遠(yuǎn)程桌面配置做簡(jiǎn)單羅列,但并不做相關(guān)測(cè)試演示。
b). Apalis iMX6 WinCE 作為遠(yuǎn)程桌面Client配置,通過CETSC 工具,使用RDP協(xié)議來登錄基于Windows(RDP支持)的遠(yuǎn)程桌面服務(wù)器,詳細(xì)請(qǐng)參考如下:
https://developer.toradex.cn/knowledge-base/remote-desktop-protocol-rdp-on-windows-ce
c). Apalis iMX6 WinCE 作為遠(yuǎn)程桌面Server配置,通過VNC Server 工具,使用VNC協(xié)議來供支持VNC協(xié)議的Client登錄,詳細(xì)請(qǐng)參考如下:
https://developer.toradex.cn/knowledge-base/VNC-Server-(WinCE)
4). Apalis iMX6 Embedded Linux 系統(tǒng)下遠(yuǎn)程桌面配置之Client端
a). 通過 FreeRDP 工具,使用RDP協(xié)議連接 RDP 遠(yuǎn)程桌面Server端(Windows 主機(jī)為主)
./ 安裝 FreeRDP 軟件,可以通過下面兩種方法:
// 通過OE環(huán)境直接編譯到Embedded Linux Image里面去
-----------------------
# add freerdp to build/conf/local.conf
IMAGE_INSTALL_append = " freerdp"
-----------------------
// 或者通過OE環(huán)境編譯出對(duì)應(yīng)的ipk安裝包,然后在Apalis iMX6模塊系統(tǒng)上面通過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 遠(yuǎn)程桌面Server,更多配置選項(xiàng)可以通過執(zhí)行 “xfreerdp --help” 來查看
-----------------------
$ xfreerdp /u:username /p:password /v:server ipadress or domain name
-----------------------
b). 通過 Tightvnc viewer工具,使用VNC協(xié)議連接 VNC 遠(yuǎn)程桌面Server端(Linux 主機(jī)為主)
./ 安裝 Tightvnc軟件,可以通過下面兩種方法:
// 通過OE環(huán)境直接編譯到Embedded Linux Image里面去
-----------------------
# add tightvnc to build/conf/local.conf
IMAGE_INSTALL_append = " tightvnc"
-----------------------
// 或者通過OE環(huán)境編譯出對(duì)應(yīng)的ipk安裝包,然后在Apalis iMX6模塊系統(tǒng)上面通過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 遠(yuǎn)程桌面Server,更多配置選項(xiàng)可以通過執(zhí)行 “vncviewer --help” 來查看
-----------------------
$ vncviewer vncserver_ipadress:<DISPLAY#>
-----------------------
5). Apalis iMX6 Embedded Linux 系統(tǒng)下遠(yuǎn)程桌面配置之Server端
a). 通過 X11vnc工具,使用VNC協(xié)議提供基于X11桌面服務(wù)器的遠(yuǎn)程桌面Server端
./ 安裝 X11vnc 軟件,可以通過下面兩種方法:
// 通過OE環(huán)境直接編譯到Embedded Linux Image里面去
-----------------------
# add x11vnc to build/conf/local.conf
IMAGE_INSTALL_append = " x11vnc"
-----------------------
// 或者可以在Apalis iMX6模塊系統(tǒng)上面通過opkg命令來在線安裝
-----------------------
# on Apalis iMX6 Linux, make sure it has internet access
$ opkg update
$ opkg install x11vnc
-----------------------
./ 通過下面示例命令啟動(dòng)遠(yuǎn)程桌面Server,然后即可通過vncviewer client來進(jìn)行連接
-----------------------
# 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遠(yuǎn)程桌面Server端
./ 由于teamviewer軟件本身的特性,可以提供穿透局域網(wǎng)的遠(yuǎn)程桌面服務(wù),而上述所列的軟件默認(rèn)都是只能在局域網(wǎng)內(nèi)工作
./ 安裝 Teamviewer Host軟件
// 在Linux主機(jī)上面下載Teamviewer Host針對(duì)armv7架構(gòu)的tar壓縮包,解壓并重新打包為tar.bz2壓縮包以便于在Apalis iMX6系統(tǒng)上面解壓
-----------------------
# 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系統(tǒng)上進(jìn)行解壓并檢查安裝依賴環(huán)境,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絕大多數(shù)Qt庫都已經(jīng)有了,個(gè)別沒有的可以通過OE環(huán)境單獨(dú)編譯出來ipk安裝包,再在Apalis iMX6上面進(jìn)行安裝。通過上面打印信息看到缺少的是 libqt5x11extras5 依賴庫,參考如下進(jìn)行安裝
-----------------------
# 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
-----------------------
// 檢查依賴沒有問題后,通過下面命令進(jìn)行安裝,安裝過程中遇到提示都選擇Yes。
-----------------------
$ ./tv-setup install
-----------------------
// 安裝成功后,修改teamviewer開機(jī)自啟動(dòng)systemd服務(wù)文件 /etc/systemd/system/termviewerd.service 為如下內(nèi)容
-----------------------
[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 初始化延遲的問題導(dǎo)致teamviewer開機(jī)自啟動(dòng)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
-----------------------
// 上述項(xiàng)目都配置完成后重啟
./ 卡機(jī)后稍微等待一小段時(shí)間teamviewr服務(wù)即可自啟動(dòng)成功,這時(shí)候打開teamviewr界面根據(jù)提示的ID等信息,通過teamviewer client端進(jìn)行連接訪問
6). 總結(jié)
本文示例了基于ARM嵌入式平臺(tái)進(jìn)行遠(yuǎn)程桌面client和server配置的方法供參考。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。
51單片機(jī)相關(guān)文章:51單片機(jī)教程