Ubuntu系统简介
Ubuntu系统目录结构
以下为Ubuntu目录的主要目录结构,您稍微了解它们都包含了哪些文件就可以了,不需要记忆。
/ 根目录
│
├boot/ 启动文件。所有与系统启动有关的文件都保存在这里
│ └grub/ Grub引导器相关的文件
│
├dev/ 设备文件
├proc/ 内核与进程镜像
│
├mnt/ 临时挂载
├media/ 挂载媒体设备
│
├root/ root用户的$HOME目录
├home/
│ ├user/ 普通用户的$HOME目录
│ └.../
│
├bin/ 系统程序
├sbin/ 管理员系统程序
├lib/ 系统程序库文件
├etc/ 系统程序和大部分应用程序的全局配置文件
│ ├init.d/ SystemV风格的启动脚本
│ ├rcX.d/ 启动脚本的链接,定义运行级别
│ ├network/ 网络配置文件
│ ├X11/ 图形界面配置文件
│
├usr/
│ ├bin/ 应用程序
│ ├sbin/ 管理员应用程序
│ ├lib/ 应用程序库文件
│ ├share/ 应用程序资源文件
│ ├src/ 应用程序源代码
│ ├local/
│ │ ├soft/ 用户程序
│ │ └.../ 通常使用单独文件夹
│ ├X11R6/ 图形界面系统
│
├var/ 动态数据
│
├temp/ 临时文件
├lost+found/ 磁盘修复文件
启动流程
Linux系统主要通过以下步骤启动:
1.
读取MBR的信息,启动Boot Manager
Windows使用NTLDR作为Boot Manager,如果您的系统中安装多个版本的Windows,您就需要在NTLDR中选择您要进入的系统。 Linux通常使用功能强大,配置灵活的GRUB作为Boot Manager,我们将在启动管理章节中向您介绍它的使用方式。
2.
加载系统内核,启动init进程
init进程是Linux的根进程,所有的系统进程都是它的子进程。
3.
init进程读取 /etc/inittab 文件中的信息,并进入预设的运行级别,按顺序运行该运行级别对应文件夹下的脚本。脚本通常以 start 参数启动,并指向一个系统中的程序。
通常情况下, /etc/rcS.d/ 目录下的启动脚本首先被执行,然后是 /etc/rcN.d/ 目录。例如您设定的运行级别为3,那么它对应的启动目录为 /etc/rc3.d/ 。
4.
根据 /etc/rcS.d/ 文件夹中对应的脚本启动Xwindow服务器 xorg
Xwindow为Linux下的图形用户界面系统。
5.
启动登录管理器,等待用户登录
Ubuntu系统默认使用GDM作为登录管理器,您在登录管理器界面中输入用户名和密码后,便可以登录系统。(您可以在 /etc/rc3.d/ 文件夹中找到一个名为 S13gdm 的链接)
更改运行级别
在 /etc/inittab 文件中找到如下内容:
# The default runlevel.
id:2:initdefault:
这一行中的数字 2 ,为系统的运行级别,默认的运行级别涵义如下:
0 关机
1 单用户维护模式
2~5 多用户模式
6 重启
服务管理
更改启动服务
在运行级别对应的文件夹中,您可以看到许多文件名以 S## 和 K## 起始的启动脚本链接。例如:
/etc/rcS.d/S35mountall.sh 挂载文件系统
/etc/rcS.d/S40networking 启用网络支持
/etc/rc2.d/S13gdm 启动登录管理器
/etc/rc2.d/S20makedev 创建设备文件
/etc/rc2.d/S23xinetd 启动超级进程
init进程将以 start 为参数,按文件名顺序执行所有以 S## 起始的脚本。脚本名称中的数字越小,它将被越早执行。例如在 /etc/rc2.d/ 文件夹中, S13gdm 文件名中的数字小于 S23xinetd , S13gdm 将比 S23xinetd 先执行。
如果一个脚本链接,以 K## 起始,表示它将以 stop 参数被执行。如果相应服务没有启动,则不执行该脚本。例如:
/etc/rc2.d/K20powernowd 针对某种硬件的电源管理支持
如果您想禁止某一服务在启动时自动运行,您可以将相应运行级别中的脚本由 S##xxx 重命名为 K##xxx 。
手动控制服务
您也可以手动运行带有以下参数的启动脚本,来控制系统服务。 - start 启动 - stop 停止 - restart 重启
例如:
/etc/rc2.d/K20powernowd start
有时您并不清楚当前运行级别,该运行级别下未必有相应脚本;而且此类脚本的前三位字符并不固定,不便于记忆。这时,可以直接使用 /etc/init.d/ 文件夹中的启动脚本( /etc/rcX.d/ 中的启动脚本链接到 /etc/init.d/ 文件夹下相应脚本),这也是推荐的方式。
例如:
/etc/init.d/powernowd start
Note:以上命令的位置并没有包含在环境变量的搜索路径中,所以要输入完整路径。
常用系统服务
acpi-support 高级电源管理支持
acpid acpi守护程序.这两个用于电源管理,非常重要
alsa 声音子系统
alsa-utils
anacron cron的子系统,将系统关闭期间的计划任务,在下一次系统运行时执行。
apmd acpi的扩展
atd 类似于cron的任务调度系统。建议关闭
binfmt-support 核心支持其他二进制的文件格式。建议开启
bluez-utiles 蓝牙设备支持
bootlogd 启动日志。开启它
cron 任务调度系统,建议开启
cupsys 打印机子系统。
dbus 消息总线系统(message bus system)。非常重要
dns-clean 使用拨号连接时,清除dns信息。
evms 企业卷管理系统(Enterprise Volumn Management system)
fetchmail 邮件用户代理守护进程,用于收取邮件
gdm gnome登录和桌面管理器。
gdomap
gpm 终端中的鼠标支持。
halt 别动它。
hdparm 调整硬盘的脚本,配置文件为 /etc/hdparm.conf。
hibernate 系统休眠
hotkey-setup 笔记本功能键支持。支持类型包括: HP, Acer, ASUS, Sony, Dell, 和IBM。
hotplug and hotplug-net 即插即用支持,比较复杂,建议不要动它。
hplip HP打印机和图形子系统
ifrename 网络接口重命名脚本。如果您有十块网卡,您应该开启它
inetd 在文件 /etc/inetd.conf 中,注释掉所有你不需要的服务。如果该文件不包含任何服务,那关闭它是很安全的。
klogd 重要。
linux-restricted-modules-common 受限模块支持。 /lib/linux-restricted-modules/ 文件夹中的模块为受限模块。例如某些驱动程序,如果您没有使用受限模块,就不需要开启它。
lvm 逻辑卷管理系统支持。
makedev 创建设备文件,非常重要。
mdamd 磁盘阵列
module-init-tools 从/etc/modules加载扩展模块,建议开启。
networking 网络支持。按 /etc/network/interfaces 文件预设激活网络,非常重要。
ntpdate 时间同步服务,建议关闭。
pcmcia pcmcia设备支持。
powernowd 移动CPU节能支持
ppp and ppp-dns 拨号连接
readahead 预加载库文件。
reboot 别动它。
resolvconf 自动配置DNS
rmnologin 清除nologin
rsync rsync守护程序
sendsigs 在重启和关机期间发送信号
single 激活单用户模式
ssh ssh守护程序。建议开启
stop-bootlogd 在2,3,4,5运行级别中停止bootlogd服务
sudo 检查sudo状态。重要
sysklogd 系统日志
udev & udev-mab 用户空间dev文件系统(userspace dev filesystem)。重要
umountfs 卸载文件系统
urandom 随机数生成器
usplash 开机画面支持
vbesave 显卡BIOS配置工具。保存显卡的状态
xorg-common 设置X服务ICE socket。
adjtimex 调整核心时钟的工具
dirmngr 证书列表管理工具,和gnupg一起工作。
hwtools irqs优化工具
libpam-devperm 系统崩溃之后,用于修理设备文件许可的守护程序。
lm-sensors 板载传感器支持
mdadm-raid 磁盘陈列管理器
screen-cleanup 清除开机屏幕的脚本
xinetd 管理其他守护进程的一个inetd超级守护程序
重要配置文件
!无论任何情况下,修改配置文件之前,先备份它!
建议使用这个命令: sudo cp xxx xxx_`date +%y%m%d_%H:%M` 。
当然这很麻烦,您可以新建一个名为 bak 的文件,内容如下:
#!/bin/bash
sudo cp $1 $1_`date +%y%m%d_%H:%M`
把它放在您能够记住的目录下,比如 /home ,执行命令 sh /home/bak xxx ,就可以将当前文件夹下的文件 xxx 另存为 xxx_yymmdd_HH:MM 的格式了
全局配置文件
系统初始化
/etc/inittab 运行级别、控制台数量
/etc/timezone 时区
/etc/inetd.conf 超级进程
文件系统
/etc/fstab 开机时挂载的文件系统
/etc/mtab 当前挂载的文件系统
用户系统
/etc/passwd 用户信息
/etc/shadow 用户密码
/etc/group 群组信息
/etc/gshadow 群组密码
/etc/sudoers Sudoer列表(请使用“visudo”命令修改此文件,而不要直接编辑)
Shell
/etc/shell 可用Shell列表
/etc/inputrc ReadLine控件设定
/etc/profile 用户首选项
/etc/bash.bashrc bash配置文件
系统环境
/etc/environment 环境变量
/etc/updatedb.conf 文件检索数据库配置信息
/etc/issue 发行信息
/etc/issue.net
/etc/screenrc 屏幕设定
网络
/etc/iftab 网卡MAC地址绑定
/etc/hosts 主机列表
/etc/hostname 主机名
/etc/resolv.conf 域名解析服务器地址
/etc/network/interfaces 网卡配置文件
用户配置文件
/etc/ 目录下的文件,只有root用户才有权修改。应用软件的全局配置文件,通常普通用户也不能够修改,如果要通过配置软件,来适应特殊需求,您可以修改用户配置文件。
用户配置文件通常为全局配置文件的同名隐藏文件,放在$HOME目录下,例如:
/etc/inputrc /home/user/.inputrc
/etc/vim/vimrc /home/user/.vim/vimrc
也有少数例外,通常是系统程序
/etc/bash.bashrc /home/user/.bashrc
软件安装
DPKG
Linux系统中,软件通常以源代码或者预编译包的形式提供。
软件源代码需要编译为二进制的机器代码才能够使用,安装比较耗时,不过您可以自行调节编译选项,决定需要的功能或组件,或者针对硬件平台作一些优化。
预编译的软件包,通常是由软件的发布者进行编译,您只要将软件拷贝到系统中就可以了。考虑到预编译软件包的适用性,预编译软件包通常不会针对某种硬件平台优化。它所包含的功能和组件也是通用的组合。
Ubuntu系统中,软件通常以 deb 格式的包文件发布,它是一种预编译软件包。deb包中除了包含已编译的软件,通常还包括软件的拷贝路径、对其它软件包的依赖关系纪录、比较通用的配置文件以及软件的描述、版本、作者、类别、占用空间等信息。
deb软件包命令遵行如下约定:
soft_ver-rev_arch.deb
soft
软件包名称
ver
软件版本号
rev
Ubuntu修订版本号
arch
目标架构名称
例如: azureus_2.4.0.2-0ubuntu2_all.deb
您需要使用 dpkg 命令来管理deb软件包:
dpkg -i | --install xxx.deb 安装deb软件包
dpkg -r | --remove xxx.deb 删除软件包
dpkg -r -P | --purge xxx.deb 连同配置文件一起删除
dpkg -I | -info xxx.deb 查看软件包信息
dpkg -L xxx.deb 查看包内文件
dpkg -l 查看系统中已安装软件包信息
dpkg-reconfigure xxx 重新配置软件包
有些时候,您使用 dpkg 安装一个软件包,系统会提示您该软件包依赖其它软件包。这时,您先安装其它软件包,直到满足依赖关系为止。或者同时安装多个软件包
dpkg -i aaa.deb bbb.deb ccc.deb
APT
如果一个软件依赖关系过于复杂,使用 dpkg 来安装它,并不是一个明智的选择,这个时候您就需要用到APT软件包管理系统。APT可以自动的检查依赖关系,通过您预设的方式来获得相关软件包,并自动安装配置它。事实上,在多数情况下,我们推荐您使用APT软件包管理系统。
APT系统需要一个软件信息数据库和至少一个存放着大量deb包的软件仓库,我们称之为 源 。 源 可以是网络服务器,安装CD或者本地软件仓库。您需要修改 /etc/apt/sources.list 文件,使APT系统能够连接到 源。
从以下页面中获得网络安装源的列表,并且根据您的网络环境,选择速度较快的源。
%E5%BF%AB%E9%80%9F%E8%AE%BE%E7%BD%AE%E6%8C%87%E5%8D%97/DapperDrake
APT系统主要包括 apt-get 和 apt-cache 等命令。通常是复合命令,包含若干个子命令。
apt-get install xxx 安装xxx
-d 仅下载
-f 强制安装
apt-get remove xxx 卸载xxx
apt-get update 更新软件信息数据库
apt-get upgrade 进行系统升级
apt-cache search 搜索软件包
Tip:建议您经常使用 sudo apt-get update 命令来更新您的软件信息数据库
APT系统修复
由于各种意外,APT系统可能会出现问题,使用如下命令,尝试进行修复:
apt-get -f install
源码包
对于绝大多数软件,我们建议您使用APT系统来安装它。在少数情况下,例如某软件没有以deb包的格式发布,或者需要定制适合自己的软件,您可以通过编译源代码的方式安装它。
首先需要下载软件的源码包,并且将它解包为一些源代码文件。并了便于管理,建议将下载的源码包移动到 /usr/local/src/ 目录下,并在这里解包。
sudo mv xxx.tar.gz /usr/local/src 移动源码包
cd /usr/local/src 进入“/usr/local/src/”目录
sudo tar -xzvf xxx.tar.gz 解包源码
cd xxx_ver/ 进行解包后的源码目录
源码目录中通常有一个 configure 脚本,用来配置即将开始的编译过程。您可以执行它
sudo ./configure [--prefix=/usr/loca/xxx ......]
它会自动检测软件的编译环境和依赖关系,并且生成 Makefile 文件。
使用带参数的命令 ./configure --help ,或者阅读 INSTALL 文件,查看该脚本允许的参数。例如使用 --prefix=/usr/local/xxx 参数,将软件的安装目录设定为 /usr/local/xxx/ 。(如果一定要将软件安装在单独目录下,建议您安装在这里)
现在执行 make 命令,系统会根据 Makefile 文件中的设定,通过 make 工具调用编译器和所需资源文件,将源代码编译成目标文件。
sudo make
执行 make install 命令, make 工具会自动连接目标文件和库文件,将最终生成的文件拷贝到 Makefile 文件设定的路径中,并且完成更改文件的属性,删除残留文件等活动。
sudo make install
现在,编译安装已经完成,为了更方便的使用它,需要给程序的可执行文件作一个符号链接。
sudo ln -sf /usr/local/xxx/可执行文件 /usr/local/bin/可执行文件
Tip:为了顺利的进行编译,至少需要安装 build-essential 软件包。
sudo apt-get install build-essential
[ 本帖最后由 枫叶飘飘 于 2007-6-29 02:09 编辑 ]
枫叶飘飘 (2007-6-29 01:26:12)
Xwindow简介
Xwindow是工作站图形系统的工业标准,它有多种不同的实现,Ubuntu系统中使用的为Xorg。
(比较前卫的图形界面系统XGL,实际代替X服务器的作用,另外还有与之配套的窗口管理器)
历史
当然,Xwindow有悠久的历史和传统,不过那不在我们讨论的范围。您要注意的有两点:
* Xwindow 和 Xbox 中的“X”本意是不同的, X 只是 W 后的一个字母,差不多应该这样理解,Xwindow 是 Window 的接班人 (注意,Window不是Windows)
* 同样,也不要把 Xwindow 说成是 Xwindows,那是一种亵渎!一切伟大的创造,都应得到应有的理解和尊重。
架构及原理
Xwindow使用服务器-客户端架构。无论本地图形界面,还是远程图形界面,都以同样的流程工作。这样便不需要分别进行设计和维护,极大的提高了网络透明性。
本地X客户端 ┐ ┌ 键盘
远程X客户端 ┼ X协议 ─ X服务器 ─ 硬件规范 ┼ 鼠标
远程X客户端 ┘ └ 显示器
Xserver
Xwindow系统服务器端,通过驱动程序(硬件规范)来管理硬件资源。
例如:当我们移动鼠标时,通过驱动程序,向 Xserver 发送信息:
“向右移动200点,向上移动100点”(向右上移动);“按下左键”……
Xserver作出如下响应:
1、上一次鼠标停止的坐标为600,500
2、向右200,向上100。现在鼠标位于坐标800,600
3、坐标800,600处,为窗口Firefox的“关闭”按钮
4、根据预设动作,将 “点击Firefox窗口的关闭按钮” 翻译为 “关闭窗口Firefox”
5、向X客户端Firefox发送一个“退出”消息
6、Xserver通过显示子系统(显卡、显示器),全程显示鼠标的位置和移动
* 事实上,向程序发送“退出”信号,通常窗口管理器完成……为了描述方便,这里暂不区分。稍后,我们将向您介绍 窗口管理器 的其它一些细节。
大多数的鼠标不需要专门的驱动程序,因为它们符合某一硬件规范,例如:有四个移动方向和三个键
Xclient
Xwindow系统客户端,通过X协议,实现与Xserver 的交互。
例如:
1、Xclient (假设Firefox) 接收Xserver的消息: 输入焦点在地址栏的范围内,“ubuntu.org.cn”,回车
2、Firefox根据预设动作,将这些消息识别为 “打开链接 ubuntu.org.cn”
3、Firefox向域名服务器请求 链接 “ubuntu.org.cn”。域名服务器将这个请求转换为 “” 和 IP地址211.148.131.7,发送回 Firefox
4、Firefox将 “”显示在地址栏(向Xserver发送请求,在地址栏位置显示这个地址)
5、Firefox向地址 211.148.131.7 请示显示页面。
6、Firefox将服务器发送回的页面显示在主窗口中
Xprotocol
Xwindow系统协议,Xserver和Xclient之间进行通信的规则
窗口管理器
Window Manager,一种特殊的Xclient。
使用窗口管理器时,Xserver并不直接与其它Xclient通信,而是通过WM中转,当一些消息被定义为WM指令时,它们会被拦截。例如Alt+F4关闭窗口、拖动标题栏……
消息“打开链接 ubuntu.org.cn”,具体内容如下:
输入焦点在地址栏的范围内,“ubuntu.org.cn”,回车
Xserver并不能直接判断焦点,而是这样:
1、Xserver向WM发送位置和点击的信息,WM根据当前的“焦点策略”确定激活(最上层)的窗口为Firefox
2、Xserver将Firefox显示在最上层,高亮显示它的标题栏
3、在窗口Firefox内点击地址栏,或者 Ctrl+L,Xserver将位置信息发送给WM,WM再发送给Firefox
4、Firefox判断当前焦点后,显示一个闪动的文字输入光标
5、Firefox将输入光标通过WM发送给Xserver,Xserver在屏幕相应位置进行显示
那么,“窗口管理器”到底能作些什么呢?其实它所作的一切都是管理窗口。例如:
1.
最上层的窗口会把其它窗口挡住
2.
它通常是一个“已激活窗口”,根据不同的“焦点策略”,窗口管理器确定被激活的窗口。
激活窗口标题栏高亮显示,接收大部分的键盘消息和窗口内的鼠标点击消息。
3.
为了美观和容易分辨,大多数窗口都要有标题栏和边框。
为了方便,标题栏上还要有一些按钮,比如:最小化,最大化,关闭(这些按钮是窗口管理器请求的小窗口)
4.
一个窗口可以在另一个窗口旁边显示,而不一定完全被遮挡。为了实现这一点,就要控制窗口显示的位置
5.
为了控制窗口的显示位置,需要将整个屏幕用座标描述,最好的办法是绘制一个填充整个屏幕的窗口,也就是根窗口。
6.
因为根窗口是最大的,所以它可以严严实实的遮挡任何窗口,为了避免这一点,根窗口永远在最底层。
这很形象的说明了为什么它叫作“根窗口” ……root
7.
根窗口不一定只有一个,大多数的窗口管理器可以使用 “工作区” ,来切换显示多个根窗口
8.
根窗口固定位置上通常放置一些其它Xclient的窗口,例如底部面板,顶部面板,侧面板,程序启动图标
9.
面板上又可以放一些其它的Xclient窗口,如任务条,启动栏,菜单……
任务条可以以图标显示正在运行的任务,还可以作其它的杂活,像自动挂载USB设备……
启动流程
我们知道 init 是linux的根进程,是所有进程的父进程。同样, xinit是所有Xwindow进程的根进程
Startx
startx 命令可以在命令行下启动图形界面。执行startx 命令时,实际执行这一命令:
xinit /etc/X11/xinit/xinitrc -- /etc/X11/xinit/xserverrc
根据脚本 /etc/X11/xinit/xserverrc 启动Xserver,同时根据脚本 /etc/X11/xinit/xinitrc 启动指定Xclient进程,例如窗口管理器
脚本 /etc/X11/xinit/xserverrc 以预设的参数运行程序 /usr/bin/X11/X
/etc/X11/xinit/xinitrc 脚本则指向 /etc/X11/Xsession ,依次启动 /etc/X11/Xsession.d 目录中的脚本
* 您可以在用户配置文件 ~/.Xsession 中定义使用的WM,它的优先级高于全局配置文件(对于GDM会话不起作用)
* startx启动时,并不会再进行身份认证。因为它启动的是 /etc/X11/Xsession.d/gnome-session ,而不是 GDM会话
GDM会话
Ubuntu系统启动时自动进入图形界面,不需要运行 startx 命令
在某些启动级别中,包含了gdm的启动脚本,例如 : /etc/rc2.d/S13gdm
1. 指向 /etc/gdm/gdm-cdd.conf 文件,加载预设视觉主题,启动 /usr/lib/gdm/gdmgreeter(登录屏幕)
2. 用户身份认证完成后,启动 /etc/X11/default-display-manager 这个文件中设定的默认窗口管理器 /usr/sbin/gdm
gdm在启动时,会要求用户名和密码,也就是我们看到的登录屏幕(gdmgreeter)
* /usr/share/xsessions 目录下为所有可用登录会话的脚本
配置文件
X服务器
X服务器的主要配置文件为 /etc/X11/xorg.conf
布局
Section "ServerLayout"
Identifier "Default Layout"
Screen "Default Screen" 0 0
InputDevice "Generic Keyboard"
InputDevice "Configured Mouse"
EndSection
* 定义了 布局标识 、 屏幕标识 、 键盘标识 、 鼠标标识
模块
Section "Module"
Load "i2c"
Load "bitmap"
Load "ddc"
Load "dri"
Load "extmod"
Load "freetype"
Load "glx"
Load "int10"
Load "type1"
Load "vbe"
EndSection
X核心字体路径
Section "Files"
FontPath "/usr/share/X11/fonts/75dpi"
FontPath "/usr/share/X11/fonts/100dpi"
FontPath "/usr/share/X11/fonts/misc"
FontPath "/usr/share/X11/fonts/cyrillic"
FontPath "/usr/share/X11/fonts/100dpi/:unscaled"
FontPath "/usr/share/X11/fonts/75dpi/:unscaled"
FontPath "/usr/share/X11/fonts/Type1"
FontPath "/usr/share/fonts/Chinese/wqy-bitmapfont"
EndSection
屏幕
Section "Screen"
Identifier "Default Screen"
Device "ATI Technologies, Inc. RV370 5B62 [Radeon X600 (PCIE)]"
Monitor "DELL E176FP"
DefaultDepth 24
SubSection "Display"
Depth 1
Modes "1280x1024" "1152x864" "1024x768" "800x600" "720x400" "640x480"
………………
EndSubSection
EndSection
* DefaultDepth 24 默认色深
* SubSection 可用色深及分辨率
显卡
Section "Device"
Identifier "ATI Technologies, Inc. RV370 5B62 [Radeon X600 (PCIE)]"
Driver "fglrx"
Option "KernelModuleParm" "agplock=0"
VideoRam 131072
EndSection
* Identifier 显卡标识
* Driver 显卡驱动(如不同正常启用图形界面,首先尝试"vesa")
* Option 显卡参数
* VideoRam 显存大小
显示器
Section "Device"
Identifier "ATI Technologies, Inc. RV370 5B62 [Radeon X600 (PCIE)]"
Driver "fglrx"
Option "KernelModuleParm" "agplock=0"
VideoRam 131072
EndSection
配置文件内部结构
/
├/ "ServerLayout" 布局
│├ "InputDevice" keyboard 键盘
│├ "InputDevice" mouse 鼠标
││
│└/ "Screen" 显示子系统
│ ├ "Monitor" 显示器
│ ├ "Device" videocard 显卡
│
│
├ "Files" 字体
└ "Module" 模块
X客户端
在 /etc/X11/Xsession 文件中可以发现下列内容
OPTIONFILE=/etc/X11/Xsession.options
SYSRESOURCES=/etc/X11/Xresources
USRRESOURCES=$HOME/.Xresources
SYSSESSIONDIR=/etc/X11/Xsession.d
USERXSESSION=$HOME/.xsession
ALTUSERXSESSION=$HOME/.Xsession
ERRFILE=$HOME/.xsession-errors
* OPTIONFILE=/etc/X11/Xsession.options 设定X进程的启动参数。例如允许用户进程allow-user-xsession
* Xresources X资源文件。许多程序保留了X接口,允许X服务器管理一些视觉选项,例如窗口内的字体,配色等
* xsession X进程。可以设置一些启动时自动运行的程序,也可以用来设定自己的窗口管理器(窗口管理器和桌面环境或者登录管理器是无关的)
字体
freetype渲染引擎
作为Xorg服务器的一个模块,freetype的功能包括读取Truetype字体信息,如大小、分辨率、编码等,并以之为依据渲染字体 - freetype2.x相对于freetype1.x 增加了抗锯齿等功能 - ( /etc/X11/xorg/conf 的 Module 字段中,可以选择字体渲染模块,建议使用默认的 freetype )
freetype只负责渲染字体。而查找字体,则可以由X服务器、X客户端或者字体服务器来完成。找到字体后,使用freetype引擎就地渲染
X核心字体
X服务器根据X客户端的请求(字符编码),查找字体并进行渲染,然后显示,我们称之为
Xft字体
X客户端自行查找字体并进行渲染,X服务器只负责显示
由于Xft字体的渲染在客户端完成,所以它可以动态的加载,而不需要随同X服务器一同启动
字体服务器
另外还有一种字体服务器模式,例如 XFT字体:当客户端请求字体时,X服务器将请求转发到字体服务器,由字体服务器查找字体,并使用freetype引擎渲染,将结果传回X服务器,X服务器进行显示……
X核心字体
/etc/X11/xorg.conf 中可以配置X核心字体的搜索路径
Section "Files"
FontPath "/usr/X11R6/lib/X11/fonts/misc/"
FontPath "/usr/X11R6/lib/X11/fonts/Type1/"
FontPath "/usr/X11R6/lib/X11/fonts/Speedo/"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"
EndSection
*
当X客户端向X服务器请求显示文字的时候,X服务器会按上面列表的先后顺序查找字体
例如显示中文时,如果第一个路径中的字体不包含中文,则查找下面的路径,直到发现中文字体
*
请将您偏好的字体放在靠前的位置
要使安装的字体能够作为X核心字体使用,将字体的安装路径添加到上面的列表中,使用 mkfontscale 、 mkfontdir 扫瞄文件夹中的字体,并生成索引,就可以了(建议使用 ttmkfdir 生成 fonts.scale ,将其复制为 fonts.dir )
字体的选择及显示风格,可以修改GTK1的配置文件,或者在Xresources文件中对程序单独进行定义
事实上,在我们的日常应用中,X核心字体环境并不常见,使用GTK1图形库的程序、某些类型的终端……
* Emacs也是这样一个老派的程序……不过Emacs23中刚刚加入了xft字体的支持
XFT字体
Xft字体相关选项在 /etc/fonts/fonts.conf 文件中配置
可以使用 fc-cache 命令,递归扫瞄以下目录中的字体(包括子文件夹中的字体),建立字体缓存
/usr/share/X11/fonts
/usr/share/fonts
/usr/local/share/fonts
~/.fonts
* /etc/fonts/fonts.conf 文件的
字段
多数支持GTK2或者Qt图形库的X客户端能够使用Xft字体渲染技术
* GTK2为Gnome使用的图形库,Qt为KDE使用的图形库。相对来说,GTK2图形库在程序的GUI设计中更加通用
安装字体,只要将字体拷贝到以上任意目录, fc-cache -fv 刷新字体缓存即可 (参数: -f 强制刷新; -v 显示过程)
使用命令 fc-list 列出所有可用字体
字体的选择及显示风格,可以修改GTK2或者Qt的配置文件,建议使用图形界面配置
阅读(1898) | 评论(1) | 转发(0) |