第1章 X Window 1
1.1 X Window概述 1
1.1.1 X Window简介 1
1.1.2 X服务器、窗口管理器和桌面环境 2
1.2 获取和安装XFree86 3
1.3 配置X Window 5
1.3.1 使用XF86Setup配置XFree86 6
1.3.2 使用XF86Config配置XFree86 15
1.4 XF86Config文件 23
1.5 理解并使用X Window 35
1.5.1 理解X Window 35
1.5.2 启动X Window 36
1.5.3 定制X Window的基本方法 39
13.1 源代码管理 41
1.6 小结 41
2.1.1 用户号(uid) 42
第2章 管理用户 42
2.1 基础知识 42
2.1.3 /etc/shadow文件 43
2.1.4 组和/ete/group文件 44
2.2.1 手工创建新用户的步骤 45
2.1.5 新用户的初始环境/ete/skel 45
2.2 创建和修改用户 45
2.2.2 使用命令useradd创建新用户 46
2.2.3 使用命令passwd设置用户的口令 47
2.2.4 修改用户属性 47
2.3 限制和删除用户 48
2.3.1 暂时禁止一个用户 48
2.3.2 用户限额(quota) 48
2.3.3 删除用户 51
2.3.4 管理用户的其他工作 51
2.4 组的管理 52
2.4.1 创建一个新的组 52
2.4.2 修改组和删除组 52
2.5 使用图形化的管理工具 53
2.6 小结 53
3.1 PC机启动引导过程简介 54
第3章 启动和关闭Linux系统 54
3.2 Linux启动过程 55
3.2.1 内核初始化 55
3.2.2 启动init进程 59
3.2.3 执行/etc/re.d/rc.sysinit 62
3.2.4 执行/etc/rc.d/rc 69
3.2.5 /etc/rc.d目录 71
3.3 启动Shell 76
3.4 关闭Linux系统 76
3.5.1 grub简介 77
3.5 grub 77
3.5.2 grub的特点 78
3.5.3 grub的使用 79
3.5.4 配置grub 79
3.5.5 从软盘启动grub 80
3.6 小结 81
第4章 日志管理 82
4.1 基础知识 82
4.1.1 日志简介 82
4.1.2 用于Linux的日志文件系统 82
4.2 日志 86
4.2.1 系统日志 86
4.2.2 系统登录日志 87
4.2.3 Syslog日志记录 88
4.2.4 其他日志 89
4.2.5 系统文件日志内容 89
4.2.6 查看日志文件 90
4.2.7 日志文件是不断变大的 91
4.2.8 配置日志 92
4.2.9 syslogd 93
4.3 日志过滤及工具SWATCH简介 93
4.3.1 过滤 94
4.3.2 Swatch 95
4.4 小结 96
第5章 文件系统 98
5.1 文件系统 98
5.1.1 简介 98
5.1.2 Linux核心对文件系统的支持 100
5.1.3 注册文件系统 107
5.1.4 安装文件系统 108
5.1.5 在虚拟文件系统中搜寻文件 108
5.1.7 VFS Inode Cache 109
5.1.6 卸载文件系统 109
5.1.8 目录Cache 110
5.1.9 Buffer Cache 110
5.1.10 bdflush核心后台进程 111
5.1.11 update进程 112
5.1.12 /proc文件系统 112
5.1.13 设备特殊文件 112
5.2 管理文件系统 113
5.2.1 文件系统的目录结构 113
5.2.2 了解文件名和路径名 115
5.2.3 Linux的文件类型 116
5.3 小结 120
6.1 内核配置 121
6.1.1 基础知识 121
第6章 内核概述 121
6.1.2 获得升级源程序 122
6.1.3 开始工作 122
6.1.4 发现并排除故障 126
6.2 内核体系结构 126
6.2.1 内核设计目标 126
6.2.2 内核体系结构初始 129
6.2.3 内核体系结构的深入了解 130
6.2.4 层次化与模块化 130
6.2.5 Linux大部分都是单内核的 131
6.2.6 设计和实现的关系 133
6.3 存储管理 137
6.3.1 简介 137
6.3.2 虚拟内存的抽象模型 137
6.3.3 高速缓冲 141
6.3.4 Linux页表 141
6.3.5 页面分配与回收 142
6.3.6 内存映射 143
6.3.7 请求换页 144
6.3.8 Linux页面cache 144
6.3.9 换出与丢弃页面 145
6.3.10 The Swap Cache 147
6.3.11 页面的换入 148
6.4 设备管理 149
6.4.1 处理器和总线 149
6.4.2 Linux对PCI总线的支持 150
6.4.3 计算机和设备间的数据交换方式 151
6.4.4 中断及中断处理 152
6.4.5 设备驱动程序 154
6.4.6 硬盘 158
6.4.7 软盘 159
6.4.8 格式化和分区 159
6.4.9 其他存储设备 163
6.4.10 显示卡和监视器 164
6.4.11 键盘和鼠标 170
6.5.1 TCP/IP协议 174
6.5 网络系统 174
6.4.12 其他外设 174
6.5.2 Linux的TCP/IP网络层 176
6.5.3 BSD套接字接口 177
6.5.4 INET套接字层 178
6.5.5 IP层 181
6.5.6 地址解析协议 184
6.5.7 IP路由 185
6.6 对称多处理(SMP) 187
6.7.2 Linux系统调用机制 188
6.7.1 简介 188
6.7 系统调用 188
6.7.3 添加新的系统调用 189
6.8.1 简介 192
6.8 /proc和内核信息 192
6.8.2 一些最重要的文件和目录 193
6.8.3 如何在proc中加入一个文件 194
6.9 小结 199
第7章 进程和作业管理 200
7.1 基础知识 200
7.1.1 概述 200
7.1.2 Linux进程 202
7.1.3 标识符 203
7.1.4 调度 204
7.1.5 进程创建 206
7.1.6 时钟和定时器 207
7.2.1 who命令 208
7.2 进程查看 208
7.2.2 w命令 210
7.2.3 ps命令 211
7.2.4 top命令 214
7.3 进程管理 217
7.3.1 启动进程 217
7.3.2 几个启动命令 218
7.4 小结 225
8.1.1 简介 226
8.1.3 内核打印机装置 226
8.1.2 如何打印 226
8.1 基础知识 226
第8章 打印的配置与管理 226
8.2 打印配置 228
8.2.1 支持的打印机 228
8.2.2 脱机打印软件(spooling software) 232
8.2.3 基本运作方式 232
8.2.4 基本系统设定 232
8.2.5 取得打印软件 234
8.2.6 厂商的解决方案 234
8.3 打印管理 235
8.3.1 ghostscript 235
8.3.2 如何打印到网络打印机 236
8.3.3 Windows专用打印机 241
8.3.5 如何控制打印的版面 242
8.3.4 如何打印到传真机 242
8.3.6 在屏幕上预览可打印的东西 244
8.3.7 在lpd下使用串行打印机 244
8.4 小结 246
第9章 备份与恢复 247
9.1 基础知识 247
9.1.1 备份的重要性 247
9.1.2 选择备份的介质 248
9.1.3 选择备份工具 250
9.1.4 简单备份 250
9.1.5 多级备份 251
9.1.6 需要备份些什么 252
9.1.7 压缩备份 252
9.2 常用的备份命令 253
9.2.1 使用tar命令 253
9.2.2 压缩/解压缩工具 257
9.2.3 cpio命令简介 258
9.2.4 联合使用 260
9.3 小结 260
10.1 软件集中营www.gnu.org介绍 261
第10章 Limux编程概述 261
10.2.2 范例 262
10.2 汇编语言 262
10.2.1 简介 262
10.4.1 简介 265
10.3 Bash编程 265
10.4 Perl编程 265
10.4.2 Perl的版本演变 266
10.4.3 CPAN提供大量Perl标准程序 267
10.4.4 微软投资支持Perl 267
10.4.5 Perl与Java 267
10.4.6 Perl比GPL更开放 268
10.4.7 谁对Perl提供支援,由谁负责发展 268
10.4.8 该用哪一个版本的Perl 268
10.4.9 可以用Perl做什么 269
10.4.10 哪些场合下不适合用Perl 269
10.5 Java编程 270
10.5.1 简介 270
10.5.2 获取程序开发工具箱JDK 270
10.4.11 Perl程序的实质 270
10.5.3 内核对Java的支持 271
10.5.4 运行HTML文件 272
10.5.5 JDK 272
10.5.6 Java Beans 272
10.5.7 Swing 273
10.5.8 Java访问工具 274
10.5.9 JSDK 275
10.6 Qt编程 276
10.6.1 简介 276
10.6.2 范例 277
10.7 Gtk编程 285
10.8 项目管理 286
10.8.1 概述 286
10.8.2 几种版本维护工具的简介 286
10.9 小结 288
第11章 脚本语言 289
11.1 基础知识 289
11.2.1 概述 290
11.2.2 Bash 290
11.2 UNIX Shell 290
11.2.3 高级Bash编程 295
11.2.4 参数与变量 303
11.2.5 Bash内建指令集 306
11.2.6 Bash内建参数 313
11.2.7 提示符号 314
11.2.8 算术表达式 315
11.2.9 重定向(Redirection) 315
11.2.10 Shell递归程序设计 316
11.3 Perl 317
11.3.1 概述 317
11.3.2 简单变量 320
11.3.3 操作符 322
11.3.4 列表和数组变量 327
11.3.5 文件读写 330
11.3.6 关联数组/哈希表 333
11.3.7 控制结构 343
11.3.8 子程序 345
11.3.9 格式化输出 348
11.3.10 使用DBM文件 354
11.3.11 Perl5中的引用/指针 366
11.3.12 Perl的面向对象编程 374
11.3.13 Perl5的包和模块 386
11.4 小结 393
12.1.2 gcc的使用 394
第12章 使用C的开发工具 394
12.1 利用gcc/g++进行编译和链接 394
12.1.1 C程序的编译过程 394
12.1.3 函数库 397
12.2 利用make编译工程 398
12.2.1 多文件项目 398
12.2.2 GNU Make工具 401
12.3 Autoconf的用法 409
12.3.1 简介 409
12.3.2 准备 410
12.3.3 一个简单的例子 410
12.3.4 Autoconf探密 412
12.3.5 相关讯息 414
12.4 gdb 415
12.4.1 gdb简介 415
12.4.2 使用实例 415
12.4.3 运行gdb(一些详细的说明) 420
12.4.4 gdb命令 422
12.4.5 在gdb下运行你的程序 425
12.4.6 多线程程序的调试 429
12.4.7 调试多进程的程序 430
12.4.8 停止和继续 431
12.4.9 断点,观察点和异常 431
12.5 小结 439
12.4.10 gprof 439
第13章 版本管理 441
13.2 源代码管理工具简介 442
13.3 CVS的原理 443
13.4 CVS命令一览 444
13.5 用CVS进行源代码管理 452
13.5.1 开始一个项目 452
13.5.2 关键词 462
13.5.3 环境变量 463
13.6 CVS服务器的配置 464
13.6.1 CVS的专有环境变量 464
13.6.2 从RCS转换到CVS系统 465
13.6.3 服务器的安装使用 466
13.6.4 CVS的远程用户管理 468
13.7 CVS服务器配置与应用实例 470
13.7.1 服务器安装配置 470
13.7.2 应用实例 471
13.8 CVS特点 473
13.9 小结 473
第14章 Linux的中文化 475
14.1 基础知识 475
14.1.1 国际化、本地化和中文化 475
14.1.2 Locale 478
14.1.3 文化习俗的差别 479
14.2 Linux中文化现状及其他方案 480
14.2.1 简介 480
14.2.2 Linux中文本地化的基本知识 481
14.2.3 几种中文本地化方式 481
14.2.4 中文Linux的发展 482
14.3 Linux下的中文字库 483
14.4 Linux平台上的各种中文软件 484
14.4.1 字符中文环境 484
14.4.2 X Window下的中文软件 485
14.4.3 目前的中文Linux发行版本现状 485
14.5 字符集和编码 486
14.5.1 字符集涵盖语言 486
14.5.2 双字节字符集 487
14.5.3 多子节字符(Multibyte)和宽字符(WideChar)的使用 488
14.5.4 Unicode 488
14.5.5 字体(Fout)和字体集(FontSet) 488
14.6 信息的国际化 489
14.6.1 信息国际化的基本步骤 489
14.6.2 本地化的过程 490
14.6.3 输入的国际化 490
14.6.4 客户程序间通讯的国际化 493
14.6.5 开发符合国际化标准的软件 493
14.7 目前中文化中存在的问题 493
14.7.4 Linux文档中文化 494
14.7.3 Linux上的中文平台到国际化的过渡 494
14.7.2 中文编码自动识别问题 494
14.7.1 编码动态切换的问题 494
14.8 参考资料 495
14.9 撰写Xil8n程序 496
14.10 小结 497
第15章 图形化编程 499
15.1 简介 499
15.2 一个简单的窗口程序 499
15.2.1 用GTK来写Hello World 501
15.2.2 编译Hello World 502
15.2.3 Signals及Callbacks的原理 502
15.2.4 深入了解Hello World 503
15.3.1 一般按钮 505
15.3 按钮对象 505
15.3.2 双态按钮 507
15.3.3 Check按钮 508
15.3.4 Radio按钮 508
15.3.5 文本输入框 508
15.3.6 列表框 511
15.3.7 复合框 519
15.3.8 标签 521
15.4 GTK编程示例--编写计算器应用 522
15.5 小结 525
16.1 基础知识 526
16.1.1 简介 526
第16章 RPM 526
16.1.2 RPM设计目标 527
16.1.3 RPM的强大功能 528
16.1.4 获得RPM程序 528
16.1.5 RPM所需要的环境 528
16.2 使用RPM进行软件包管理 528
16.2.1 安装 528
16.2.2 卸载 530
16.2.3 升级 530
16.2.4 查询 530
16.2.5 验证 532
16.3 生成RPM文件 532
16.3.1 设定rpmrc文件 532
16.3.2 设定Spec文件 533
16.3.3 The Header 534
16.3.4 准备 536
16.3.5 生成RPM 537
16.3.6 安装设定 537
16.3.7 指定安装/卸载前后的脚本 537
16.3.8 文件设定 537
16.3.9 生成文件 538
16.3.10 RPM包测试 539
16.4 范例和技巧 540
16.5 在多种平台上使用RPM 542
16.5.1 一个简单的Spec文件 542
16.5.4 消除不同平台的影响 543
16.5.2 Optflags 543
16.5.3 宏 543
16.6 小结 544
附录A 基础知识 545
A.1 GNU通用公共许可证(GPL) 545
附录B GNU和Linux的关系 549
附录C GPL及其主要内容 550
C.1 GPL(公共库许可证) 550
C.2 LGPL(程序库公共许可证) 551
附录D Linux的主要发行版本 551
D.1 Linux的主要发行版本 551
D.2 简体中文Linux发行版本 552