第一部分 Linux的安装和快速入门 1
第一章 Linux的获取和安装 3
1.1 Linux的获取 3
1.1.1 选择Linux版本 3
1.1.2 获取Linux 4
1.1.3 RedHat简介 7
1.2 安装Linux的硬件需求 8
1.3 Linux的安装 9
1.3.1 安装Linux的一般过程 10
1.3.2 安装RedHat Linux 16
1.4 Linux资源,寻求帮助 17
第二章 Linux基础 19
2.1 登录、注销和关机 19
2.1.1 登录 20
2.1.2 注销和关机 20
2.1.3 修改口令 21
2.2 文件系统概述 22
2.3 用户帐号和口令 23
2.3.1 用户信息 24
2.3.2 口令 24
2.3.3 建立和管理用户帐号 25
2.4 主目录 25
3.1 文件系统的层次结构 27
第三章 文件和程序 27
3.2 文件和目录 30
3.2.1 固定链接 30
3.3 符号链接 32
3.4 文件权限和所有权 32
3.5 目录和目录权限 33
3.6 运行程序 34
3.6.1 常用的系统操作命令 34
3.6.2 远程登录 36
第四章 磁盘管理 39
4.1 Linux中的设备 39
4.1.1 建立设备特殊文件 40
4.1.2 设备驱动程序原理 41
4.1.3 常见设备种类 41
4.2 磁盘的格式化 42
4.2.1 物理格式化 42
4.2.2 创建文件系统 42
4.2.3 挂装文件系统 42
4.2.4 卸除文件系统 43
4.2.5 其他讨论 43
4.3 备份和恢复 44
4.3.1 备份 44
4.3.2 恢复 45
5.1.1 通配符,路径名的扩展 47
5.1 概述 47
第五章 BASH 47
5.1.2 引用特殊字符 49
5.1.3 命令补全 49
5.1.4 输出重定向 50
5.1.5 输入重定向 51
5.1.6 错误重定向 51
5.1.7 管道 52
5.1.8 历史表 52
5.1.9 命令行编辑 54
5.1.10 shell函数 54
5.2 进程 55
5.3.2 作业管理 56
5.3 作业管理和虚拟终端 56
5.3.1 后台作业 56
5.3.3 虚拟终端 57
5.4 环境变量 58
5.5 系统初始化 60
第六章 Linux的GUI 61
6.1 X 61
6.2 X和Windows 62
6.3 安装和配置X 62
6.3.1 硬件要求 62
6.3.2 获取X 63
6.3.3 安装和配置XFree86 64
6.4 运行X 67
6.4.1 fvwm 68
6.4.2 xterm 69
第七章 工具和实用程序 71
7.1 正文编辑 71
7.1.1 vi 71
7.1.2 GNU Emacs简介 77
7.2 搜索和排序 78
7.2.1 搜索 78
7.2.2 排序 83
7.3.1 归档 85
7.3 文件的归档、压缩和解压缩 85
7.3.2 压缩和解压缩 86
7.3.3 归档、压缩和解压缩的联合使用 86
7.4 其他常用工具 87
第八章 其他 89
8.1 shell脚本编程入门 89
8.1.1 概述 89
8.1.2 shell的指定 90
8.1.3 变量 91
8.1.4 登录脚本 93
8.1.5 捕捉信号 94
8.1.6 控制程序流程 95
8.2.1 安装gcc 98
8.2 GNU C的安装和使用 98
8.2.2 C程序的编译和连接 99
8.2.3 创建函数库 101
8.2.4 利用make和Makefile自动编译 101
8.3 其他 106
8.3.1 常见文件的扩展名 106
8.3.2 一些有用的中文软件 107
第二部分 Linux奥秘 109
9.2 Linux内核的重要组成部分 111
9.2.1 内存管理 111
9.1 操作系统的概念和组成部分 111
第九章Linux系统概述 111
9.2.2 进程 112
9.2.3 设备驱动程序 112
9.2.4 文件系统 112
9.2.5 网络 113
9.2.6 其他 113
9.3 Linux系统的主要服务 113
9.3.1 init 113
9.3.2 终端登录 114
9.3.3 Syslog 114
9.3.9 其他 115
9.3.8 网络文件系统 115
9.3.7 网络登录 115
9.3.6 网络 115
9.3.5 图形用户界面 115
9.3.4 周期命令执行:cron和at 115
9.4 目录树的标准布局 116
9.4.1 root文件系统 117
9.4.2 /usr文件系统 117
9.4.3 /var文件系统 118
9.4.4 /proc文件系统 118
第十章 内存管理 119
10.1 虚拟内存 119
10.2 Linux的内存页表 121
10.3 内存页的分配和释放 121
10.4 内存映射和需求分页 123
10.5 Linux页缓存 125
10.6 内存交换 126
10.7 高速缓存 128
10.8 相关系统工具和系统调用 128
10.8.1 建立交换空间 128
10.8.2 使用交换空间 129
10.8.3 分配交换空间 130
10.8.4 关于缓冲区高速缓存 130
10.8.5 系统调用 131
第十一章 进程及进程间通讯机制 133
11.1 Linux进程及线程 133
11.1.1 标识符信息 134
11.1.2 进程状态信息 135
11.1.3 文件信息 135
11.1.4 虚拟内存 136
11.1.5 时间和定时器 138
11.1.6 关于线程 138
11.1.7 会话和进程组 139
11.3 进程的创建 141
11.4 执行程序 143
11.4.1 ELF 143
11.5 信号 145
11.4.2 脚本文件 145
11.6 管道 147
11.7 System V的IPC机制 148
11.7.1 消息队列 149
11.7.2 信号量 150
11.7.3 共享内存 152
11.8 套接字 153
11.9 相关系统工具及系统调用 153
11.9.1 系统工具 153
11.9.2 系统调用 153
第十二章 硬件和设备驱动程序 157
12.1 处理器和总线 157
12.2.1 PCI总线的结构 158
12.2 Linux对PCI总线的支持 158
12.2.2 Linux中PCI设备的初始化 160
12.3 计算机和设备间的数据交换方式 161
12.3.1 查询和中断 161
13.3.2 直接内存访问 161
12.4 中断及中断处理 162
12.4.1 中断处理硬件 163
12.4.2 Linux的中断处理软件 163
12.5 设备驱动程序 164
12.5.1 设备驱动程序的概念 164
12.5.2 设备驱动程序的内存分配 165
12.5.3 设备驱动程序和内核的接口 165
12.5.4 网络设备 167
12.6 硬盘 169
12.7 软盘 171
12.8 格式化和分区 172
12.8.1 格式化 172
12.8.2 分区 173
12.8.3 无文件系统的磁盘 175
12.9 其他存储设备 176
12.9.1 CD-ROM 176
12.9.2 磁带 176
12.10 显示卡和监视器 176
12.10.1 光栅扫描监视器 177
12.10.5 点时钟 178
12.10.4 显示内存 178
12.10.2 彩色监视器 178
12.10.3 调色板和分辨率 178
12.10.6 XFree86 179
12.11 键盘和鼠标 182
12.11.1 键盘布局 182
12.11.2 键盘的重复延迟和重复率 183
12.11.3 Linux中的键盘映射 183
12.11.4 鼠标接口 185
12.11.5 鼠标设备名称 185
12.11.6 鼠标协议 185
12.11.7 鼠示和XFree86 186
12.12.2 假脱机和打印作业* 187
12.12.3 打印作业控制 187
12.12 打印机 187
12.12.1 打印机及其设备文件 187
12.12.4 Linux的打印原理 188
12.13 其他外设 190
第十三章 文件系统 191
13.1 Ext2文件系统 192
13.1.1 Ext2索引节点 192
13.1.2 Ext2文件系统的超块 194
13.1.3 Ext2块组描述符 194
13.1.4 Ext2目录 195
13.1.5 Ext2文件系统中数据块的分配和释放 196
13.2 虚拟文件系统 197
13.2.1 VFS超块 198
13.2.2 VFS索引节点 199
13.2.3 文件系统的注册 199
13.2.4 文件系统的挂装的卸装 200
13.2.5 VFS中文件的定位 201
13.2.6 VFS索引节点高速缓存 202
13.2.7 VFS目录高速缓存 202
13.3 缓冲区高速缓存 203
13.3.1 bdflush内核守护进程 204
13.6 相关系统工具和系统调用 205
13.6.1 Linux支持的文件系统 205
13.4 /proc文件系统 205
13.5 特殊设备文件 205
13.3.2 update进程 205
13.6.2 建立文件系统 206
13.6.3 文件系统的挂装和卸装 207
13.6.4 检查文件系统的完整性 207
13.6.5 检查磁盘错误 207
13.6.6 碎片化问题 208
13.6.7 其他文件系统工具 208
13.6.8 系统调用 208
第十四章 网络 211
14.1 TCP/IP协议 211
14.2 Linux的TCP/IP网络层 214
14.3 BSD套接字接口 215
14.4 INET套接字层 217
14.4.1 建立BSD套接字 217
14.4.2 在INET BSD套接字上绑定地址 219
14.4.3 在INET BSD套接字上建立连接 219
14.4.5 监听INET BSD套接字 220
14.4.6 接受连接请求 220
14.5 IP层 221
14.5.1 套接字缓冲区 221
14.5.2 接收IP数据包 222
14.5.3 发送IP数据包 223
14.5.4 数据包的分段和重组 223
14.6 地址解析协议 224
14.7 IP路由 225
14.7.1 路由缓存 226
14.7.2 转发信息数据库 226
14.8 相关系统工具和系统调用* 227
第十五章 其他内核机制 229
15.1 底半处理 229
15.2 任务队列 230
15.3 时间和定时器 231
15.4 等待队列 233
15.5 Buzz锁 234
15.6 信号量 234
15.7.1 装载模块 235
15.7 模块 235
15.7.2 卸载模块 237
15.8 相关系统工具和系统调用 238
15.8.1 显示和设置时间 238
15.8.2 管理内核模块 239
15.8.3 系统调用 239
第十六章 引导和关机 241
16.1 Linux的引导过程 241
16.2 关机 243
16.3 重新引导 244
16.4 紧急引导软盘 244
16.5 init 244
16.6 启动getty:/etc/inittab文件 245
16.7 运行级别 246
16.8 /etc/inittab文件的特殊设置 246
16.9 单用户模式 247
第十七章 登录和注销 249
17.1 终端登录 249
17.2 网络登录 249
17.3 login程序 251
17.4 xdm 251
17.5 访问控制 251
17.6 shell启动 252
18.1.2 用户组 253
18.1.1 用户帐号 253
第十八章 安全性 253
18.1 用户帐号及其配置 253
18.1.3 /etc/passwd以及其他信息文件 254
18.1.4 手工建立用户帐号 254
18.1.5 修改用户属性 255
18.1.6 删除用户或暂时禁止用户 255
18.2 文件的访问许可 255
18.3 访问设备 257
18.4 root帐号 257
18.5.2 选择备份工具 258
18.5.3 简单备份 258
18.5.1 选择备份介质 258
18.5 备份数据 258
18.5.4 多级备份 260
18.5.5 压缩备份 261
第三部分 Linux实战举例 263
第十九章 内核编译 265
19.1 准备工作 265
19.1.1 了解你现有的内核版本号 265
19.1.2 了解新内核的基本情况 266
19.1.3 获取源文件 267
19.1.4 解开源程序包 268
19.2 内核编译 269
19.2.4 内核配置 269
19.2.3 附加的套件 278
19.2.2 编译内核和用新内核引导 278
19.3 常见问题及解决方法 279
第二十章 网络应用 283
20.1 Linux对网络的支持 283
20.1.1 网络通讯协议 283
20.1.2 网络硬件的支持 285
20.1.3 文件与打印的共享 285
20.1.4 Linux对Internet/Intranet所提供的服务 285
20.1.5 远端执行应用程序服务 286
20.1.6 Linux对网络互连的支持 286
20.1.7 Linux对网络管理的支持 289
20.2 PPP 289
20.2.1 将PPP设定为客户端 290
20.2.2 使用PPP连接两个网络 303
20.2.3 建立PPP服务器 306
20.2.4 在null modem(直接连线)上使用PPP 308
20.3 阿帕奇(Apache)的应用 308
20.3.1 编译启动阿帕奇 309
20.3.2 WWW服务器的配置 311
20.3.3 代理服务器的设备 330
第二十一章 中文环境 335
21.1 中文字符集及编码 335
21.1.1 GB码 335
21.1.3 Big5码 336
21.1.2 HZ码 336
21.2 中文化方法 337
21.2.1 修改源代码 337
21.2.2 “包装”原理 337
21.2.3 常用的X Windows中文化解决方案 340
21.3 X Windows的中文字库 340
21.3.1 常用字库 340
21.3.2 中文字库的安装 342
21.3.3 可缩放字库 343
21.3.4 中文X字库的共享 343
21.4 中文输入 344
21.4.1 Xcin+crxvt 344
21.4.2 Chinput套件 345
21.4.3 其他问题 346
21.5 中文编辑 347
21.5.1 LaTeX+CJK 347
21.5.2 Emacs 350
21.6 中文打印 350
21.6.1 cnprint,ps2cps,gh2ps 350
21.6.2 中文(GB)PostScript字库 352
21.7 中文终端 355
21.7.1 安装CXterm 356
21.7.2 CXterm的使用 356
22.1.2 变量 359
22.1.1 头文件 359
第二十二章 基于XLIB的应用程序开发 359
22.1 基础知识 359
22.1.3 服务器资源 360
22.1.4 图形上下文 360
22.1.5 事件 360
22.2 创建一个简单的X窗口程序 362
22.2.1 同X服务器建立联系 362
22.2.2 获取屏幕信息 362
22.2.3 产生窗口 364
22.2.4 图标、字体和颜色 365
22.2.5 与窗口管理器建立联系 367
22.2.6 选择事件类型 368
22.2.7 创建和设置GC 371
22.2.8 窗口显示 373
22.2.9 事件循环和处理 373
22.2.10 绘图 374
22.2.11 出错处理 377
22.3 源程序 377
附录A 佳文共赏 385
Linux——自由而奔放的黑马 385
附录B 专业术语中英文对照表 391
附录C 参考文献 397