Linux Deploy:部署图形界面环境

  文章更新:
  20170410 初次成文

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

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

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

  Linux Deploy:使用Repository部署Linux系统

  因为作者的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数量更为可观)

2017-04-10_5_12_10_下午.jpg

2017-04-10_5_12_23_下午.jpg

2017-04-10_5_12_29_下午.jpg

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

2017-04-10_5_21_25_下午.jpg

2017-04-10_5_21_31_下午.jpg

  配置完毕后,点击底部的"停止"按钮停止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"按钮提交:

2017-04-10_7_03_42_下午.jpg

2017-04-10_7_03_47_下午.jpg

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

2017-04-10_7_08_13_下午.jpg

2017-04-10_7_08_19_下午.jpg

  好了...图形界面的部署过程到此为止,剩下的你们自己折腾吧(/doge脸)~
  
  
  可能遇到的问题:
  1. 当你开启了一个VNC会话,停止Linux系统再启动Linux系统后,再次执行vncserver命令,系统可能会报出以下错误:

2017-04-10_9_03_44_下午.jpg

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

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

2017-04-10_9_13_26_下午.jpg

  编辑完成后,保存即可,进行这步操作后,在启动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画面缩小到最小):

2017-04-10_9_41_37_下午.jpg

2017-04-10_9_41_42_下午.jpg

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

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

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

alias vncserver='vncserver -geometry 1280x720' 

  
2017-04-10_9_50_55_下午.jpg

  之后,每次执行vncserver命令后,新开启的VNC会话的分辨率都会被设为1280×720。
  
  
  资源下载:
  VNC Viewer:
  
  酷市场:
  http://www.coolapk.com/apk/com.realvnc.viewer.android

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

已有 44 条评论
  1. 舍得更新了

    1. 嘿嘿嘿Dalao别闹...
      不过看来Rss订阅的效率还是很高的~/doge脸

    2. 嗨呀,是用 IFTTT 推到 Telegram 了!/贴吧吐舌
      这样订阅想第一时间看到更新内容的订阅源非常舒♂服

    3. 哇~这样也可以~
      我的话比较习惯把喜欢的Rss源添加到即刻,这样也能第一时间收到推送提醒~

    4. 111

      11

  2. 萌新

    虽然vnc挺方便的,然而我还是觉得xserver比较好~xserver有声音hhhh

    1. 似乎效率也比VNC高...
      但是好像要复杂一点的样子...
      |・ω・`)

    2. 萌新

      我觉得并不复杂啊....
      例如我 安装的是图形环境是xfce4,使用方法如下:
      首先打开ssh,在.bashrc里面加入以下代码:
      export DISPLAY=:0
      export PULSE_SERVER=tcp:127.0.0.1:4712
      然后再启动XServer XSDL,切换回ssh,输入startxfce4(据说是start+图形环境名字)
      再切换到XServer XSDL,图形图形环境就成功启动了~

    3. 刚刚试了一下,可以在XServer上跑起图形界面来了~
      可是在我的手机上好卡...( •̥́ ˍ •̀ू )
      而且不知道怎么回事儿,分辨率和字体大小好像只有第一次启动XServer的时候能调节,之后就不能调节了...
      不过这不失为连接到图形界面的另一种好办法~之后我会添加到文章里的,谢谢分享啦~
      (*˘︶˘*).。.:*♡

    4. 萌新

      在启动XServer的时候可以选的....在蓝屏之前,有那么几秒延时,那时候点击屏幕就可以调整分辨率和DPI了~

    5. 我这边似乎只有第一次可以调节,之后不管怎么点也没反应了,直接进入蓝屏...

    6. 萌新

      那,清除软件数据试试看?
      刚打开的时候,上面还有个按钮可以选择各种设置的......

    7. 上面那个按钮倒是可以调,但是好像不能调节显示参数什么的...
      清除数据也没有用...
      看来的确是不太兼容我的系统~
      (´+ω+`)

    8. 萌新

      启动程序后,会有个SDL的logo,上面有个按钮可以选择配置什么的,忽略后,过一会就会出现一个倒计时什么的...这时候点击就可以设置分辨率什么的了......
      你有看到这个画面吗?还是直接跳到了蓝屏.....

    9. Logo之后好像是一个背景是灰色的屏幕,这个时候点击屏幕应该就能调显示参数。
      然而除了第一次点击这个灰色屏幕有反应以外,从第二次开始不管怎么点都没有反应...

    10. 萌新

      诶.......我的是黑色背景白色字体......
      难道是版本不一样吗?
      你在哪里下载的呢?

    11. 作者的sourceforge主页...
      反正是第二个页面,点击也没有反应...
      不过我也不怎么用图形界面哈哈哈,暂时用VNC好了...|・ω・`)

    12. 萌新

      我是在Google play下的....
      不过果然是vnc方便呀~

    13. Vnc自带特殊键什么的,所以比较方便...
      鼠标操作也比较顺手哈哈哈。

    14. 萌新

      是的呢~

  3. 萌新

    顺便,再次感谢一下dalao~
    在你这里我学会了linux的基本配置,现在终于成功的在win10的自带的linux子系统启动了图形界面~

    1. 才看到...
      好棒!!

    2. 萌新

      折腾ing~
      希望dalao能写更多关于linux的教程~

    3. 会的,我以后一遇到什么坑都会尽量记下来(虽然自己也很菜)~
      不过最近一周可能要进入更新模式了,
      因为很多文章都是很久之前写的了,我准备先把不合时宜的文章修补一下,之后可能才会更新博客。
      这可能需要不到一周的时间...
      |・ω・`)

    4. 萌新

      坐等更新~

    5. kevinyang

      诶!还可以在win10自带的linux跑图形界面嘛

    6. 萌新

      是的呀~安装了桌面环境再安装vnc就可以了~或者也可以使用xserver~

  4. 创月

    问一下有用ubuntu16 安装mysql的吗 捣鼓了 半天无法成功

    1. 我试过没有成功,官网上说容器里运行的系统不能成功安装和正常启动MySQL。但是虚拟机运行的系统可以安装和启动MySQL。如果你想用Linux deploy部署的系统安装MySQL,我劝你还是放弃吧。如果想用数据库的话可以试试sqlite3。

    2. 创月

      我在官方项目下面,找到一点资料,但是不知道 如何操作他说
      Need add mysql user to aid_inet group.

    3. 你可以注意到运行MySQL时显示的错误是
      >ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
      你可以仔细查看一下/var/run/mysqld/这个目录,它是空的,我觉得应该是安装没有成功,所以才会是空的所以应该是跟用户没有什么关系,所以这个把MySQL的用户添加进aid_inet_group应该是没有用。

    4. 如果只是要用到PHP+Mysql的话你可以试试ANMPP项目,但是官方说明不全,以后会考虑写一个ANMPP的教程:

      项目地址:
      https://github.com/xiaoqidun/anmpp

    5. 创月

      我已经解决了,确实是用户组的问题

    6. 创月

      我是搞python和jiava的

    7. 怎样解决的?求告知。

  5. kevinyang

    哎呀好气啊qwq酷安把linux deploy下架了
    dalao回复的答疑也都没有了

    1. 可以在"酷安客户端"搜索我的用户名:
      sun1215009714
      然后查看我的动态,在我的动态里面应该是有的,尽管应用下架了但是评论并没有被删除~

      之后我会把文章中提到的指向酷安的下架应用链接改成ApkPure的,虽然ApkPure有些地方还是不能正常访问,不过这似乎是唯一的办法了...( "・ω・゙)

    2. k3v1nyang

      gnome图形界面是不是用不了(๑•̀ㅁ•́๑)

    3. 没有试过...
      还是建议用作者提供的桌面环境,一是精简占资源小,二是兼容性高。
      像Mate桌面环境虽然在Linux Deploy里自带,但是在Linux Deploy上用会出现一些Bug,Gnome的话,即使能成功安装,估计也会有一些Bug出现。

  6. 域名不错,初衷是免流?

    1. 不是...
      一开始想做应用分享型的博客,
      但是即使在2014年那会儿,**app.cn的域名已经被抢注得差不多了,
      之后发现了这个域名还没有被注册,就想了个含义注册下来了~

  7. k3v1nyang

    提个建议!
    强烈推荐大家用X11!下载安装xserver
    比vnc好用很多,没延迟,不用担心找不到显示屏的bug,以及最重要的是!有声音!!
    在终端输入:
    export DISPLAY=:0 PULSE_SERVER=tcp:127.0.0.1:4712
    然后:
    startxfce4或者startlxde或者mate-session就可以启动桌面!(取决于你装的桌面环境
    如果中文乱码可以安装中文字体:
    sudo apt-get install ttf-wqy-zenhei

    最后谢谢苏大大的一系列教程!!!~(*´∀`)

  8. WildCamel

    虽然还是没找到我安装centos图形界面到底哪里出错了,但是看到您写的这几份文章,真心不错!

    要是我能早点在百度上查到您的文章该多好,少去很多弯路。

    挺不错的,加油(ง •̀_•́)ง!

  9. wack

    怎么去安装那些基本的程序,如办公软件等

添加新评论