最近发现远程除了使用VNC还可以用Xmanager,孤陋寡闻了,通过这个远程软件,又把不怎么关注的Xwindow给了解了一遍。
Xfce是一个自由软件,运行在类Unix操作系统 (如Linux、FreeBSD 和 Solaris)上,提供轻量级桌面环境。什么是桌面环境?看看这里,
LightDM,即:Light Display Manager,是一个全新的、轻量的Linux桌面的桌面显示管理器,而传统的Ubuntu用的是GNOME桌面标准的GDM。
0x00 失败安装lightdm
想要安装lightdm,然后最直接的想到yum install lightdm,果然不是顺利完成。本机配置只有光盘和epel源
Error: Package: lightdm-gobject-1.10.6-4.el7.x86_64 (epel)
Requires: glib2(x86-64) >= 2.42.2 Installed: glib2-2.36.3-5.el7.x86_64 (@anaconda) glib2(x86-64) = 2.36.3-5.el7
于是乎想到了源码安装,源码安装最不爽的就是解决一堆依赖关系。折腾了好一会,最终还是回到原点。且看下述依赖关系的解决过程。
1、configure: error: PAM not found,这个我在yum安装pam-devel就解决了
2、接着congfigure,提示少了五个包,那就一一解决。
checking for LIGHTDM... no
configure: error: Package requirements ( glib-2.0 >= 2.30 gio-2.0 >= 2.26 gio-unix-2.0 xdmcp xcb) were not met:No package 'glib-2.0' found
No package 'gio-2.0' foundNo package 'gio-unix-2.0' foundNo package 'xdmcp' foundNo package 'xcb' found安装完 glib2-devel后就剩下两个包未解决了
No package 'xdmcp' found No package 'xcb' foundyum安装libxcb-devel最后就剩下一个
No package 'xdmcp' found
下载一个安装完也解决了
3、再次configure,这次出现的是,这个我的yum源也没有,下载。
configure: error: itstool not found
4、最后一个提示,发现没有安装intltool,yum源找到安装。
configure: error: Your intltool is too old. You need intltool 0.35.0 or later.
5、最后终于configure成功了
config.status: executing depfiles commands
config.status: executing libtool commandsconfig.status: executing po/stamp-it commandsLight Display Manager 1.10.6
===========================prefix: /usr/local/lightdm
Greeter session: default Greeter user: lightdm User session: default liblightdm-gobject: no GObject introspection: no liblightdm-qt: no liblightdm-qt5: no libaudit support: no Enable tests: yes然后就make,想不到绕了这么久最终居然还是回到了glib2这个原点。
CCLD test-gobject-greeter
/usr/bin/ld: cannot find -llightdm-gobject-1collect2: error: ld returned 1 exit status[root@localhost lightdm-1.10.6]# rpm -ih lightdm-gobject-1.10.6-4.el7.x86_64.rpm
error: Failed dependencies: glib2(x86-64) >= 2.42.2 is needed by lightdm-gobject-1.10.6-4.el7.x86_64好吧,只要安装新的glib2的rpm包就会提示软件包内各种文件和现有的文件同名冲突,那么如果用源码安装glib2呢,这里真的是犯迷糊了,既然是文件冲突那么源码安装后的目录里面一堆库文件同样也是冲突的啊,做了无用功,反正我导出到/etc/ld.so.conf.d后再configure是没有效果的。
0x01 卸载升级glib2
一开始rpm -e发现glib2有太多的软件包依赖于它,所以为了避免影响,不做强制安装。
rpm –e --nodeps glib2rpm –e --nodeps glib2-devel
下载新版本的glib2-2.42.2,重新安装。一切顺利,没有任何报错
附上找到的一个下载地址:
0x02 安装lightdm
解决了glib2的问题直接yum install lightdm安装完成。
1、配置文件
vim /etc/lightdm/lightdm.conf
修改或添加以下
[XDMCPServer] enabled=true port=1772、关闭原有的gdm
systemctl stop gdmsystemctl start lightdm
3、安装Xfce 在yum group list中发现Xfce这个软件包组未安装,yum groupinstall Xfce即可。但是又是一堆依赖性问题,这里的最终问题就是,我因为把默认系统的yum源都删除了,只留下了epel和光盘自带软件,因为默认的Centos是国外站点,这里下载一个国内中科大的源。
--> Finished Dependency Resolution
Error: Package: orage-4.12.1-3.el7.x86_64 (epel) Requires: libicalvcal.so.1()(64bit)Error: Package: orage-4.12.1-3.el7.x86_64 (epel) Requires: libical.so.1()(64bit)Error: Package: xfce4-power-manager-1.6.0-2.el7.x86_64 (epel) Requires: upower >= 0.99 Installed: upower-0.9.20-7.el7.x86_64 (@Iso) upower = 0.9.20-7.el7Error: Package: tumbler-0.1.31-2.el7.x86_64 (epel) Requires: libpoppler-glib.so.18()(64bit)Error: Package: xfce4-power-manager-1.6.0-2.el7.x86_64 (epel) Requires: libupower-glib.so.3()(64bit)Error: Package: orage-4.12.1-3.el7.x86_64 (epel) Requires: libicalss.so.1()(64bit)You could try using --skip-broken to work around the problemYou could try running: rpm -Va --nofiles --nodigest[root@localhost yum.repos.d]# wget -O BaseZKD.repo
现在可以安装软件组了,但是检查依赖之后发现有一个已安装软件lvm2-2.02.105的文件跟要安装的device-mapper冲突,于是乎我用yum update lvm2-2.02.105,先升级,再执行yum install xfce。顺利安装!
0x03 使用Xmanager
什么是Xmanager ?就像什么是office,office还包含了word,excel,ppt等。这可以认为就是一个软件套装,包含了各个用于远程连接的工具。可以让你用各种姿势连接。
用Xstart连接linux远程桌面,为了省事找了个不用安装的Xmanager,地址:
打开Xbrowser,新建Xstart,只要有ssh登录的账号密码就可以了。
会话属性要修改,因为使用的是xfce,执行命令如下。
然后就大功告成了!
0x04 X-window知其然
什么是X-window,称之为X11或X,X Window其实是一种规范,它有很多不同的实现,在Linux系统下的实现是Xorg和XFree86。目前依据X的规范架构所开发撰写成的实现体中, 以X.Org最为普遍且最受欢迎。X.Org所用的协议 版本是X11,是在1987年9月所发布。在它的基础上开发出了诸如Gnome和KDE等桌面环境。
都知道它是Unix/Linux下面的窗口系统,也都知道它基于Server/Clinet架构,好处是可以把服务器运行于和显示器所在的机器不同的另一台机器上,X Window中的Server和Client的概念和我们平时接触到的“Server/Client”概念刚好相反。X服务器将显示输出到屏幕,所以简单理解,有显示的就是X服务器端,需要被显示的如程序界面就是客户端。
X-Window的组成可以分为以下三个部分
X-Server(服务器) X-Client(客户端) X-Protocol(通信协议)X-Server
- X的服务器端,运行在有显示设备的主机上。负责所有有关图形显示的操作。主要在处理来自 X-Client 应用程序的请求。
- 在屏幕上绘制图形 (所以又称为 Display Server),并且负责管理可用的字形与屏幕可用的颜色等系统资源,读取使用者的输入 (来自键盘或鼠标),传送键盘、鼠标事件与窗口状态信息给 X-Client (也就是应用程序)。
- X-Server负责和设备打交道,负责具体的管理的显 卡,显示器的显示模式和参数设置(这也是整个X 系统中最复杂的部分)
- X-Server还包括最低层的与设备相关的图形库,目 前主要是Xlib
- 目前的X-Server主要有XFree86和Xorg两个
X-Client
- X的服务器端,任何一个X应用程序(文字处理、数 据库应用、网络软件等),包括WM(窗口管理器) 在内都是X-Client
- X-Client不负责任何图形相关的具体操作,只和XServer交互,由X-server负责完成其图形显示任务, 这种交互一般来说是通过在底层调用Xlib实现的
- X-Client的核心任务是计算和数据处理。更确切的 说是消息处理
- X-Client可以运行在本地机器,也可以运行在网络 上的不同主机。
X-Protocol
- X-Protocol是X-Server与X-Client之间的通信协议。 从本质上来说,它是一种远程显示协议。
- 在接触更多X Programming 的信息后,会慢慢体会到它的存在,目前不妨暂时将 X-Protocol 在 XWindow 中所扮演的角色,想象为 HTTP 协议在 Web Server 与 Web Client (Browser) 间所扮演的沟通角色一样。
- 在 X-Window System 中比较特殊的一点,就是 X-Protocol 允许 X-Server 与 X-Client 能跨网络来交换讯息,这意味着X-Server 与 X-Client 不限制都得在同一台机器上执行,可在不同的计算机上同时执行(网络透明性)。不同机器上的XClient只要显示在当前的X-Server上,他们就具有相似的行为,就服从当前X-Server的统一的风格和工作方式。
Request X-Client向X-Server发送窗口生成,窗口的操作,图形的表示等等要求时使用的消息。另外,各种各样的情报取得时,也会向X-Server发送Request消息。
Reply X-Server接收到X-Client发送的请求后,把必要情报返回给X-Client时发送的消息。发送请求的X-Client在Reply返回前会进入等待状态。(窗口生成和图形表示等要求时不会进入等待状态)
Event X-Server将用户的键盘输入,鼠标操作等事件通知给X-Client时所发送的消息。
Error X-Server发生故障时,把故障通知给X-Client时所发送的消息
X-Window的C/S架构和我们平常看到的很多C/S 架构正好相反,对于大多数的C/S架构,Server 一般都是在网络上提供某种服务的程序,如FTP,HTTP,BBS,Email等服务,而Client则是向这些Server要求服务的程序,比如Browser, Email-Client等。而在 X-Window System 中, X-Client 指的则是可在网络上任何计算机上执行的各种应用程序,它们的执行结果必须传到某个屏幕显示器上,而负责将执行结果显示到屏幕上 与管理各种系统资源的程序,便是 X-Server(一定是运行在使用者自己的计算机上)。我们可以在自己的计算机上激活 X-Server后,再Telnet 联机至其它计算机,将其它计算机上XClient的执行结果传回到自己的屏幕上。当然XServer 一定得在使用者自己的计算机上执行,这样我们才能看到应用程序 (X-Clients) 的执行结果为何。
什么是窗口管理器?
很多人不知道窗口管理器是怎么回事。他们认为 Gnome 和 KDE 是窗口管理器,认为窗口管理器就是能够提供一个工具条,能够配置桌面背景,能够设置很多菜单的东西。而其实,窗口管理器只是 Gnome 和 KDE 的一部分,它的主要功能是你平时根本没有注意,但是却非常重要的操作。窗口管理器的主要功能是:移动窗口,改变窗口大小,图标化(最小化)窗口,改变窗口层叠顺序……
通常的X客户程序不需要知道有人想移动它,它只知道乖乖听窗口管理器的话。如果没有窗口管理器运行,你的程序会一个堆一个,你没有办法操纵被盖在下面的程序,你只能使用最上面一个程序,而且你不能移动它,你不能改变它的大小。这样的系统根本不能用!
其实你的窗口上的标题,按钮,漂亮的边框,全都是窗口管理器提供的,而不是程序自己的,这样你用窗口管理器就能改变任何窗口的样式了。当你点击关闭窗口的那个按钮,你其实点击的是窗口管理器放在你的程序窗口上面的一个小窗口,发现它受到点击后,窗口管理器就会通知那个程序:“喂!有人想关掉你,你自己准备准备后事,然后退出吧。”
Gnome 和 KDE
是“桌面系统”,一种很多程序和函数库的集合。它们的设计目的是提供一致的方便的操作方式来满足普通用户的需要。它们不但包含窗口管理器,还有很多实用程序和应用程序,比如配置程序,工具条,编辑器,绘图工具…… 其实 Gnome 可以和很多窗口管理器合作
显示管理器(Display Manager)
X Server的启动方式有两种,一种是通过显示管理器启动,另一种是手动启动。显示管理器(Display Manager)是什么呢?display就是一个电脑配备的一套键盘鼠标和显示器,那么显示管理器就是这一套设备的管理器了。显示管理器可以直接管理这些设备,所以它可以控制X Server的运行,由它来启动X Server那是再合适不过了。系统启动过程是这样的:内核加载-->init程序运行-->显示管理器运行-->X Server运行-->显示管理器连接到X Server,显示登录界面-->用户登录后,登录界面关闭,加载桌面环境。从上面的流程可以看出,显示管理器是X Server的父进程,它负责启动X Server,当X Server启动后,它又变成了X Server的一个Client程序,连接到X Server显示欢迎界面和登录界面,最后,显示管理器又是所有桌面环境的父进程,它负责启动桌面环境需要的其它Client程序。
参考:
Xwindow视频