X11与UNIX内核配置全解析
1 X11相关内容
1.1 X的启动方法
X有多种启动方法,常见的有X显示管理器(如
xdm
)和与CDE相关的
dtlogin
。这些程序通常在系统启动时作为守护进程运行,负责保持X服务运行并让用户登录。启动后,会出现一个带有登录窗口小部件的窗口,提示用户输入用户名和密码。用户成功登录后,系统会启动用户的X环境及所需的一切。
不过,对于支持多个窗口系统的站点,手动使用
xinit
程序启动X可能是更好的选择。用户先以常规方式登录,然后执行
xinit
命令。该命令会调用用户指定的程序启动服务器和客户端,并等待其中一个结束。当X客户端退出时,
xinit
会终止X服务器。由于用户指定的程序可以是shell脚本,这提供了很大的灵活性,但界面不够友好,因此
xinit
不适合普通终端用户。
xinit
是启动X的核心程序,但不是唯一的。
startx
脚本是
xinit
的前端,提供了更好的用户界面,有些X版本使用
x11start
脚本。
如果使用本地显示器并从命令行激活
xinit
,启动过程如下:
1.
xinit
首先为本地显示器启动X服务器。默认情况下,它会启动
/usr/bin/X11/X
(通常是指向实际服务器程序的链接),但可以通过在用户的
$HOME/.xserverrc
文件中输入其他命令来覆盖默认值。
2. 启动X服务器后,
xinit
会查找名为
$HOME/.xinitrc
的shell脚本。如果该文件不存在,则使用系统范围的默认文件
/usr/lib/X11/xinit/xinitrc
。
3. 如果两个文件都缺失,
xinit
会启动默认的
xterm
会话:
xterm -geometry + 1 + 1 -n login -display:0
并将单个
xterm
窗口发送到本地显示器,让用户开始使用。
下面是一个
xinit
系统范围配置文件
xinitrc
的示例:
#!/bin/sh
userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/usr/lib/X11/xinit/.Xresources
sysmodmap=/usr/lib/X11/xinit/.Xmodmap
# merge in defaults and keymaps
if [ -f $sysresources ]; then
xrdb -merge $sysresources
fi
if [ -f $sysmodmap ]; then
xmodmap $sysmodmap
fi
if [ -f $userresources ]; then
xrdb -merge $userresources
fi
if [ -f $usermodmap ]; then
xmodmap $usermodmap
fi
# start some nice programs
twm&
xclock -geometry 50 × 50 - 1 + 1 &
xterm -geometry 80 × 50 + 494 + 51 &
xterm -geometry 80 × 20 + 494 - 0 &
该配置文件会在后台启动标签窗口管理器(
twm
),并启动时钟和两个
xterm
窗口。
.xinitrc
文件和
.xsession
文件有很多相似的规则,因此
.xinitrc
文件常被链接到
.xsession
。但在链接之前,需要考虑以下三点:
1.
.xsession
文件通常是shell脚本,但实际上可以是任何可执行文件,而
.xinitrc
文件必须是Bourne shell脚本。
2.
.xsession
文件必须是可执行文件,而
.xinitrc
文件不必可执行。
3.
.xsession
脚本不会继承用户登录shell的环境,而
.xinitrc
脚本会继承启动
xinit
的shell环境。
1.2 永久X11安装
X11包(如今主要是CDE包)通常是UNIX安装的标准部分。在UNIX安装完成后,X11基本可以使用,但通常需要进行特定于站点的设置,尽管默认设置在大多数情况下也能工作。对于某些UNIX平台,如果支持特定于供应商的X版本,甚至可以跳过X11包的安装。不过,为了在系统重启后正常使用,需要对X11的
rc
启动初始化进行适当配置。
过去,X11的
rc
设置是必需的,因为X11曾经是可选软件,需要后续添加、测试并集成到UNIX系统中。现在,X11在系统启动时通过相应的
rc
初始化脚本启动,这与所有UNIX守护进程的启动方式相同。不同UNIX版本的启动方式如下表所示:
| UNIX平台 | 启动脚本或文件 | 示例 |
| — | — | — |
| Solaris 2.x |
dtlogin
|
$ ls -li /etc/init.d | grep "dtlogin"
203657 -rwxr--r-- 4 root sys 2613 Jun 26 1998 dtlogin
$ ls -li /etc/rc2.d | grep "dtlogin"
203657 -rwxr--r-- 4 root sys 2613 Jun 26 1998 S99dtlogin
$ ls -li /etc/rc0.d | grep "dtlogin"
203657 -rwxr--r-- 4 root sys 2613 Jun 26 1998 K10dtlogin
|
| HP - UX |
dtlogin.rc
|
$ ls -l /sbin/init.d | grep dtlogin
-r-xr-xr-x 1 bin bin 3002 May 30 1998 dtlogin.rc
$ ls -l /sbin/rc3.d | grep dtlogin
lrwxr-xr-x 1 root sys 23 Jun 10 1998 S990dtlogin.rc -> /sbin/init.d/dtlogin.rc
$ ls -l /sbin/rc2.d | grep dtlogin
lrwxr-xr-x 1 root sys 23 Jun 10 1998 K100dtlogin.rc -> /sbin/init.d/dtlogin.rc
|
| HP VUE |
/etc/inittab
|
vue:34:respawn:/usr/vue/bin/vuerc
|
| SunOS 4.1.x |
/etc/rc.local
|
if [ -f /usr/bin/X11/wdm ]; then
/usr/bin/X11/xdm; echo -n "XDM"
fi
|
| IRIX |
/etc/inittab
|
xw:23:respawn:/usr/bin/X11/xdm -nodaemon
|
| AIX |
/etc/rc.tcpip
|
start /usr/bin/X11/xdm "$src_running"
|
1.3 一些与X相关的命令
X环境非常丰富,为用户提供了很多功能。除了友好的环境,X还带来了许多新的、强大且通用的实用程序(命令),可用于脚本编程,使脚本更强大和高效。以下是一些与X相关的命令:
-
xwd
:用于转储X窗口的图像,将窗口图像存储在特殊格式的转储文件中,供其他X实用程序进行重新显示、打印、编辑、格式化、存档、图像处理等操作。
-
xwud
:X图像显示程序,用于读取
xwd
生成的转储文件并在窗口中显示图像。
-
xpr
:用于打印X窗口转储文件,将
xwd
生成的窗口转储文件格式化为可在PostScript和其他PCL兼容打印机上输出的格式。
xwud
是
xwd
的补充工具,两者可以很好地结合使用。例如,可以使用
xwd
将X显示的图像保存到文件中,然后使用
xwud
在另一个X显示器上显示该图像,还可以通过
xpr
进行打印。
2 UNIX内核配置
2.1 内核重新配置简介
UNIX内核是管理系统硬件的操作系统部分,它是操作系统和底层硬件之间的控制软件,将所有系统设备整合为一个可由操作系统控制的功能系统。内核在系统运行时驻留在内存中,否则系统性能会很差。
由于内核是依赖于站点的内存驻留可执行程序,因此需要针对特定的UNIX系统实现进行适当配置。每个安装的UNIX系统都有一个已配置的内核,通常是适用于大多数系统实现的通用内核。但特定的站点条件和系统任务可能需要不同的内核配置,这就需要进行内核重新配置。
一般来说,重新配置内核意味着创建或修改适当的内核配置文件,并在大多数情况下编译重新配置后的内核。所有内核更改都需要在系统重启后生效,因为新配置的内核只能在下一次系统启动时被调用。
内核重新配置是UNIX设计者定义的常规过程,管理员必须严格遵循现有规则,否则内核重新配置可能会失败,导致UNIX系统出现问题,甚至无法启动。管理员需要知道如何处理这种情况,充分理解这个过程对于成功处理问题非常有帮助。
BSD和System V的内核配置文件和重新配置过程有很大不同,不同供应商之间也存在显著差异。因此,更适合讨论特定于供应商的内核重新配置。
由于内核的特性,几乎不可能创建适用于任何情况的“通用内核”。不同的硬件配置需要不同的内核配置,需要找到一个平衡点。有些系统出厂时配备了最小内核,添加新硬件或软件时可能需要进行更改。通常,安装新软件或应用与内核相关的操作系统补丁时,如果需要更改内核,安装过程会自动完成这些更改,但都需要重启系统才能生效。
2.2 内核配置数据库
BSD和System V都使用内核配置文件来指定和保存配置数据。传统上,配置数据需要编译到内核二进制文件中,以便加载到系统内存中使用。通常使用某种前端
config
命令(有时名称不同,但目的相同)来构建内核,一般将UNIX内核视为C程序,使用
make
等UNIX实用程序进行编译和安装。前端
config
命令读取内核配置文件并生成相应的内核二进制文件,这个过程通常需要多个步骤,期间会调用其他UNIX命令并使用其他文件。一般来说,内核是离线构建的,在下次系统启动时执行。
Solaris的方法略有不同,其内核的某些部分在系统启动时在线构建。
在内核配置数据库中指定条目并不意味着系统必须拥有相应的硬件设备或外设,而是表示内核将准备好支持这些设备或外设。系统在启动时会检查当前的硬件配置,并初始化所有现有设备和外设。如果内核配置文件中缺少某个现有设备的条目,系统将无法支持该设备。
有人可能认为内核配置文件应包含所有可能的条目,以确保支持任何系统硬件配置。但这样会创建一个庞大、消耗内存且执行缓慢的内核映像。另一方面,将内核配置精简到与现有系统硬件配置完全匹配可能会导致内核过于受限,不利于未来系统升级。因此,需要找到一个满意的折衷方案。
需要严格区分内核配置文件和内核本身。内核配置文件是一个ASCII文件,定义了所有非默认的内核数据和参数。内核(或内核映像)是构建好的内核的映像,是一个驻留在内存中的可执行文件,提供系统硬件和操作系统之间的接口。修改内核配置文件并不意味着修改内核本身,还需要进行编译(Solaris除外,它可以在线重建内核)。
2.3 BSD类内核配置方法
以SunOS为例,它是BSD UNIX的典型代表,其内核配置结构有助于理解内核管理。在BSD平台上,内核配置文件通常位于
/usr/sys/conf
目录,在SunOS中是
/usr/share/sys/sun4c/conf
。内核配置文件没有标准名称,通常以安装它的机器名称命名,但通用内核也能正常工作。名为
GENERIC
的大型内核配置文件是UNIX安装的一部分,它配置了系统的所有标准设备,包括网络设备,无需修改即可运行基本的本地和网络服务。
2.3.1 基本配置条目
内核包含一个标识字符串,有助于确定配置文件的名称。例如,对于通常的内核二进制文件
vmunix
:
$ strings /vmunix | grep SunOS
SunOS Release 4.1.3 (PATSY) #1: Fri Feb 25 13:59:37 EST 1996
括号内的字符串是配置文件的名称,在这个例子中,内核配置文件名为
patsy
,内核二进制文件(内核映像)名为
vmunix
。
配置文件包含一系列单行条目,指定内核配置的不同方面。基本有12种不同类型的配置行,如下所示:
1.
machine
:标识系统的架构,不应更改。
2.
cpu
:标识特定的CPU型号,通常是几种型号。不建议更改,但构建仅适用于一种系统类型的内核可以减小内核大小。
3.
ident
:内核的标识符,应与配置文件和构建目录的名称相同,不是内核映像文件的名称(通常是
vmunix
)。
4.
maxusers
:最重要的配置参数,控制最重要的内核表的大小,是系统能够同时舒适服务的用户数量的估计值,但不是系统支持的最大用户数限制。减少
maxusers
可以增加可用内存,但会降低系统支持的有效用户数、同时运行的进程数和可打开的文件数等,因此需要进行适当的权衡。
5.
timezone
:系统运行的时区,由于需要考虑各种国际计时规则,设置变得非常复杂。
6.
config
:可能有多个
config
行,用于指定内核可执行文件的实际名称、引导分区的位置以及交换和转储分区的位置。通常,这些参数在单个
config
行中指定多个参数,如果缺少某些参数,内核将使用默认值。
7.
options
:内核支持的各种选项,通常定义某些可选的系统功能。仅配置内核是不够的,系统还必须有相应的硬件和软件支持。
8.
pseudo - device
:可能有多个伪设备行,每行告诉内核包含一个技术上是设备驱动程序但不对应物理设备的软件选项,大多数与网络和窗口系统相关。虽然看起来可以消除一些以节省空间,但实际上由于网络和窗口系统对现代系统至关重要,很难去除。
9.
device - driver
:有时仅指定为
device
,描述除磁盘和磁带控制器、磁盘和磁带驱动器以及总线接口之外的所有设备。
10.
controller
:描述磁盘控制器、磁带控制器和总线接口(即连接一个总线到另一个总线的控制器),如今最常见的是SCSI控制器。
11.
disk
:描述磁盘驱动器,由于大多数磁盘控制器可以处理两个或更多磁盘驱动器,因此每个磁盘驱动器都需要一个
disk
行。如今,磁盘通常连接到SCSI控制器。
12.
tape
:描述磁带驱动器,与
disk
行的规则相同。
以下是SunOS 4.1.3上
GENERIC
配置文件的示例:
#
# @(#) GENERIC from master 1.28 90/09/21 SMI
#
# This config file describes a generic Sun - 4c kernel, including all
# possible standard devices and software options.
#
# The following lines include support for all Sun - 4c CPU types.
# There is little to be gained by removing support for particular
# CPUs, so you might as well leave them all in.
#
machine "sun4c" # Identifies the system's architecture and model
cpu "SUN4C_60" # Sun - 4/60 (it's really for all the Sun - 4c's)
#
# Name this kernel GENERIC.
#
ident "GENERIC" # To rename kernel, modify this name. If "GENERIC"
is used, the kernel name corresponds to the name
of the kernel configuration file.
# This kernel supports about 8 users. Count one user for each
# timesharing user, one for each window that you typically use, and one
# for each diskless client you serve. This is only an approximation used
# to control the size of various kernel data structures, not a hard limit.
#
maxusers 8 #The most important parameter that controls the
size of the most important kernel tables, it is an
estimated value of the users that system will serve
without a decrease in the system performance
(taking into account additional load, as NFS, etc).
This is not a hard limit!
#
# Include all possible software options. #There may be any number of options lines, which
request certain optional system features.
# The INET option is not really optional; every kernel must include it.
options INET # basic networking support — mandatory
#
# The following options are all filesystem related. You only need
# QUOTA if you have UFS. You only need UFS if you have a disk.
# Diskless machines can remove QUOTA, UFS, and NFSSERVER. LOFS and TFS
# are only needed if you're using the Sun Network Software Environment.
# HSFS is only needed if you have a CD - ROM drive and want to access
# ISO - 9660 or High Sierra format CD discs.
options QUOTA # disk quotas for local disks
options UFS # filesystem code for local disks
options NFSCLIENT # NFS client side code
options NFSSERVER # NFS server side code
options LOFS # loopback filesystem — needed by NSE
options TFS # translucent filesystem — needed by NSE
options TMPFS # tmp (anonymous memory) filesystem
options HSFS # High Sierra (ISO 9660) CD - ROM filesystem
options PCFS # Unix access to MS - DOS filesystem
#
.....
.....
#
# Build one kernel based on this basic configuration.
# It will use the generic swap code so that you can have
# your root filesystem and swap space on any supported device.
# Put the kernel configured this way in a file named "vmunix".
Config vmunix swap generic # Specifies the actual name of the kernel executable, the
location of the boot partition, and the locations of the
swapping partitions (by default, those are the "a" parti−
tion on the first disk for the root, and the "b" partition
for the primary swapping partition).
#
# Include support for all possible pseudo−devices. # Pseudo−device lines tell the kernel to
include certain software drivers that
don't correspond to physical (hardware)
devices.
#
# The first few are mostly concerned with networking.
# You should probably always leave these in.
pseudo−device pty # pseudo−tty's, also needed for SunView
pseudo−device ether # basic Ethernet support
pseudo−device loop # loopback network – mandatory
#
.....
.....
#
# The following section describes which standard # These lines spell out the configuration
of the system's peripherals in more detail.
# device drivers this kernel supports.
通过以上内容,我们对X11的启动、安装和相关命令以及UNIX内核的配置有了全面的了解。无论是X11的灵活使用还是内核的精细配置,都需要我们根据具体的系统需求和硬件环境进行合理选择和操作。希望这些知识能帮助你更好地管理和使用UNIX系统。
2.3.2 内核配置过程
在BSD平台上,内核配置过程通常包括以下步骤:
1.
选择或创建配置文件
:可以使用通用的
GENERIC
配置文件,也可以根据需求创建自定义的配置文件。
2.
修改配置文件
:根据系统的硬件配置和需求,修改配置文件中的条目。例如,如果系统添加了新的磁盘驱动器,需要在配置文件中添加相应的
disk
行。
3.
编译内核
:使用
config
命令和
make
工具编译内核。以下是一个简单的流程图展示这个过程:
graph LR
A[选择或创建配置文件] --> B[修改配置文件]
B --> C[运行config命令]
C --> D[运行make命令]
D --> E[生成内核二进制文件]
- 安装内核 :将编译好的内核二进制文件安装到系统中。通常需要将新内核文件复制到适当的位置,并更新引导加载程序的配置。
- 重启系统 :重启系统以使新内核生效。
2.3.3 可用的UNIX命令
在BSD平台上,用于内核配置的主要命令是
config
和
make
:
-
config
:读取内核配置文件并生成相应的内核源代码。例如:
config /usr/share/sys/sun4c/conf/patsy
上述命令将根据
patsy
配置文件生成内核源代码。
-
make
:用于编译和安装内核。常见的
make
目标包括:
-
make depend
:检查内核源代码的依赖关系。
-
make kernel
:编译内核。
-
make install
:安装编译好的内核。
以下是一个完整的内核配置和编译示例:
# 选择配置文件
cd /usr/share/sys/sun4c/conf
# 运行config命令
config patsy
# 进入生成的内核源代码目录
cd ../sun4c/patsy
# 检查依赖关系
make depend
# 编译内核
make kernel
# 安装内核
make install
2.4 不同UNIX平台的内核配置差异
不同的UNIX平台在内核配置方面存在显著差异,以下是一些主要平台的特点总结:
| UNIX平台 | 内核配置文件位置 | 配置文件命名 | 启动相关文件 |
| — | — | — | — |
| BSD(以SunOS为例) |
/usr/share/sys/sun4c/conf
| 通常以机器名命名,也可用
GENERIC
|
/etc/rc.local
|
| System V(以Solaris为例) | 因具体情况而异 | 无固定标准 |
/etc/init.d
、
/etc/rc2.d
、
/etc/rc0.d
等 |
这些差异主要源于不同平台的设计理念和历史发展。管理员在进行内核配置时,需要根据具体的平台和需求进行操作。
3 总结与建议
3.1 总结
本文详细介绍了X11的启动方法、永久安装以及相关命令,同时深入探讨了UNIX内核的重新配置,包括内核配置数据库、BSD类内核配置方法以及不同UNIX平台的内核配置差异。
X11提供了丰富的功能和实用命令,为用户和管理员带来了便利。在启动X时,可以根据不同的需求选择合适的启动方法,如
xdm
、
dtlogin
或
xinit
。对于X11的永久安装,需要根据不同的UNIX平台进行相应的
rc
启动初始化配置。
UNIX内核的重新配置是一个复杂但重要的过程,需要严格遵循规则。不同的硬件配置和系统任务可能需要不同的内核配置,管理员需要根据具体情况进行调整。BSD和System V平台在内核配置文件和重新配置过程上有很大差异,管理员需要熟悉各自平台的特点。
3.2 建议
-
X11使用建议
-
对于普通用户,建议使用
xdm或dtlogin启动X,以获得友好的登录界面。 -
对于脚本编程和高级用户,可以尝试使用
xinit手动启动X,以获得更大的灵活性。 -
合理使用
xwd、xwud和xpr等命令,提高工作效率,如进行窗口图像的保存、显示和打印。
-
对于普通用户,建议使用
-
内核配置建议
- 在进行内核重新配置之前,备份现有的内核和配置文件,以防止配置失败导致系统无法启动。
- 仔细研究系统的硬件配置和需求,合理修改内核配置文件,避免过度精简或包含过多不必要的条目。
- 熟悉所在UNIX平台的内核配置过程和命令,严格按照步骤进行操作。
- 定期检查系统的硬件和软件变化,及时更新内核配置,以确保系统的稳定性和性能。
通过对X11和UNIX内核配置的深入了解和合理应用,管理员可以更好地管理和维护UNIX系统,为用户提供更稳定、高效的工作环境。
X11启动与UNIX内核配置详解
超级会员免费看
33

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



