- 在嵌入式平台中如何实现广域网下的远程登录控制?
1 项目需要
- 在IM.X6q硬件平台,Linux4.1.15内核版本中实现在广域网下进行远程登录控制。
- 主控机为Windows机器,被控机是IMX6平台的Linux系统
- 被空机与主控机都必须能够连接互联网
2 解决方案
使用开源软件VNC+花生壳进行内网穿透,连接外网。
- 内网与外网之间的通信原理参考文章:五分钟搞懂内网和外网之间的通信的原理
- 如何使用VNC+花生壳进行内网穿透实现广域网下的远程控制?
参看下图:
- 具体实现步骤如下:
- 首先使被控主机和主控机能够联网。并且将花生壳软件移植到被控机器。
- 将开源软件VNC的客户端和服务端分别移植到主控机和被控机中。
- 申请花生壳免费域名,并注册一个护照。
- 在被控机上,将花生壳的软件登录到花生壳官网服务器。并运行VNC服务端程序。
- 在主控端使用VNC客户端或者直接使用浏览器登录之前注册的域名
- 通过花生壳官网服务器的中转,主控机将连接到被控机,并通过VNC服务端获取到的数据,通过花生壳服务器将数据返回给主控机,达到主控机可以控制被控机的功能。
3 首先实现局域网下的VNC远程控制
在实现广域网下的远程控制功能之前,我们这里先实现局域网下的远程控制功能。
首先下载X11VNC源码:点击下载
然后将源码拷贝到Linux系统解压,并进入到源码目录,然后使用下面的命令进行源码编译:
$ tar -xjvf x11vnc-0.9.13.tar.gz
$ cd x11vnc-0.9.13
$CC=arm-fsl-linux-gnueabi-gcc CFLAGS=-O2 ./configure --host=arm-linux --without-x –
prefix=/home/zsl/work/system/x11vnc-0.9.13/_INSTALL/
$ make
$ make install
生成名为x11vnc的可执行程序。将该可执行程序拷贝到IMX6开发板使用下面命令即可:
./x11vnc -noipv6 -rawfb /dev/fb0 -pipeinput UINPUT:touch,tslib_cal=/etc/pointercal,direct_abs=/dev/input/event2,nouinput,dragskip=4 -clip
1024x768+0+0
最后在Windows主机上下载vnc客户端,将Widows主机与Linux客户机用网线进行连接,并置于同一局域网。然后再VNC客户端中输入Linux服务端中的IP地址,进行远程登录即可控制服务端的界面。
4 总结
- 目前先实现在局域网内进行远程控制,后面实现了在广域网下的远程控制后会继续写入博客中
学习交流加左侧联系方式