安装X Window窗口系统
!安装X Window窗口系统安装X Window的提示
安装X Wi n d o w (以下简称X )的注意事项如下:
. 尽快将所有文件复制下来。理想的状况是在开始安装系统之前,你可以将光盘上所包含
的文件打印出来。
. 首先,对已有的配置文件尽量少做更动。如果你是第一次安装X,我们推荐你使用缺省
的目录来安装那些系统的各个不同的部分,只有在有确实需要更动目录名称时,才考虑
重新安装。(如果你不这样做,当有些问题发生时,你将无法知道,它真的是一个问题还
是你安装时犯了一个小错误。)
. 如果你是用这次发行的版本来建立一个标准的系统,你几乎不需要做任何更动便可完成
安装—配置文件已正确地设定好了。
. 当开始安装时,对大多数的系统而言,不需明确指定系统的形态,它的建立是根据C语
言的预处理器来定义系统名称,从而自动找到的。
. 在你熟悉c o r e版之前不要安装contrib 软件,因为它安装费时,且易产生问题,当熟悉系
统之后,你可能总会修改一些配置参数。
. 如果真的需要使用不同缺省值的配置,请阅读文件$ TOP/util/imake.includes/ README ,
你可得到关于如何改动的信息。
B.2 建立此版本
本次发行的软件分为两类:一部分核心软件由X协会提供,另一部分则由其他厂商提供。
要使核心软件这一部分能在大多数的地方重新配置、编译和安装存在一定的难度,而那些其他
厂商开发的部分,也就是说,未经X协会标准编译和测试的部分则只能自行逐一建立。在
u t i l / s c r i p t s中的x i m a k e . s h可能对I m a k e f i l e s和Makefiles 非常有用。
几乎所有在核心软件中的makefiles 都是由名叫imake 的实用程序所产生的。所有的
Makefiles 初始版本均包含了在哪些地方不能使用imake (无疑地,在特定的机器上需要修正)。
无论如何,它可以使用目录u t i l / i m a k e . i n c l u d e s /中的文件s i t e . d e f和* . m a c r o s中的参数,来重新配
置核心软件。
B.3 安装摘要
欲加载和安装此次发行的X Window System,将需要:
1)读完本次发行的备忘录。
2)建一个你读取软件的目录(通常名称类似/ u s r / l o c a l / s r c / X或/ s r c / R 3 1)。核心软件将需要
大约30 MB的空间,用户软件需要超过80 MB的空间。
3)既然用户软件必须自行建立,你可以等到以后再加载。
4)阅读文件u t i l / i m a k e . i n c l u d e s / R E A D M E以了解如何配置特定的X系统。同样地,依照目
录服务程序/ddx/ 中R E A D M E文件来计划安装服务程序。
5)如果你计划在多部机器上编译这个版本并且要有一个分类文件系统,你可能希望每一
个目的机器上依照u t i l / s c r i p t s / l n d i r.sh 的说明来建立符号连接树,这样就允许所有的机器使用X
的同一组原始程序。
6)如果你是在M a c i n t o s h机器上安装,确定你是从目录服务程序/ d d x / m a c I I执行R 3
s e t u p . s h程序。它用来在u t i l / c p p中的公共源代码中建立一个C的预处理器,和修正一些放错位
置的系统文件。如果你是在一部S U N计算机上,确定你在文件u t i l / i m a k e . i n c l u d e s / S u n . m a c r o s的
上面设定了四个O S的参数。这样作可防止在不同的SunOS 编译器下产生的错误。如果你是在
A p o l l o上安装,确定你是使用9.7.1 或更后面版本的C编译器,否则,服务程序将无法正确编
译。
7)确定你已遵循所有和机器特性有关的指示,并且imake 也是依你的机器的特性而配置
的。
8)当你完成了配置,你可以准备安装c o r e版。注意那些在u t i l / i m a k e . i n c l u d e s /中的. m a c r o s
文件。它们在接近顶端有一行设定一个m a k e的变量名称为BOOTSTRAPCFLAGS 。如果这个
变量值是空白,你可以用下列的命令开始安装:
% make World > & make.world &
如果不是空白,你必须将此定义附加到命令行上。这可用imake 对所有的编译器设定特定
的cpp 符号。(如果你在不同的系统安装,见u t i l / i m a k e / i m a k e . c)在所有的c o r e版提供的m a c r o
文件中,只有A / U X需要这个标志:
% make BOOTSTRAPCFLAGS=-DmacII World >& make.world &
9)当m a k e完成后,检查日志文件是否有问题。如果没有严重的问题, A / U X的用户可以忽
略有关枚举类型冲突的编译警告,Applo 的用户可以忽略最优化的警告。
1 0)如果一切正常且建立了正确程序,测试一些不同的程序(如s e r v e r、x t e r m、x i n i t、e t c)。
你也许需要在根目录执行s e r v e r或x t e r m,如果你执行上有问题,第二部的工作站或终端机将很
有用。
11)对你旧版的X头文件、二进制文件、字体、库等作备份。
1 2)到build tree的顶端并键入:
% make install >& make.install
在大多数的系统上,xterm 程序必需把s e t u i d安装到根目录, xload 程序必需把setguid 安装
到那些属于/dev/kmem 的文件中。
1 3)如需要安装手册,在build tree顶端键入:
% make install.man
1 4)如果你要建立和安装lint libraries,在build tree的顶端输入:
% make install.ln
如果是第一次安装X,可能也需要以下的步骤。检查一下在s e r v e r / d d x目录中不同的
R E A D M E文件中附加的指示。
1 5)加入设备驱动程序或重新配置内核。
1 6)建立附加的虚拟终端机。查看操作系统说明/ d e v / M A K E D E V并询问系统管理员相关的
细节部分。
1 7)阅读有关新的显示管理器xdm 的手册,这个程序提供了一个自动执行X的方法,同时
为了初学者提供了很多非常好的界面符号。
1 8)确定所有的X 11 的用户的搜索路径中均为B I N D I R的目录(通常为/ u s r / b i n / X 11)。
附录B计安装X Window窗口系统计计411
B.4 操作系统需求
X受欢迎的原因之一是与操作系统无关。虽然我们讨论的样例均为在U N I X系统下,但有
许多非U N I X操作系统的制造厂商也提供X。本次发行的服务程序已在下列系统建立:
4 . 3 + t a h o e
Ultrix 3.0 FT2(Ultrix 2.0 )
SunOS 3.4
HP-UX 6.01
Apollo Domain/IX 9.7
IBM AOS 4.3
A/UX 1.0
如果使用较早的版本,可能招致一些麻烦,特别是服务程序将无法在IBM 4.2A第二次发行
版上执行。在server/ddx/ 中不同的R E A D M E文件描述了对编译器、函数库、预处理器等等的特
定需求。例如前述的A/UX 1.0的用户将需要建立一个新版的C预处理器,而A p o l l o的用户将需
要9 . 7 . 1版的C编译器。
你应在使用X前先确定你的网络系统和相互通信实用程序作用正常。如果像t a l k和r l o g i n这
样的程序无法工作,X大概也不行。
B.5 使用符号链接
本发行版使用符号链接以避免文件重复。如果你在未提供配置文件情况下建立本发行版,
你必须在u t i l / i m a k e . i n c l u d e s / * . m a c r o s文件中检查L N配置参数。如果操作系统不提供软件链接,
L N需被设定为建立硬链接或拷贝原始文件。
如果需要在安装后将本发行版移动到其他的机器,可以用tar 替代C P或r c p以保留日期和链
接,通常可用下列的命令完成:
% (chdir/usr/local/src/X;tar cf - .) | \
rsh othermachine“(chdir/moredisk/X; tar xpBf -)"
可向系统管理员咨询以获得帮助。
B.6 配置本发行版
这个发行版广泛使用imake 实用程序, 它可从特定机器的I m a k e f i l e s中产生机器特有的
M a k e f i l e s。假如你不在乎可移植性, 虽然我们建议你去使用imake 与makedepend, 但是仍可以
使用m a k e f i l e s。
i m a k e的配置文件在u t i l / i m a k e . i n c l u d e s目录中。. m a k e f i l e s文件是由一个称做imake.tmpl 的
模板文件、一个机器特有的.macros 文件与一个站点特有的site.def 文件所产生的。除极少的
例外情况, 配置参数应该为cpp 符号。它可以在每个服务器的基础上定义,或在给定站点里的
所有服务器上定义。不应该修改此模板文件。
u t i l / i m a l e . i n c l u d e s / R E A D M E文件指出了每一个配置参数以及它可以设定的值。缺省值的
选择是考虑到了可适用于多种机器且易于维护。站点特有的配置应在s i t e . d e f文件内使用下列
语法描述:
#ifndef BuildParameter
#define BuildParameter site-specific-value
# e n d i f
412计计第六篇X Window 系统的内部结构和使用
B.7 编译本发行版
配置参数设定后, 你应该可以在构造树的最上层用下列命令来编译core 软件:
% make World > &make.world &
若在建立过程中, 将make.log 这个特殊文件删除, 则请不要将输出重定向到m a k e . l o g中。依
照使用机器的不同, 这个步骤将花费2~12 小时, 且在大多数的机器上皆能顺利完成。
在所有Makefiles 与相关性都建好之后, 你必须重新启动以便使编译发生作用。请在构造
树的最上层输入下列命令:
%make -k > &make.out &
如果以后决定改变配置参数, 你将需要作另一个完整的编译过程。
B.8 安装发行版
假如每一个编译皆成功, 可以输入下列命令, 从建造树最上层安装软件:
# make install
假如你不想安装在根目录, 你必须建一些可写入的目录并安装它们, 然后检查在BINDIR 目
录(通常是/ U S R / B I N / X 11) 内的xterm 与xload 的所有权与保护模式。x t e r m必须把s e t u i d安装
至根目录以便它能设定虚拟终端机与更新/ e t c / u t m p。x l o a d需要把setuid 安装至根目录, 或把
s e t g i d安装至拥有文件/dev/kmem 的目录以使它们可以取得系统的平均负载。
假如/etc/termcap 与/user/lib/terminfo 数据库没有xterm 的入口,可参考在客户机/xterm 目
录内的样本入口。System V 的用户将需要用t i c实用程序编译terminfo 入口。
假如你计划使用xinit 程序去执行X, 你可能会想产生一个将指定的X指到适当服务程序的
链接(通常的名称像/ u s r / b i n / x 11/ 目录里的X m a c h i n e )。
假如你想安装使用手册, 请检查在util/imake.includes/ 里的M a m D i r e c t o r y R o o t、ManDir 与
LibManDir 三个配置参数, 并在构造树的最上层输入:
# make install.man
假如你喜欢建立与安装lint 程序库, 在构造树的最上层输入下列命令:
# make install.ln
最后, 确定所有用户在它们的PATH 环境变量都有BINDIR (通常是/ u s r / b i n / x 11 / )。
B.9 内核与特殊文件的注意事项
在某些机器上, 如果出现了一个新的设备驱动程序,则必须重建内核或至少经过重新配置。
假如你以前从未执行X, 你可能需要确定在你的内核配置文件中的c s r位置能与你的硬件相匹配。
另外, 你应该确定在系统启动时内核会自动配置显示器。
你可能需要为显示器、鼠标或键盘建立特殊的设备。例如:
# /etc/mknod/dev/bell c 12 2 # for bell on Sun
# MAKEDEV displays # for displays on the RT / P C
应把显示器设备文件上的保护模式设定成只有服务程序可以打开它。假如服务程序是以
/ e t c / i n i t启动, 这个保护可以被根用户读/写, 任何其他的人不能存取。
更详细的资料请看服务程序/ddx/ 目录里的README 文件与手册。
B.10 测试本发行版
即使你计划使用xdm 执行X,你也应该要从另一个终端机执行它, 以便检查每个安装部分
附录B计安装X Window窗口系统计计413
414计计第六篇X Window 系统的内部结构和使用
是否已安装且正常工作。
来自服务程序的错误信息将会显示在终端机上, 而不是写到xdm-errors 或/ u s r / a d m / X ? m s g s
文件中(? 是显示器的号码)。
测试服务程序最简单的方法是先进入/ u s r / b i n / x 11 (或任何你已安装X程序的地方)然后执行
xinit, 如下:
% cd/usr/bin/X11
% xinit
你应该可以看到一个灰色的带状图案覆盖屏幕、一个形状像“ X”的光标追踪着鼠标指针
以及一个终端机模拟窗口。如果没有这样的显示,请按下列方式检查:
1) 假如没有显示出灰色屏幕背景, 检查是否有在server/ddx/ 子目录内的README 里描述的
任何特殊设备文件的使用权(通常是保存在/ d e v /中)。
2) 假如背景出现, 但光标仍是白色方形。请确定字体是否已安装(特别是usr/lib/ X11 / f o n t s /
misc/ 里的字体c u r s o r. s n f。见配置参数D e f a u l t F o n t P a t h )。并确定在你的每一个字体目录都有一
个文件叫做f o n t . d i r。这个文件是由mkfontdir 程序产生的。服务程序用它来找出一个目录里的
字体。
3) 假如光标出现但不追踪鼠标指针, 请确定相应特定设备文件(像/dev/mouse) 已安装(见
服务程序的README 文件)。
4) 假如服务程序启动但不久之后变成黑色, 表示启动的客户程序(xterm 或x d m )停止运行
了。请确定xterm 安装在根目录并建立足够的虚拟终端机。假如你正执行xinit, 且在你的h o m e
目录一个有叫做.xinitrc 的文件,确定它是可执行的而且上一个它所启动的程序在前台执行(亦
即命令行尾端没有一个& 符号)。否则, .xinitrc 将立刻完成, 这也是xinit 所假设的以及你所想
要的。只要你有正确工作的初始窗口, 试着从xterm 执行其他的程序。若想用uwm 窗口管理器
定位一个新窗口, 可在闪动的方框出现时按下按钮1 (通常在鼠标的最左边按钮) :
% xlock -g 200x200-0+0 &
% uwm &
% xlogo &
% xeyes &
. . .
X Wi n d o w现在可以使用了, 读一下手册, 看看新字体, 你会从中得到乐趣。
B.11 建立额外的虚拟终端机
因为每个xterm 需要一个不同的虚拟终端机, 所以你应该给它们建立很多个虚拟终端机(在
一个小型多用户系统你可能至少要32 个)。每个ptr 有两个设备, 一个主控,一个从属, 它们通
常叫做/ d e v / t t y / [ p q r s t u ] [ 0 - f ]与/ d e v / p t y [ p q r s t u ] [ 0 - f ]。假如你没有最少的p与q行配置, 你应该要求
系统管理员加上它们。这通常是以/ d e v里执行的MAKEDEV script来完成:
# cd/dev
# ./MAKEDEV pty0
# ./MAKEDEV pty1
B.12 从/etc/rc启动X
本发行版提供一个可以从系统启动文件/ e t c / r c中执行X服务器的实用程序,叫做x d m。由
于考虑到可以很容易地适应不同工作站的需求, xdm可以周到地维护服务程序的执行, 提示输入
用户名与密码并管理用户的对话。当前样本配置使用外壳脚本, 以提供相当简单的环境。
附录B计安装X Window窗口系统计计415
xdm 灵活性的关键是它广泛使用资源, 允许站点管理员快速地测试不同的设置。当xdm 启
动时, 它读入一个配置文件(缺省是/ u s r / l i b / X 11/xdm/xdm-config 但可以用命令行指定-config) 列
出不同的数据文件、缺省参数以及启动与关机时执行的程序。因为它使用标准的工具箱资源文
件格式, 所以任何可以在xdm-config 文件设定的参数也可以在命令行使用-xrm 选项指定。
缺省结构如下:
D i s p l a y M a n a g e r.servers: /use/lib/X11 / X s e r v e r s
D i s p l a y M a n a g e r. e r r o r L o g F i l e : / u s e / l i b / X 11 / X d m - e r r o r s
DisplayManager*resource: /use/lib/X11 / X r e s o u r c e
DisplayManager*startup: /use/lib/X11 / X s t a r t u p
DisplayManager*session: /use/lib/X11 / X s e s s i o n
DisplayManager*reset: /use/lib/X11 / X r e s e t
服务程序文件包含要启动的服务器列表。errorLogFile 是xdm 重定向输出的文件。
r e s o u r c e文件包含xdm Login 窗口缺省的资源。特别的地方是可以指定特殊键的顺序(在
xlogin*login.ranslation resource), startup文件应该是一个程序或可执行的脚本, 它可以在用户打
入正确的密码之后执行。它对站点进行初始化、记录等的挂接。session 入口是用于指定会话
管理程序或可执行脚本的名称。假如用户在主目录内没有一个可执行的.xsession 文件, 有一个
简单的版本可提供一个简单的xterm 窗口与uwm 窗口管理器。最后, 在用户注销之后,将执行
一个复位程序或可执行的脚本。如果希望使用缺省配置执行xdm, 在b o o t文件加入下面一行(通
常叫做/etc/rc 或/etc/rc.local) :
/ u s r / b i n / X 11/xdm &
毫无疑问, 大多数站点想建立它们自己的配置。我们建议你们将站点特有的xdm-config 文
件与其他的xdm 文件放在不同的目录。假如将文件保存在/ u s r / l o c a l / l i b / x d m中,可用下面的命令
启动xdm :
/ u s r / b i n / X 11/xdm -config /usr/local/lib/xdm-config &
许多服务程序都假设它们是尝试读取键盘的唯一程序, 这样键盘设定成非阻断式I / O。不幸
的是, 某些/etc/getty 的版本(特别是A/UX) 将立刻显示一个零长度读取的连续流, 因为将它解释
成EOF 文件尾指示。最后/etc/init 将取消登录, 一直到某人打入下列命令:
# kill -HUP 1
在A/UX 下, 一个变通的方法是禁止从控制台登录,且从/ e t c / i n i t t a b中执行x d m。然而, 请
确定你存有一个旧的/etc/inittab 拷贝,以备在出错状况以及必须从网络上或单用户模式恢复登
录的时候使用。
另一个较少为人彻底研究的是如何设定一个帐号, 它的外壳是在client/xdm/ 里的x d m s h e l l
程序。缺省状况下,这个程序不会安装, 所以站点管理员需要特别查看它是否符合需求。
xdmshell 实用程序确定它执行于适当的终端机型号、启动x d m、等待它完成与重置控制台(如
果需要的话)。假如xdm 资源文件包含一个终止—显示器动作的对应, 就像下列命令:
xlogin*login.translations: #override Ctrl<Key>R: abort-display()
然后在xdm login 窗口按下指定键(上例是< C t r l - R > ), 控制台即可以被恢复。
xdmshell 程序通常安装在根目录, 但仅能被一些特殊的用户执行。这样以x d m s h e l l作为外
壳的帐号的人是唯一的:
% grep xdm /etc/passwd
X : a B 9 i 7 v h D Va82z:101:51:Acount for starting up X: (contd.)
/ t m p : / e t c / x d m s h e l l
% grep 51 /etc/group
x d m g r p : * : 5 1 :
% ls -g /etc/xdmshell
-rws--x--- 1 root xdmgrp 20338 Nov 1 01:32 /etc/xdmshell
假如xdm 资源不曾有一个键对应至abort-display() 动作,一般用户将没有方法直接登录到
控制台。
1. 支持旧系统—从/etc/init 启动X
警告下面所提供的适合较老的系统且在未来的发行版将不再提供。
Ultrix 与4.3bsd 使用/etc/ttys 配置文件的一个新的扩充格式, 它允许你指定一个窗口系统
与初始化时被执行的程序。虽然一般人比较喜欢使用x d m ,但系统仍然提供可在x t e r m里启动X
与一个从/etc/ttys 初始的xterm 窗口。
2. 建立ttyv 终端机
因为大多数的/etc/init 版本需要给每个/etc/ttys 的入口一个真实的终端行, 所以你必须给每
一个显示器指定一个虚拟终端机。虽然正常状态下x t e r m动态地配置一个p t y, 但是-L 选项可以
强迫它使用从/etc/init 传过来的虚拟终端机。
依照协议, 最高的小设备号码改名成tyv0, 次高的改为tyv1, 依此类推。最高的被改
为最低的, 可使他们不以正常地从低至高的搜索方法(大多数程序配置一个pty 的方法) 取得。
在仅有p与q的小系统, 下面的命令可用以将两个显示器设定成v终端机。
# cd /dev
# mv ttyqf ttyv0; mv ptyqf ptyv0
# mv ttyqe ttyv1; mv ptyqf ptyv1
从系统管理员那里可以获得更多的帮助。
3. 在/ e t c / t t y s中增加更多的窗口入口
只要你已经改变了虚拟终端机的名称, 就能为它们在/etc/ttys 增加一个入口。再次提醒这
个仅对具有以新的4.3bsd 格式启动窗口系统的系统有效, 不能用在使用4.2bsd 小进入口格式与
/etc/ttytype 的较老系统上使用。
x服务程序手册里包含关于设定/etc/ttys 入口的更详细叙述。通常, ttyv 置于文件的底部且
类似如下:
t t y v 0 " / u s r / b i n / X 11/xterm -L -grometry 80x24+0+0 -display :0"(contd。)
xterm off window="/usr/bin/X11/X :0"
注意,给X服务程序命令的服务程序号码的参数必须在前面置一个冒号。额外的命令行选项
可以在xterm 命令行或X命令行指定。然而,许多init 的版本具有相当小的程序名称缓冲区, 限
制了入口的长度。也有某些版本不允许在入口里有p o u n d记号, 这意谓着不能指定任意数目的
颜色, 这也是为什么要使用xdm 的原因。
只要你曾经增加或改变入口, 你必须通知init, 告诉它重读/ e t c / t t y s与重新启动。在根目录下
打入下列命令即可以达到这个目的:
# kill -HUP 1
这将会中止命令行上存在的进程, 所以应该只能由系统管理员去执行它。
页:
[1]