深入了解X窗口系统与跨平台协作
1. X窗口系统基础与KMS模块
X窗口系统是许多UNIX和Linux系统中图形界面的核心。不过,KMS(内核模式设置)模块目前还不够成熟,并非所有显卡都能得到它的支持。如果你运气好,拥有支持KMS的显卡,那么可以将
xorg.conf
文件重命名,这样X服务器会尝试在没有它的情况下启动,并默认使用KMS配置。
2. X服务器故障排除与调试
尽管过去十年里X服务器配置有了很大进步,但要让它完全按照你的期望运行仍有难度。你可能需要对显示器频率、驱动选项、专有驱动或3D渲染扩展进行试验。当显示出现问题时,你往往最想看到屏幕上的调试输出,好在X.Org服务器会提供追踪问题所需的大量信息。
2.1 特殊键盘组合
-
切换虚拟终端
:按下
Control + Alt并按功能键(F1 - F6),X服务器会带你进入基于文本的虚拟终端,你可以在此登录并调试问题。若要返回X服务器运行的虚拟终端7,按Alt - F7即可。 -
更改屏幕分辨率
:若显示器与显卡的视频信号不同步,可尝试更改屏幕分辨率。可用的分辨率在配置文件的
Screen部分的Modes行中指定。激活的Modes行的确切内容取决于颜色深度,X服务器默认使用激活的Modes行上显示的第一个分辨率,你可以通过按下Control + Alt并按数字小键盘上的+或-键来切换不同的分辨率。 -
关闭X服务器
:按下
Control - Alt - Backspace可立即关闭X服务器。若从控制台启动服务器,服务器退出后你会回到控制台;若由显示管理器启动服务器,它通常会重新启动一个新服务器并再次提示输入登录名和密码,你需要从文本控制台杀死显示管理器(如xdm、gdm等)以阻止它重新启动新的X服务器。
2.2 查看X服务器输出与日志文件
当你重新控制机器后,可从X服务器的输出开始排查问题。输出有时会显示在虚拟终端1(
Control - Alt - F1
)上,更多时候会记录到日志文件中,如
/var/log/Xorg.0.log
(在HP - UX上是
/var/X11/Xserver/logs/Xf86.0.log
)。日志文件中的每行前面都有一个符号,用于对其进行分类:
| 符号 | 含义 |
| ---- | ---- |
| (–) | 已探测 |
| (**) | 来自配置文件 |
| (==) | 默认设置 |
| (++) | 来自命令行 |
| (!!) | 通知 |
| (II) | 信息 |
| (WW) | 警告 |
| (EE) | 错误 |
| (NI) | 未实现 |
| (??) | 未知 |
下面是一段Ubuntu系统的日志示例:
X.Org X Server 1.6.0
Release Date: 2009-2-25
X Protocol Version 11, Revision 0
Build Operating System: Linux 2.6.24-23-server i686 Ubuntu
Current Operating System: Linux nutrient 2.6.28-11-generic #42-Ubuntu SMP
Fri Apr 17 01:57:59 UTC 2009 i686
Build Date: 09 April 2009 02:10:02AM
xorg-server 2:1.6.0-0ubuntu14 (buildd@rothera.buildd)
Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Sun May 10 22:11:47 2009
(==) Using config file: "/etc/X11/xorg.conf"
(==) ServerLayout "MainLayout"
(**) |-->Screen "Screen 0" (0)
(**) | |-->Monitor "Monitor 0"
(**) | |-->Device "Console"
(**) |-->Input Device "Mouse0"
(**) |-->Input Device "Keyboard0"
…
从日志中可以看出X服务器和X11协议的版本号,以及服务器使用的日志文件位置、配置文件位置和活动服务器布局等默认值。
2.3 常见问题及解决方法
-
屏幕分辨率问题
:日志中常见的问题是某些屏幕分辨率无法正常工作,或者X服务器因“无法验证任何模式;回退到默认模式”等错误而退出。若未为显示器指定频率列表,X服务器会使用EDID(扩展显示识别数据)进行探测。若显示器不支持EDID或在X启动时关闭,你需要在配置文件的
Monitor部分设置频率范围。EDID探测结果的舍入误差可能导致某些分辨率不可用,可在Device部分添加以下内容来解决:
Option "IgnoreEDID" "true"
Option "UseEdidFreqs" "false"
- 鼠标配置问题 :若忘记正确定义鼠标部分,输出中会出现类似以下的错误:
(==) Using config file: "/etc/X11/xorg.conf"
Data incomplete in file /etc/X11/xorg.conf
Undefined InputDevice "Mouse0" referenced by ServerLayout "MainLayout".
(EE) Problem parsing the config file
(EE) Error parsing the config file
Fatal server error:
no screens found
2.4 使用xdpyinfo命令
当X服务器启动并登录后,可运行
xdpyinfo
命令获取更多关于X服务器配置的信息。其输出会显示显示器名称、X服务器版本信息、可用的颜色深度、已加载的扩展以及已定义的屏幕及其尺寸和颜色配置等。你可以通过脚本(如
~/.xsession
文件)解析
xdpyinfo
的输出,以确定活动屏幕的大小并适当设置桌面参数。
3. 桌面环境简介
X窗口系统的客户端/服务器模型的灵活性催生了大量的小部件集、窗口管理器、文件浏览器、工具栏实用程序和实用程序。早期的综合环境OpenLook和Motif虽然优雅但具有专有性,开发库和窗口管理器的许可费用使它们难以被大众使用。随着应用程序的发展,现代桌面环境中的两大巨头GNOME和KDE应运而生。
3.1 KDE
- 特点 :KDE即K桌面环境,用C++编写,基于Qt工具包库。它以其精美的视觉效果(如透明窗口、阴影和动画光标)受到喜欢视觉效果的用户青睐,但在非高端工作站上可能运行较慢。对于那些花大量时间在桌面点击而非运行应用程序的用户来说,效率和美观之间的权衡可能会决定KDE是否合适。从Windows或Mac环境过渡过来的用户也常因漂亮的图形界面而选择KDE,同时它也受到喜欢完全自定义环境的技术爱好者的喜爱。
- 应用程序 :为KDE编写的应用程序名称中通常包含“K”,如Konqueror(网络/文件浏览器)、Konsole(终端模拟器)、KWord(文字处理器)等。默认窗口管理器KWin支持freedesktop.org窗口管理器规范标准,可配置皮肤以改变整体外观和感觉,还有许多其他功能。KOffice应用套件包含文字处理、电子表格和演示文稿实用程序,并且KDE提供了一套全面的开发工具,包括集成开发环境(IDE)。
3.2 GNOME
- 特点 :GNOME用C编写,基于GTK + 小部件集。它最初是GNU网络对象模型环境的缩写,现在只是一个名称。随着对Compiz的支持,GNOME获得了一些以前缺少的视觉效果,但总体上仍不如KDE华丽,可配置性稍低且一致性稍差。不过,它更简洁、快速、简单和优雅,大多数Linux发行版将其作为默认桌面环境。
- 应用程序 :GNOME应用程序名称中通常有“G”,标准窗口管理器Metacity提供基本的窗口功能和GNOME用户界面的皮肤。若需要一些额外功能,如智能窗口放置,需要外部应用程序的支持。办公应用程序包括用于文字处理的AbiWord、电子表格Gnumeric和图像处理的The GIMP,还包括文件管理器Nautilus。与KDE一样,GNOME为应用程序开发者提供了广泛的基础设施。
3.3 GNOME与KDE的比较
很难说哪个更好,最好的方法是亲自尝试两者,根据自己的需求做出选择。同时要记住,朋友、用户和管理者可能有不同的桌面环境偏好,而且选择桌面环境并不限制你运行的应用程序,无论选择哪个桌面,都可以从这两个(以及其他)开源项目提供的优秀软件中选择应用程序。
4. 推荐阅读资源
- X.Org官网 :x.org,包含即将发布的版本信息以及X.Org维基、邮件列表和下载链接。
-
man手册
:
Xserver和Xorg(在AIX上为X)的man页涵盖通用X服务器选项和Xorg特定的命令行选项,还包括X服务器操作的一般概述;xorg.conf的man页详细介绍配置文件及其各个部分,并在REFERENCES部分列出视频卡驱动程序,可在此查找视频卡对应的驱动程序名称,然后阅读驱动程序自身的man页以了解特定于驱动程序的选项。
5. 练习
-
E19.1
:使用SSH在网络上运行X程序,使用
ssh -v验证X转发是否正确设置。登录后查看DISPLAY变量的值,运行xauth列出cookie并验证该显示器的魔法cookie认证是否激活。 -
E19.2
:编写一个shell命令行或脚本,解析
xdpyinfo的输出并以XxY(如1024×768)的格式打印当前屏幕分辨率。 -
E19.3
:检查Xorg日志文件(
/var/log/Xorg.0.log),尽可能确定以下项目: - 存在哪种类型的视频卡以及它使用的驱动程序。
- 显卡有多少视频内存。
- 是否使用EDID来探测显示器设置,如何得知。
- 支持哪些模式(分辨率)。
- DPMS是否启用。
- 服务器认为物理屏幕尺寸是多少。
- 鼠标使用的设备文件是什么。
- E19.4 :哪个标志可以禁用对X服务器的非本地TCP连接?解释为什么这个选项有用。
深入了解X窗口系统与跨平台协作
6. 与Windows系统的协作
6.1 从Windows登录到UNIX系统
在很多环境中,Windows和UNIX系统会同时存在,用户可能希望在不离开Windows桌面的情况下访问UNIX系统。SSH(安全外壳协议)是访问UNIX和Linux系统的最佳远程工具。以下是一些适用于Windows的SSH客户端:
-
PuTTY
:开源且简单有效,支持许多本地终端应用程序(如xterm)的功能。它还包含用于文件传输的命令行客户端
psftp
和
pscp
。
-
WinSCP
:对于不喜欢使用命令行的Windows用户,这是一个图形化的SSH客户端。
-
Cygwin
:可以安装在Windows上的类UNIX环境,可运行其SSH实用程序。
-
MindTerm
:一个零足迹的Java实现的SSH客户端,可在支持Java的任何系统上运行,个人使用免费。
-
SecureCRT
:商业SSH客户端,支持各种终端功能,提供出色的客户服务。
SSH还有一个重要功能是TCP端口转发,但此功能存在一定风险,可在服务器端禁用该功能,将SSH限制为仅用于终端访问和文件传输。
6.2 访问远程桌面
6.2.1 X服务器在Windows上的运行
X11是一个客户端/服务器系统,X服务器负责在用户屏幕上显示数据并获取用户的鼠标和键盘输入。虽然X11协议丰富,但原设计缺乏安全性,任何连接到X服务器的程序都可能获取用户的键盘输入和屏幕显示内容。因此,除非确定操作安全,否则应避免远程连接到X服务器。
若要在UNIX上运行程序并将其界面显示在Windows上,可使用SSH协议的X11转发功能。此功能会在远程主机上运行的X客户端和本地X服务器之间创建安全隧道。要使用该功能,需在SSH服务器和客户端都启用X转发:
-
客户端(以PuTTY为例)
:在其设置屏幕中激活X11转发功能。
-
服务器端
:确保
/etc/ssh/sshd_config
文件包含
X11Forwarding yes
,修改后需重启
sshd
进程。
不过,通过SSH转发X连接可能会很慢,尤其是在网络有延迟的情况下。
Windows上有多种X服务器可供选择:
-
Cygwin项目提供的免费X服务器
:配置后效果良好。
-
Xming服务器
:易于配置。
-
商业X服务器
:如Exceed和X - Win32,配置简单但价格较高。
6.2.2 VNC(虚拟网络计算)
VNC是20世纪90年代末由AT&T实验室开发的远程桌面访问系统,它将简单的哑终端与现代窗口系统相结合。与X11不同,VNC协议处理的是完整的虚拟桌面。
VNC软件开源,有许多服务器和查看器实现,且协议具有扩展性,不同实现之间可相互协作。
-
UNIX系统
:VNC服务器实现本质上是一个图形适配器模拟器,可插入X.Org X窗口服务器。运行
vncserver
会创建一个新的虚拟桌面,可使用VNC查看器远程访问。建议在首次启动服务器前使用
vncpasswd
命令设置连接密码。
-
Windows系统
:VNC服务器通常直接导出标准Windows桌面,主要用于远程支持。
以下是VNC的特点表格:
|特点|描述|
| ---- | ---- |
|无状态和基于位图|查看器可自由连接和断开,多个查看器可同时访问同一服务器|
|扩展性|不同实现可选择双方都支持的最佳协议变体|
6.2.3 Windows RDP(远程桌面协议)
自Windows 2000 Server起,Windows系统就具备为多个用户同时提供图形远程访问的能力。通过RDP,用户可以像在本地一样操作远程的Windows桌面。
下面是一个简单的流程图,展示从Windows访问UNIX系统图形界面的常用方法:
graph LR
A[Windows系统] -->|SSH| B(UNIX系统)
A -->|X服务器| C(显示UNIX程序界面)
B -->|VNC服务器| D(VNC查看器)
D -->|显示| C
A -->|RDP| E(远程Windows桌面)
7. 总结
X窗口系统是许多UNIX和Linux系统图形界面的基础,在使用过程中可能会遇到各种问题,需要通过日志和相关工具进行排查和调试。同时,现代桌面环境如GNOME和KDE各有特点,用户可根据自身需求选择。在跨平台协作方面,SSH、X转发、VNC和RDP等技术为Windows和UNIX系统之间的协作提供了多种方式,每种方式都有其优缺点和适用场景。
希望通过本文的介绍,你能对X窗口系统和跨平台协作有更深入的了解,并能根据实际情况选择合适的工具和方法。在实际操作中,不断尝试和实践,以更好地掌握这些技术。
超级会员免费看
171万+

被折叠的 条评论
为什么被折叠?



