Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8607994
  • 博文数量: 1413
  • 博客积分: 11128
  • 博客等级: 上将
  • 技术积分: 14685
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-13 10:03
个人简介

follow my heart...

文章分类

全部博文(1413)

文章存档

2013年(1)

2012年(5)

2011年(45)

2010年(176)

2009年(148)

2008年(190)

2007年(293)

2006年(555)

分类: LINUX

2007-07-11 11:25:13

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的配置文件,建议使用图形界面配置
  • 阅读(1892) | 评论(1) | 转发(0) |
    给主人留下些什么吧!~~