Linux Deploy:部署图形界面环境

文章更新:

  20170410 初次成文

问题提出:

  其实这篇文章构思很久了,拖到现在才写...原因就在于在Linux Deploy上部署图形环境是一件坑多活累的工作:一来是因为兼容性原因,部署好的图形界面环境存在数量可观的Bug,并且小苏也无力解决这些Bug。二来是因为基础的Linux环境才是图形界面环境部署的前提,而最近由于各种原因,使用原始的部署方法已经越来越难部署成功基础的Linux环境了。

  但这样看来,第一点倒不是什么大问题:毕竟手机不是为运行专业的Linux发行版而生,所以存在Bug是难免的,只要图形界面能部署成功并且大家可以正常进入图形界面,小苏的任务就完成了。问题就在于第二点:由于国内网络运营商的DNS污染与镜像源站的同步原因,基础的Linux环境能否正常部署成功都是个问题,更别说图形界面的部署了。

解决方案:

  所以在这篇文章中,小苏将直接使用上一篇文章中提到的的方法,在此基础上部署图形环境:

https://mlapp.cn/319.html

  因为作者的Repository中包含了基础的Linux环境组件,我们可以将作者的Repository导入镜像来直接部署好Linux基础环境,再在此环境之上部署图形界面。这么一来,基础的Linux环境是否部署成功就不是我们担心的问题了。

  所以在这里,小苏默认你已经阅读完上一篇文章的内容,并且根据上一篇文章的方法成功部署了基础的Linux环境。

  进入Linux Deploy,点击右下角的"下载"图标进入配置界面,保持其他选项不变,修改以下配置项:

  INIT:   打勾:启用自定义脚本执行   (INIT的其他配置保持不变)

  图形界面:   打勾:允许图形界面启动   图形子系统:VNC   图形化界面设定:保持默认配置   桌面环境:按需选择,小苏这里选择的是Xfce   (实际上小苏也推荐大家选择Xfce,原因在于XTerm太过简陋,LXDE桌面环境倒是好一些,但是"ubuntu-lxde_arm"这个Repository是免费的,可以直接导入作者为我们部署好的ubuntu+ssh+lxde+vnc环境,而Mate桌面环境需要下载更多的软件包和依赖组件,且Bug数量更为可观)

  配置完毕后,回到主界面,按下"菜单键",选择"配置"让我们刚才的的设置生效:

  配置完毕后,点击底部的"停止"按钮停止Linux系统,再点击"启动"按钮启动Linux系统,接着我们登入SSH,在终端中执行:

sudo apt-get install ttf-wqy-zenhei #安装中文字库

  中文字库安装完毕后,执行以下命令启动VNC:

vncserver

  终端会返回以下结果:

New 'X' desktop is localhost:1

Starting applications specified in /home/android/.vnc/xstartup
Log file is /home/android/.vnc/localhost:1.log

  证明vncserver已启动成功。

  (注意,在某些时候,第一次执行vncserver命令时系统将要求你设定一个小于8位数的VNC密码,你需要输入两次密码之后提交,VNC密码设定完成之后还会有一个提示,不用理会,键入n提交即可)

进入图形界面:

  接着我们使用VncViewer来连接到我们刚刚部署好的的图形界面:

  打开VncViewer,点击右下角的"+"按钮添加VNC会话:

  Address:   127.0.0.1:5901   Name:   Localhost - Ubuntu@Xfce

  其中,"Address"项为VNC服务器所在的地址。由于我们需要连接本机的VNC服务器,所以填写127.0.0.1即可,此外我们还需要在地址后指定VNC端口,因为刚刚终端返回的信息:New 'X' desktop is localhost:1指定了此次桌面会话号为1,所以端口就为5900+1=5901。如果我们开启了多个虚拟桌面,它们的会话号为2,3,4...,那么各自的端口即为5902,5903,5904...依次类推。并且,服务器地址与端口之间需要用英文冒号隔开。"Name"项为用户为此VNC会话指定的地址,我们为了区别其他会话,填写的是Localhost - Ubuntu@Xfce,实际上随便填写什么都可以。

  这些信息填写完毕后,点击"CREATE"按钮提交:

  确认信息无误后,点击下面绿色的"CONNECT"按钮开始连接VNC会话(如果你之前没有设定过VNC密码,但在连接VNC连接过程中仍然需要你输入密码时,那么你可以输入android用户的密码试试):

  好了...图形界面的部署过程到此为止,剩下的你们自己折腾吧(/doge脸)~

可能遇到的问题:

  1. 当你开启了一个VNC会话,停止Linux系统再启动Linux系统后,再次执行vncserver命令,系统可能会报出以下错误:

  这时候,你可以执行以下两条命令:

rm -rf /tmp/.X[1-9]-lock rm -rf /tmp/.X11-unix/X[1-9]

  执行完毕后,再执行vncserver,会话号就会被重置为1了。为了防止每次停止再启动Linux系统后带来的这个问题,我们可以编辑/etc/rc.local文件,在此文件的exit 0之前插入这两条命令:

sudo vim /etc/rc.local #编辑/etc/rc.local

  编辑完成后,保存即可,进行这步操作后,在启动Linux系统后和停止Linux系统之前,Linux Deploy都会替我们执行这两条命令,这样一来之后就不会再报错了~

  2. vncserver默认的分辨率是1024×768,但市面上的大部分手机屏幕的分辨率都是720P(1280×720),1080P(1920×1080),甚至2K(2560×1440),vncserver默认的1024×768分辨率可能会造成VNC画面不能填充满屏幕的情况,这时候,我们有必要修改VNC分辨率以适应屏幕,经过测试,拿小苏的1080P屏幕来说,将分辨率设为为720P可使VNC图像充满屏幕且不影响显示效果。调节方法就是在每次执行vncserver命令时在后面加上-geometry参数,例如我需要把VNC分辨率调为720P(1280×720),那么在启动vncserver时,执行:

vncserver -geometry 1280x720

  即可将新开启的VNC虚拟会话屏幕分辨率设为1280×720。值得注意的是,命令中的1280x720里的x是小写字母x,而不是数学中的乘号×

  下面是1280×720分辨率和1024×768分辨率的对比(将VNC Viewer画面缩小到最小):

  很明显,在小苏的1080P屏幕上,将VNC分辨率设为1280×720可使图像填充满屏幕且视觉效果更佳。

  如果你觉得每次启动vncserver时输这么一长串命令有点儿麻烦,那么可以编辑~/.bashrc文件,在下图所示的位置增加一行alias定义:

vim ~/.bashrc #编辑~/.bashrc

alias vncserver='vncserver -geometry 1280x720' 

  之后,每次执行vncserver命令后,新开启的VNC会话的分辨率都会被设为1280×720。

资源下载(VNC Viewer):

Google Play:

https://play.google.com/store/apps/details?id=com.realvnc.viewer.android

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员的碎碎念

ThinkPHP+PHPExcel实现excel导入导出数据(一)

没错,今天又将是一篇技术帖,一篇关于tp进阶学习的教程,看标题你就知道我要做的是什么啦? 首先我带大家科普一下什么是phpexcel? ? ...

3485
来自专栏北京马哥教育

手把手教你搭建一个学习Python好看的 Jupyter 环境

又到摆脱重复工作,换个心情,然而并没有软用的时间了。这次,教大家如何搭建一个好看的jupyter环境。 安装Jupyter 先来展示一下我的环境 python...

5069
来自专栏蘑菇先生的技术笔记

Windows10自适应和交互式toast通知[1]

创建灵活的toast通知,包括内嵌图片及更多的内容,不在局限于之前Windows 8.1和Windows Phone 8.1提供的toast模板。

1356
来自专栏Fundebug

Vue UI:Vue开发者必不可少的工具

随着最新的稳定版本Vue CLI 3即将发布,是时候来看看有什么新鲜有趣的特性了。基于整个Vue.js开发者社区的反馈而大幅度改良,该版本提供了很多以工作流为中...

2265
来自专栏云计算教程系列

如何使用tmux终端多路复用器

TMUX是终端多路复用器。类似GNU Screen,但来自于OpenBSD,采用BSD授权。使用它最直观的好处就是,通过一个终端登录远程主机并运行tmux后,在...

1223
来自专栏蘑菇先生的技术笔记

Windows10自适应和交互式toast通知[1]

2746
来自专栏Coding+

Fiddler 极速上手

Fiddler 是一个 http协议 调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出” Fiddler 的数据...

1613
来自专栏知晓程序

开发 | 简单易上手,资讯类小程序开发实战指南

今天,知晓程序(微信号 zxcx0101)将通过一个简单的电影资讯小程序,来看看在知晓云内容库功能的帮助下,如何将内容资讯类小程序的开发效率提高 60%。

1541
来自专栏魏琼东

.NET快速开发实践之应用IExtenderProvider实现对象与UI控件的绑定

         现在企业级的信息系统应用开发之中,数据层采用了ORM,解放了之前开发最大工作量的核对SQL语句,我到现在还曾经记得在2002年实医院管理信息系...

2056
来自专栏jeremy的技术点滴

微信小程序上手

6896

扫码关注云+社区

领取腾讯云代金券