X Window 的简易设置与相关知识介绍
本文数据主要针对 Fedora Core 4 的系统进行说明, Fedora Core 1 主要是由 Red Hat Linux 9 改版而来, 这个 Red Hat Linux 9 并不是当前大家听到的 RHEL 喔!那是在 RHEL 出现之前的产品,基本上是在 2003 年以前的作品了!Fedora Core 4 则是在 2005 年 6 月份发布,使用的内核是 2.6.11 版,当时是很红的一个作品!只是生命周期太短,所以用这个 Fedora 系列来介绍 Server, 当时的决定确实有点莫名其妙了...
建议您前往本站查找最新版本的 Linux distribution 文章来阅读,比较不会浪费时间。那为何还需要编辑 Fedora Core 4 的数据呢? 鸟哥只想要做个自己曾经撰写过的文档内容保存而已啰! ^_^!最新文章请前往鸟站首页查阅啰!
有人说,要让 Linux 更被大众所接受,那么更具亲和力的 X Window 系统是势在必行的! X Window System 的整体架构其实不很好理解,因为他又分为 X Server 与 X Client 等部分, 再加上很好用的 Window Manager 来凑一脚,嘿嘿!更难以理解了。 不过,我们这里并没有介绍很深入的 X Window 架构,只是简单的介绍一下, 您应该如何设置 X Window 好让您的桌面系统 (Desktop) 变的更漂亮~ 尤其是某些学术用软件,需要 3D 加速的功能时,理解这些咚咚,就很重要了!
[root@linux ~]# startx [X client option] -- [X server option] [root@linux ~]# startx -- -depth 16startx 后面接的参数以两个减号『--』隔开,前面的是 X Client 的设置,后面的是 X Server 的设置。 因为色彩深度是与 X Server 有关的,所以参数当然是写在 -- 后面啰,于是就成了上面的模样! 由于 startx 后面加的参数可以取代默认值,因此您就可以使用 16 比特色彩度进入 X 啰。
[root@linux ~]# xinit [client option] -- [server or display option]
那个 client option 与 server option 如何下达呢?其实那两个咚咚就是由刚刚 startx 去找出来的啦!
在我们通过 startx 找到适当的 xinitrc 与 xserverrc 后,就交给 xinit 来运行。
在缺省的情况下 (用户尚未有 ~/.xinitrc 等文件时),您输入 startx ,
就等于进行 xinit /etc/X11/xinit/xinitrc --
/etc/X11/xinit/xserverrc 这个指令一般!这样瞭了吗?
xinit xterm -geometry +1+1 -n login -display :0 -- X :0
那个 xterm 是 X 窗口底下的虚拟终端机,后面会接一个『 -display :0 』
表示这个虚拟终端机是启动在第 :0 号显示接口的意思。而我们启动的 X server 程序就是 X 啦!
其实 X 就是 Xorg 或 XFree86 的链接档,亦即是 X Server 的主程序啰!
所以我们启动 X 还挺简单的~直接运行 X 而已。如果单纯以上面的内容来启动您的 X window 时,
您就会发现 tty7 有画面了!只是.....很丑~因为我们还没有启动 window manager 啊!
xclock -geometry 100x100-5+5 &
xterm -geometry 80x50-50+150 &
exec /usr/X11R6/bin/twm
意思就是说,我启动了 X ,并且同时启动 xclock / xterm / twm 这三个 X clients 喔!
如此一来,您登录 X 就有这三个咚咚可以使用了!如果忘记加上 & 的符号,那就.....
会让系统等待啊,而无法一次就登录 X 呢!1. 先来启动第一个 X 在 :0 画面中: [root@linux ~]# X :0 & # X 是大写,那个 :0 是写在一起的,至于 & 则是放到背景去运行。 # 此时可以使用 netstat -tulnp 查看看有没有那个 port 6000 出现啊! # 另外,此时系统会主动的跳到第一个图形接口终端机,亦即 tty7 上喔! # 所以如果一切顺利的话,您应该可以看到一个 X 的鼠标光标可以让您移动了。 # 该画面就是 X Server 启动的画面啰!丑丑的,而且没有什么 client 可以用啊! # 接下来,请按下 [ctrl]+[alt]+[F1] 回到刚刚下达指令的终端机: 2. 输入数个可以在 X 当中运行的虚拟终端机 [root@linux ~]# xterm -display :0 & # 那个 xterm 是必须要在 X 底下才能够运行的终端机接口。 # 加入的参数 -display 则是指出这个 xterm 要在那个 display 使用的。 # 此时请按下 [ctrl]+[alt]+[F7] 去到 X 画面中,您会发现多了一个终端机啰~ # 不过,可惜的是,您无法看到终端机的标题、也无法移动终端机, # 当然也无法调整终端机的大小啊!我们回到刚刚的 tty1 然后: [root@linux ~]# xterm -display :0 & # 又多一个终端机,去到 tty7 查阅一下。唉~没有多出一个终端机啊? # 这是因为两个终端机重叠了~我们又无法移动终端机,所以只看到一个。 3. 输入可以管理的 window manager [root@linux ~]# twm -display :0 & # 回到 tty1 后,用最简单的 twm 这个窗口管理员来管理我们的 X 吧! # 输入之后,去到 tty7 看看,用鼠标移动一下终端机看看?可以移动了吧? # 也可以缩小放大窗口啰~同时也出现了标题提示啰~也看到两个终端机啦! # 现在终于知道窗口管理员的重要性了吧? ^_^ 4. 增加另一个 X 在系统中 [root@linux ~]# X :1 & # 如果您又重复运行一次 X 的话,那么这次的 X 图标就会出现在 tty8 底下, # 那再输入一次呢?亦即 X :2 & 呢?很简单啊! tty9 也有 X 出现啰~厉害吧! 5. 将所有刚刚创建的 X 相关工作全部杀掉! [root@linux ~]# kill %6 [root@linux ~]# kill %5 [root@linux ~]# kill %4 [root@linux ~]# kill %3 [root@linux ~]# kill %2 [root@linux ~]# kill %1很有趣的一个小实验吧~通过这个实验,您应该会对 X 使用的 port , 与 Window manager 及 tty7 以后的终端接口使用方式有比较清楚的了解~加油!
[root@linux ~]# X -version
X Window System Version 6.8.2
Release Date: 9 February 2005
X Protocol Version 11, Revision 0, Release 6.8.2
Build Operating System: Linux 2.6.9-1.906_ELsmp i686 [ELF]
Current Operating System: Linux linux.dmtsai.tw 2.6.12-1.1387_FC4
Build Date: 02 June 2005
Build Host: tweety.build.redhat.com
Before reporting problems, check http://wiki.X.Org
to make sure that you have the latest version.
有看到 http://wiki.X.Org 吧?那就是 Xorg 计划的网站啰。此时我们知道设置档就是
/etc/X11/xorg.conf 。
如果您的 X 是 XFree86 的话,那么设置档就会是在 /etc/X11/XF86Config
(注意大小写) 里头喔!
我们的 FC4 使用的是 Xorg 计划所提供的 X11,所以我们的设置档就会在 /etc/X11/xorg.conf 。
接下来,我们要做的就只是修改 xorg.conf 这个文件而已。之前各大 distribution 提供的例如
xf86config, Xconfigurator 之类的软件也都是在修改这个设置档而已。所以,我们就直接手动来查阅这个文件吧。
Section “section name”
…….. <== 与这个 section name 有关的设置项目
……..
EndSection
至于常见的 section name 主要有:
[root@linux ~]# cd /etc/X11 [root@linux X11]# cp -a xorg.conf xorg.conf.back <== 有备份有保佑 [root@linux X11]# vi xorg.conf Section "Module" Load "dbe" Load "extmod" Load "fbdevhw" Load "glx" Load "record" Load "freetype" Load "type1" Load "dri" EndSection # 上面这些模块是 X Server 启动时,希望能够额外获得的相关支持的模块。 # 关于更多模块可以搜索一下 /usr/X11R6/lib/modules/extensions/ 这个目录, # 对喜欢以 X 窗口登录远程主机的朋友来说, FC4 提供的这个 vnc.so 模块可是 # 相当的有趣喔!请参考 鸟哥的 Linux 私房菜服务器篇--远程登录服务器的介绍呢 Section "InputDevice" Identifier "Keyboard0" Driver "kbd" Option "XkbModel" "pc105" Option "XkbLayout" "us" EndSection # 这个玩意儿是键盘的对应设置数据,重点在于 XkbLayout 那一项, # 如果没有问题的话,我们台湾地区应该都是使用美式键盘对应按钮的, # 但是 SuSE 却是使用德国键盘对应按钮,这里老是发生错误,呵呵,所以, # 如果你的键盘老是按出不对的字符,修改这里成为 us 吧! # 特别注意到 Identifier 那一项,那个是在说明,我这个键盘的设置档, # 被定义为名称是 Keyboard0 的意思,这个名称最后会被用于 ServerLayout 中 Section "InputDevice" Identifier "Mouse0" Driver "mouse" Option "Protocol" "IMPS/2" Option "Device" "/dev/input/mice" Option "ZAxisMapping" "4 5" Option "Emulate3Buttons" "yes" EndSection # 这个则主要在定义鼠标。鸟哥用 ps2 鼠标,所以这里是这样的模样。 # 如果您使用的是 usb 鼠标,这里可能就不会是跟我一样的情况了。 # 比较有趣的是那个 Emulate3Buttons ,意思是仿真三键, # 如果您的鼠标本身就有三按键,这里就不要设置啊 Section "Files" RgbPath "/usr/X11R6/lib/X11/rgb" FontPath "unix/:7100" EndSection # 我们的 X Server 很重要的一点就是必须要有字体, # 这个 Files 的项目就是在设置字体的地方。当然啦,您的主机本来就必须 # 要有字库才行。一般字库就是放置在 /usr/X11R6/lib/X11/fonts。 # 那个 Rgb 是与色彩有关的项目。 # 基本上,如果我们要填写 100dpi 的字体,可以这样做: # FontPath "/usr/X11R6/lib/X11/fonts/100dpi/" # 将所有需要的字体都重复以上面这一行填写即可。但是, FC4 有更好的方法, # 那就是利用 X Font Server, xfs 这个 daemon 来统一管理,因此, # 上面的设置值就会只剩下 "unit/:7100" 而已,那说明的是,我们的 xfs # 服务是启动在 unix socket 7100 那个数据链接上面。 # 也因为如此,所以我们在启动 X server 之前,务必要先启动 xfs 才行啊, # 否则 X 会告知我们说,找不到 font 呢。相关的信息我们在下一继续说明。 Section "Monitor" Identifier "Monitor0" VendorName "Monitor Vendor" ModelName "ADI GD910T" DisplaySize 370 280 HorizSync 30.0 - 80.0 VertRefresh 50.0 - 100.0 Option "dpms" EndSection # 屏幕的设置仅有一个地方要注意,那就是垂直与水平的更新频率。 # 在上面的 HorizSync 与 VerRefresh 的设置上,要注意,不要设置太高, # 以鸟哥的设置为例,我并没有设置很高喔,这个玩意儿与更新频率有关。 # 设置太高的话,据说会让 monitor 烧毁呢,要很注意啊。 Section "Device" Identifier "Videocard0" Driver "nv" VendorName "Videocard vendor" BoardName "NVIDIA GeForce 4 (generic)" EndSection # 这地方重要了,这就是显卡的芯片模块加载的设置区域。 # 因为鸟哥的显卡是 NVidia 的,所以就使用 Xorg 计划提供的 nv 模块, # 那个模块就是给 NVidia 用的啦。更多的显示芯片模块可以参考底下这个目录: # /usr/X11R6/lib/modules/drivers/ Section "Screen" Identifier "Screen0" Device "Videocard0" Monitor "Monitor0" DefaultDepth 16 SubSection "Display" Viewport 0 0 Depth 16 Modes "1024x768" "800x600" "640x480" EndSubSection SubSection "Display" Viewport 0 0 Depth 24 Modes "1024x768" "800x600" EndSubSection EndSection # 那么 screen 是甚么东西啊? 其实就是与屏幕有关的 # 分辨率啦、色彩深度啦等等的,还有一个缺省色彩深度 (DefaultDepth)。 # 您会发现,在 screen 里面还有一个 subsection "display" 对吧? # 那个是段落内的段落,也就是说,screen 里面还可以设置多个显示项目, # 以上面的段落来说,我的 screen (屏幕) 还可以针对 16bit 与 24bit (Depth) # 色彩度来设置分辨率 (Modes) 呢。而缺省的情况就是 16 bit 色度 # (看的是 DefaultDepth 那个项目啊!) # 以鸟哥来说,我本人比较喜欢 16bit 色彩深度与 1024x768 的分辨率,因此, # 鸟哥常常在这里仅设置一个 subsection "display" 而已,内容有点像: # SubSection "Display" # Viewport 0 0 # Depth 16 # Modes "1024x768" # EndSubSection Section "ServerLayout" Identifier "Default Layout" Screen 0 "Screen0" 0 0 InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" EndSection # 我们上面设置了这么多的项目之后,最后整个 X Server 要用的项目, # 就通通一骨脑的给他写入这里就是了,包括键盘、鼠标以及屏幕啊。上面设置完毕之后,就等于将整个 X Server 设置妥当了,很简单吧。 如果您想要更新其他的例如显示芯片的模块的话,就得要去硬件开发商的网站下载源文件来编译才行。 设置完毕之后,您就可以启动 X Server 是看看啰。基本上,如果您的 Files 那个项目用的是直接写入字体的路径, 那就不需要启动 XFS (X Font Server),如果是使用 font server 时,就要先启动 xfs :
[root@linux ~]# /etc/init.d/xfs start [root@linux ~]# startx当然,您也可以利用 init 5 这个指令直接切换到图形接口的登录来试看看啰。
[root@linux ~]# vi /etc/X11/fs/config # allow a max of 10 clients to connect to this font server client-limit = 10 # when a font server reaches its limit, start up a new one clone-self = on # where to look for fonts catalogue = /usr/X11R6/lib/X11/fonts/misc:unscaled, /usr/X11R6/lib/X11/fonts/75dpi:unscaled, /usr/X11R6/lib/X11/fonts/100dpi:unscaled, /usr/X11R6/lib/X11/fonts/Type1, /usr/share/fonts/default/Type1, , /usr/share/fonts/zh_CN/TrueType, /usr/share/fonts/zh_TW/TrueType # in 12 points, decipoints default-point-size = 120 # 100 x 100 and 75 x 75 default-resolutions = 75,75,100,100 # use lazy loading on 16 bit (usually Asian) fonts deferglyphs = 16 # how to log errors use-syslog = on # don't listen to TCP ports by default for security reasons no-listen = tcp上面这个文件的设置重点在 catalogue 那个设置项目当中。 您可以使用 chkfontpath 这个指令来列出目前支持的字库案,也可以直接修改呢! 而您如果还想要使用其他的特殊按键,则可以尝试使用 xmodmap 哩!
[root@linux ~]# vi /etc/inittab id:3:initdefault: .....(略)...... x:5:once:/etc/X11/prefdm -nodaemon看到了吗?那个 id 开头的项目就是开机启动时缺省的 run level 设置值, 至于那个 x 开头的设置项目,则是在说明如果以 run level 5 启动时, 需要额外运行的程序,就是 /etc/X11/prefdm 这个程序啰。 简单分析一下 prefdm 文件,内容其实也只是要借由 /etc/sysconfig/desktop 这个设置档来分析出缺省运行的 Window manager 啰!
[root@linux ~]# Xorg -configure # 此时 X 会主动的以内置的模块进行系统硬件的探索, # 并将最后的结果输出到 /root/xorg.conf.new 这个文件里面去。整个过程很简单,就是利用 Xorg -configure 而已,如果是 XFree86 的话,同样可以使用 XFree86 -configure 来创建起自己的设置档。而以 Xorg 创建的设置档会是 /root/xorg.conf.new 这个文件名,你可以在 run level 3 的环境下,输入:
[root@linux ~]# X -config /root/xorg.conf.new
来测试一下这个设置档是否能够启动呢? 如果输入上面指令后,可以在 tty7 看到画面的话,
表示这个设置档就应该可以启动 X Server 啰。果真如此的话,您就可以将这个文件覆盖成
/etc/X11/xorg.conf ,并且在自己手动手动微调里面的设置值吧。
1024x768 @ 100.00 Hz (GTF) hsync: 81.40 kHz; pclk: 113.31 MHz
Modeline "1024x768_100.00" 113.31 1024 1096 1208 1392 768
769 772 814 -HSync +Vsync
# 注:上面两行是同一行的数据喔!
你可以将这个数据给他填入你的 Monitor 项目当中,如下所示的数据:[root@linux ~]# vi /etc/X11/xorg.conf Section "Monitor" Identifier "Monitor0" VendorName "Monitor Vendor" ModelName "ADI GD910T" Modeline "1024x768_100.00" 113.31 1024 1096 1208 1392 768 769 772 814 -HSync +Vsync <==这是同一行啊! Option "dpms" EndSection这样你的屏幕就能够好好的处理处理了! ^_^
[root@linux ~]# sh NVIDIA-Linux-x86-1.0-7667-pkg1.run # 过程会出现一个授权说明,请选择 Accept 项目即可, # 而接下来会出现一个找不到相关内核接口的说明,他说要去 NVidia 下载适当的接口。 # 此时可以选择不要,那么程序就会开始自动编译驱动程序的主内核啰.这个时候程序会将 Nvidia 的驱动程序放置在 /usr/X11R6/lib/modules/drivers/nvidia_drv.o 而且更新了 GLX 这个模块在 /usr/X11R6/lib/modules/extensions/libglx.so.1.0.7667 。 并且同时会安装 NVidia 的 nvidia-bug-report.sh, nvidia-installer, nvidia-settings 等工具程序。比较直得注意的是 nvidia-installer 这支程序,他还可以帮忙在线更新哩~
[root@linux ~]# nvidia-installer --update # 这个动作在进行在线更新的作业 [root@linux ~]# nvidia-installer --uninstall # 这个动作在解安装 NVidia 的模块呵呵,真是方便,未来要升级到更新的显卡驱动程序, 直接利用 nvidia-installer 的功能即可。更多详细的用法可以参考 nvidia-installer -h 的说明。
[root@linux ~]# vi /etc/X11/xorg.conf # 在 Section "Device" 的显卡芯片段落处,修改 driver 啰。 # Driver "nv" Driver "nvidia" # 将原先的 nv 模块改成 nvidia 模块喔 # 在 Section "Module" 的地方,取消一些缺省的模块,改以 NVidia 的缺省功能。 Load "glx" # 上面这一段如果不存在,就手动创建吧 # Load "dri" # Load "GLCore" # 如果有出现 Load dri 与 GLCore ,请将他注解掉。到此为止,就已将您的系统安装上最新的 NVidia 的显卡驱动程序啰。 好啰,那您就赶紧试看看新的显卡芯片的功能吧。 而如果有什么疑问的话,查阅一下 /var/log/nvidia 开头的注册表看看吧! ^_^