内容简介:
赵鑫磊
阿里巴巴集团资深Linux系统专家。
自1998年开始使用Linux,曾参与国内著名的Linux社区发行版MagicLinux的开发工作,是一个土生土长的东北人。工作经历丰富,开过小网吧、大学讲过课、发过小广告(时在阿里妈妈)、干过铁路工(开发铁路车载电视系统)、当过副总裁,但始终没有放弃对Linux的探索与研究,并将这份经历凝聚在了本书之中。
电子邮箱:jagen.zhao@gmail.com
来往账号:飞芃
微信账号:567867
Jie Zhang(张洁)
阿里巴巴集团支付宝网络技术有限公司高级专家。
曾在美国、日本、加拿大和中国的多家高科技企业担任过技术总监等职。参与研发的Jack of Spades Combo卡于1999年3月获得北美权威的PC Magazine杂志的Editors' Choice奖,并赢得PC Computing MVP Finalist Award奖。自1998年开始从事Linux开发,研发基于Linux平台的网络、多媒体、通讯和电子商务等多领域的高科技产品与项目,获中国国家科技进步三等奖,并拥有多项国家发明专利。
电子邮箱:jie_joy_zhang@yahoo.com
来往账号:方如
微信账号:fangru-jiezhang
作者简介:
赵鑫磊
阿里巴巴集团资深Linux系统专家。
自1998年开始使用Linux,曾参与国内著名的Linux社区发行版MagicLinux的开发工作,是一个土生土长的东北人。工作经历丰富,开过小网吧、大学讲过课、发过小广告(时在阿里妈妈)、干过铁路工(开发铁路车载电视系统)、当过副总裁,但始终没有放弃对Linux的探索与研究,并将这份经历凝聚在了本书之中。
电子邮箱:jagen.zhao@gmail.com
来往账号:飞芃
微信账号:567867
Jie Zhang(张洁)
阿里巴巴集团支付宝网络技术有限公司高级专家。
曾在美国、日本、加拿大和中国的多家高科技企业担任过技术总监等职。参与研发的Jack of Spades Combo卡于1999年3月获得北美权威的PC Magazine杂志的Editors' Choice奖,并赢得PC Computing MVP Finalist Award奖。自1998年开始从事Linux开发,研发基于Linux平台的网络、多媒体、通讯和电子商务等多领域的高科技产品与项目,获中国国家科技进步三等奖,并拥有多项国家发明专利。
电子邮箱:jie_joy_zhang@yahoo.com
来往账号:方如
微信账号:fangru-jiezhang
目录:
第一部分 基础篇
第1章 第一次亲密接触2
1.1 让Linux入驻我们的电脑2
1.1.1 我们用Linux的理由3
1.1.2 选择哪个发行版4
1.1.3 安装系统6
1.1.4 登录系统15
1.2 不一样的图形操作15
1.2.1 没有图形的图形15
1.2.2 架构设计17
1.3 主流桌面环境18
1.3.1 KDE初学者的首选18
1.3.2 GNOME不可磨灭的经典20
1.3.3 XFCE——轻量、简单、高效21
1.3.4 LXDE——更轻,同样精悍21
1.4 返璞归真的命令行22
1.4.1 开始执行命令22
1.4.2 文本和图形的切换23
1.4.3 基础命令的操作23
1.4.4 快捷键26
1.4.5 错误信息28
1.4.6 联机帮助——man很靠谱30
1.4.7 致命的Linux命令31
1.5 结束语32
第2章 融于心而表于行33
2.1 多用户多任务分时操作系统33
2.2 用户的身份35
2.2.1 澡堂子模型35
2.2.2 理解用户角色36
2.2.3 /etc/passwd文件查看用户37
2.2.4 /etc/group文件查看组38
2.2.5 管理用户和组39
2.2.6 夺面双雄——利用sudo假借身份41
2.2.7 我是谁?44
2.3 文件和它与权限的关系45
2.3.1 目录与文件46
2.3.2 文件属性和权限47
2.3.3 文件连接到底是什么49
2.3.4 修改文件的属性和权限51
2.3.5 深入文件权限52
2.3.6 文件的基本操作54
2.3.7 搜索文件55
2.3.8 对文件打包压缩57
2.4 程序的执行问题58
2.4.1 执行程序的方法,以及多任务协调机制58
2.4.2 计划任务62
2.4.3 守护进程及其作用64
2.4.4 全面了解程序信息66
2.5 软件的安装方式71
2.5.1 从源代码安装软件71
2.5.2 利用软件管理工具rpm和dpkg72
2.5.3 更酷的线上升级73
2.6 磁盘的管理方式76
2.6.1 Linux的文件系统——甩Windows几条街76
2.6.2 磁盘的基本操作78
2.6.3 /etc/fstab文件——决定分区的连接83
2.6.4 弹性调整容量——逻辑卷85
2.7 解决上网问题90
2.7.1 了解IP地址90
2.7.2 相关配置文件91
2.7.3 安装网卡92
2.7.4 手工设定IP地址92
2.7.5 自动获取IP地址93
2.7.6 固定IP上网方式93
2.7.7 ADSL拨号上网方式94
2.8 不能割舍的shell96
2.8.1 勤勤恳恳的bash96
2.8.2 环境变量98
2.8.3 bash的配置文件98
2.9 文本处理101
2.9.1 查看文本内容101
2.9.2 正则表达式101
2.9.3 搜索文本的grep104
2.9.4 排序和去重105
2.9.5 文件对比命令——diff105
2.10 结束语107
第3章 一棵“树”的奥秘108
3.1 Linux的文件组织结构109
3.2 基本组织原则110
3.3 根文件系统111
3.3.1 原则与特性111
3.3.2 必备的内容112
3.3.3 可选的内容113
3.4 子目录113
3.4.1 /bin目录——shell命令113
3.4.2 /boot目录——启动过程所需内容115
3.4.3 /dev目录——设置文件116
3.4.4 /etc目录——配置文件116
3.4.5 /home目录——用户专有118
3.4.6 /lib目录——共享库和内核模块119
3.4.7 /media目录——可移动设备119
3.4.8 /mnt目录——临时挂接120
3.4.9 /opt目录——附加软件包120
3.4.10 /root目录——root专有120
3.4.11 /sbin目录——必备的系统软件121
3.4.12 /srv目录——服务进程所需数据121
3.4.13 /tmp目录——临时文件122
3.5 /usr目录组织结构122
3.5.1 /usr/bin目录123
3.5.2 /usr/include目录123
3.5.3 /usr/lib目录123
3.5.4 /usr/local目录123
3.5.5 /usr/sbin目录124
3.5.6 /usr/share目录124
3.5.7 /usr/share/man目录125
3.5.8 /usr/share/misc目录126
3.6 /var目录组织结构127
3.6.1 /var/account目录128
3.6.2 /var/cache目录128
3.6.3 /var/lib目录128
3.6.4 /var/lock目录128
3.6.5 /var/log目录129
3.6.6 /var/mail目录129
3.6.7 /var/opt目录129
3.6.8 /var/run目录129
3.6.9 /var/spool目录130
3.6.10 /var/tmp目录130
3.7 结束语130
第4章 “笨”出来的文化和哲学131
4.1 Unix的文化和哲学133
4.2 “四大笨”之一:万般皆文本134
4.2.1 二进制的烦恼135
4.2.2 文本的快乐135
4.2.3 文本之于配置文件136
4.2.4 文本之于程序组合137
4.2.5 文本之于通信协议138
4.2.6 硬件也文本138
4.3 “四大笨”之二:四处用脚本139
4.3.1 富饶的脚本语言139
4.3.2 为什么不是C140
4.3.3 脚本的不足和混合编程141
4.3.4 强力胶水141
4.3.5 极端的例子143
4.3.6 软件的适度规模143
4.4 “四大笨”之三:规律无处寻144
4.4.1 机制与策略145
4.4.2 接口与引擎145
4.4.3 不用重新造轮子146
4.4.4 内在的支持146
4.4.5 沉默是金,吝啬是银147
4.5 “四大笨”之四:配置乱生根148
4.5.1 什么是不可配的148
4.5.2 配置三元素149
4.5.3 配置文件150
4.5.4 环境变量151
4.5.5 命令行选项152
4.6 什么样的文化154
4.6.1 “傻x”的精明154
4.6.2 “简单”不简单155
4.7 这一切的基础大师的阐释156
第5章 shell脚本编程159
5.1 第一个shell脚本程序159
5.2 编程的基本要素160
5.2.1 变量162
5.2.2 运算164
5.2.3 流程控制165
5.2.4 自定义函数169
5.3 输入和输出172
5.3.1 基本的输出172
5.3.2 命令行参数172
5.3.3 使用read读取文本行173
5.3.4 文件描述符174
5.3.5 格式化输出175
5.4 调试跟踪175
5.4.1 空变量问题175
5.4.2 缺引号问题176
5.4.3 隔离问题176
5.4.4 echo普通中见“伟大”177
5.4.5 “-x”跟踪问题本领高177
5.4.6 assert函数177
5.4.7 Caller命令178
5.4.8 trap命令178
5.5 高级特性180
5.5.1 波浪号“~”180
5.5.2 通配符180
5.5.3 元字符181
5.5.4 转义符182
5.5.5 命令替换183
5.5.6 运算优先级183
5.5.7 文件包含184
5.5.8 eval语句185
5.5.9 内建命令186
5.6 shell脚本编程实战187
5.6.1 守护进程的启动脚本187
5.6.2 读取数据文件和平滑启动nginx188
第6章 微型语言194
6.1 什么是微型语言194
6.2 软件管理的RPM196
6.2.1 构建你的第一个RPM包197
6.2.2 工作原理——分析Spec文件199
6.2.3 依赖关系203
6.2.4 个软件多个包204
6.2.5 小结206
6.3 制作联机帮助文档的Groff206
6.3.1 Groff简介207
6.3.2 Groff的工作方式208
6.3.3 如何制作一份联机帮助文档213
6.3.4 导出联机帮助文档219
6.3.5 小结220
6.4 把文本当数据库的awk221
6.4.1 使用方法221
6.4.2 基本概念222
6.4.3 注释与空白223
6.4.4 字符串223
6.4.5 数值225
6.4.6 变量228
6.4.7 模式与行为229
6.4.8 行为语句231
6.4.9 小结237
6.5 神奇的计算器dc和bc238
6.5.1 历史渊源——最古老的Unix语言dc238
6.5.2 dc简介239
6.5.3 更为常用的bc244
6.5.4 小结250
6.6 不为人知的m4250
6.6.1 m4的历史251
6.6.2 m4的特性252
6.6.3 从Hello World开始253
6.6.4 工作方式255
6.6.5 小结257
6.7 结束语258
第7章 编辑器的纷争259
7.1 独步青云的vi260
7.1.1 我为vi狂260
7.1.2 vi的使用261
7.1.3 vi的高级功能264
7.1.4 跟我一起打造一个IDE266
7.2 横刀立马的Emacs274
7.2.1 Emacs的来历274
7.2.2 Emacs的基本使用275
7.2.3 使用Emacs必知必会278
7.2.4 Lisp语言279
7.2.5 处理中文问题283
7.2.6 跟我一起打造一个IDE283
7.3 结束语285
第8章 我是Makefile286
8.1 GNU make及其基本用法288
8.2 基本概念289
8.2.1 第一个Makefile例子290
8.2.2 目标、条件和命令291
8.2.3 依赖292
8.2.4 工作方式292
8.2.5 基本语法293
8.3 认识规则294
8.3.1 标准规则294
8.3.2 隐式规则294
8.3.3 变量295
8.3.4 自动变量297
8.3.5 模式规则299
8.3.6 假目标300
8.3.7 路径搜索302
8.4 高级特性303
8.4.1 文件包含303
8.4.2 命令305
8.4.3 深入变量307
8.4.4 宏与函数310
8.4.5 条件指令311
8.5 Makefile实战312
8.5.1 自动产生依赖312
8.5.2 递归式的Makefile315
8.5.3 自动产生Makefile317
8.6 结束语323
第二部分 进阶篇
第9章 特种文件系统326
9.1 日志和ReiserFS326
9.1.1 理解日志327
9.1.2 ReiserFS——卓越的小文件性能与渺茫的未来328
9.1.3 应用实战331
9.1.4 小结331
9.2 进程文件系统procfs331
9.2.1 神秘的9号计划332
9.2.2 /proc目录333
9.2.3 procfs实战335
9.2.4 小结339
9.3 tmpfs——满足你对“时空”的双重渴望339
9.3.1 背景340
9.3.2 tmpfs文件系统341
9.3.3 tmpfs实战341
9.4 devfs和sysfs345
9.4.1 devfs的由来345
9.4.2 进入devfs346
9.4.3 sysfs的由来347
9.4.4 小结348
9.5 其他特种文件系统348
9.5.1 RelayFS348
9.5.2 debugfs349
9.6 结束语349
第10章 生死与共的“兄弟”351
10.1 死心眼儿的BIOS352
10.2 小肚鸡肠的MBR(主引导记录)353
10.2.1 MBR的结构353
10.2.2 磁盘分区表353
10.2.3 MBR的功能355
10.3 和事佬GRUB(牛B的统一引导加载器)355
10.3.1 Bootloader355
10.3.2 GRUB的功能356
10.3.3 GRUB的工作流程357
10.4 唇齿相依的内核启动参数358
10.4.1 什么是内核启动参数358
10.4.2 内核启动参数的格式359
10.4.3 常用的内核启动参数359
10.5 自力更生的Linux内核360
10.5.1 内核引导协议360
10.5.2 内核为什么要压缩360
10.5.3 startup_32361
10.5.4 start_kernel362
10.5.5 kernel_init362
10.6 及时雨initramfs363
10.6.1 寻找init的问题363
10.6.2 较早的initrd363
10.6.3 为什么选择initramfs364
10.7 “生”、“死”永相伴的init进程364
10.7.1 名不副实364
10.7.2 运行级别365
10.7.3 进入运行级别之前368
10.7.4 进入运行级别369
10.7.5 转换运行级别371
10.8 幕后英雄们371
10.8.1 终端372
10.8.2 getty系列命令372
10.8.3 Display Manager373
10.8.4 伪终端374
10.8.5 配置文件374
10.9 结束语375
第11章 独霸网络的“蜘蛛神功”376
11.1 功夫理论:网络知识376
11.2 “蜘蛛神功”第一层:网络工具378
11.2.1 马步:ifconfig378
11.2.2 掌法:route380
11.2.3 腿功:netstat381
11.2.4 眼力:DNS二把刀383
11.2.5 身法:tcpdump385
11.3 “蜘蛛神功”第二层:套接字387
11.4 内功心法:TCP/IP协议栈初探388
11.4.1 枯树盘根:系统调用388
11.4.2 凝神静态:sockfs文件系统390
11.4.3 气沉丹田:sk_buff392
11.5 临战杂谈397
11.5.1 对UDP的错误的认识398
11.5.2 事半功倍,调节内核参数399
第12章 一个网络一个世界402
12.1 You’ve Got a Mail402
12.1.1 Email服务模式402
12.1.2 架设Postfix服务器405
12.1.3 Email故事的结局409
12.2 联接世界的Web应用409
12.2.1 Web服务器410
12.2.2 数据库412
12.2.3 解释型语言413
12.2.4 架设Web服务器414
12.3 铜墙铁壁真功夫——Linux内核集成的IP信息包过滤系统419
12.3.1 iptables420
12.3.2 netfilter423
12.3.3 实践出真知426
12.3.4 小盒子的秘密427
12.4 分享文件的乐趣434
12.4.1 NFS438
12.4.2 Samba442
12.5 在虚拟与现实之间穿梭——实现安全的连接446
12.5.1 VPN实现方式447
12.5.2 IPSec VPN448
12.5.3 SSL VPN452
第13章 打通任督二脉455
13.1 了解网络驱动455
13.1.1 网络设备闲谈455
13.1.2 ioctl这把刷子456
13.1.3 设备驱动的秘密459
13.2 无线风光在险峰461
13.2.1 WLAN461
13.2.2 Bluetooth466
13.2.3 NFC——近距无线通信469
13.2.4 谜底474
13.3 奇迹是执着创造出来的474
13.3.1 从2.4到2.6474
13.3.2 从2.6到3.0477
第14章 身在江湖479
14.1 C2级安全认证479
14.2 Linux的安全问题480
14.2.1 黑客入侵480
14.2.2 “病毒泛滥”482
14.2.3 拒绝服务攻击483
14.2.4 小结484
14.3 PAM用户认证机制485
14.3.1 什么是PAM(可拔插认证模块)485
14.3.2 PAM的体系结构485
14.3.3 配置PAM487
14.3.4 密码映射494
14.4 应用PAM API495
14.4.1 开发概述495
14.4.2 PAM事务496
14.4.3 事务属性498
14.4.4 用户认证499
14.4.5 认证凭证500
14.4.6 PAM会话501
14.4.7 用户认证流程502
14.4.8 模块开发507
14.4.9 密码的保存508
14.5 安全增强系统509
14.5.1 主动访问控制DAC509
14.5.2 强制访问控制MAC510
14.5.3 SELinux——Linux的MAC实现511
14.6 结束语515
第15章 七种武器516
15.1 长生剑:fork516
15.1.1 从线程说起516
15.1.2 古老而充满活力的进程520
15.1.3 多进程程序开发523
15.1.4 进程间通信的实现531
15.2 离别钩:VFS537
15.2.1 一切都是文件538
15.2.2 一棵有生命的“树”538
15.2.3 VFS简介539
15.2.4 基本数据结构540
15.2.5 sockfs541
15.3 孔雀翎:mmap(内存映射)543
15.3.1 理解mmap543
15.3.2 虚拟内存技术544
15.3.3 应用mmap548
15.4 碧玉刀:epoll(增强I/O复用)553
15.4.1 C10K问题553
15.4.2 epoll的优点554
15.4.3 epoll的工作模式555
15.4.4 正确使用epoll556
15.4.5 用epoll解决C100K问题561
15.5 多情环:udev564
15.5.1 设计理念564
15.5.2 基本构成565
15.5.3 配置文件566
15.5.4 规则566
15.6 霸王枪:LVS567
15.6.1 负载均衡567
15.6.2 一个中国人的勇气569
15.6.3 LVS的特点570
15.6.4 LVS的工作模式571
15.6.5 LVS的负载均衡调度算法576
15.7 拳头:module578
15.7.1 内核中的Web服务578
15.7.2 编写你的第一个module579
15.7.3 module与普通程序的不同582
15.7.4 module与用户通信584
15.7.5 内核加载module的原理590
15.8 结束语592
第16章 谁都可以从头再来——从头开始编译一套Linux系统593
16.1 初识工具链——准备环境的必备工具594
16.1.1 编译器594
16.1.2 连接器594
16.1.3 程序库595
16.1.4 工具链——破解奇特的四角恋595
16.2 准备环境596
16.2.1 宿主系统环境597
16.2.2 生成工具链的binutils598
16.2.3 生成工具链的gcc599
16.2.4 生成工具链的glibc600
16.2.5 解决工具链的一些问题603
16.2.6 第二次生成工具链的binutils604
16.2.7 第二次生成工具链的gcc605
16.2.8 丰富工具链的功能608
16.2.9 整理工具链610
16.2.10 小结610
16.3 生成目标系统的运行环境611
16.3.1 准备工作611
16.3.2 安装glibc614
16.3.3 调整工具链617
16.3.4 安装binutils617
16.3.5 安装gcc618
16.3.6 安装其他基础设施620
16.3.7 系统启动脚本622
16.3.8 结束语623
16.4 定制Linux内核623
16.4.1 内核的make参数624
16.4.2 定制界面625
16.4.3 编译与安装626
16.5 独立运行627
16.5.1 /etc/fstab文件627
16.5.2 使用GRUB配置启动过程627
16.6 结束语628
第三部分 扩展篇
第17章 窈窕淑女君子好逑630
17.1 女人心事难捉摸——Linux图形环境630
17.1.1 X Window630
17.1.2 桌面系统638
17.1.3 XOrg639
17.2 云想衣裳花想容——Qt与GTK644
17.2.1 发展历史644
17.2.2 GTK与Qt的比较646
17.2.3 大家闺秀Qt648
17.2.4 小鸟依人GTK657
第18章 这里也是鼓乐笙箫667
18.1 与多媒体的第一次握手667
18.1.1 听声668
18.1.2 看影669
18.1.3 多媒体工作室674
18.2 鼓——ffmpeg676
18.2.1 羞辱柱与软件许可676
18.2.2 多媒体的来龙去脉678
18.2.3 家庭成员684
18.3 乐——MPlayer与VLC685
18.3.1 绿色的MPlayer685
18.3.2 浪漫的VLC687
18.4 笙——FrameBuffer690
18.4.1 原理691
18.4.2 设置FrameBuffer691
18.4.3 文字倒置滚动692
18.5 箫——V4L2与ALSA697
18.5.1 V4L2698
18.5.2 ALSA703
18.6 结束语707
第19章 团结就是力量708
19.1 标准的前世今生708
19.1.1 一场拆分引发的标准708
19.1.2 站在POSIX肩膀上的LSB709
19.1.3 工作组711
19.1.4 标准化流程712
19.2 认证713
19.3 工具714
19.3.1 LSB SDK715
19.3.2 App Checker716
19.3.3 Distribution Checker718
19.3.4 LSB Navigator720
19.3.5 lsb_release的规范定义和实现720
19.4 LSB的前世今生721
19.4.1 吃一堑,长一智722
19.4.2 “哥只是个传说”723
19.4.3 意气风发的LSB5.0724
19.5 结束语724
附录 我的Linux,我做主725
文章试读:几乎所有Linux的新用户都会认为Linux的图形界面是相当地绚丽又多彩。因为这毕竟是一种全新的体验,那种超脱Windows俗套的快感就会油然而生。对于刚刚翻开这本书的人来说,如果对Linux是抱有这样认识的,那就太棒了,因为咱们又多了一个洗脑的对象了:P。此时此刻,真正的亲密接触就要开始啦…… 1.2.1 没有图形的图形 虽然Linux的图形界面美轮美奂,但是有一个秘密却不得不告诉你:Lin...
(查看全部试读)