《Linux内核精髓:精通Linux内核必会的75个绝技》前言
内核是操作系统的核心,操作系统的基本功能都是由内核提供的。文件生成和数据包传输等也是通过内核的功能实现的。但这些都不是简单的任务。平时可能意识不到,但这其中确实包含了很多先进技术。例如,在文件系统方面,配置文件时尽量减少磁盘扫描,在网络方面,由于路由表的入口数量庞大,因此设计时尽量保证对系统整体影响较小的设计。在内存管理、进程管理方面也作出了很多努力。解读这种先进技术也是内核构建的魅力之一。
然而,最近的Linux所提供的并不只有基本功能。随着功能的不断发展,现在已经出现了很多特定领域的便捷功能和独特功能。即使是内核黑客也很少有人能够完全掌握。
本书从Linux内核的众多先进功能中选取了一些必备并且有趣的内容进行介绍,同时也对内部的运行机制和结构进行了阐述。此外,本书还介绍了熟练使用这些功能所需的工具、设置方法以及调整方法等。
省电就是其中一项内容。除了使用方法以外,本书还介绍了省电的理念、与硬件的关系等。此外,还提到了当前广受关注的虚拟化、资源管理、标准文件系统中所采用的ext4等已有功能和新功能。对于已有功能,本书结合最新的源码,介绍它的更改内容和新增功能。其中也包括文档中没有记载,且必须对内核内部有一定理解才能得知的信息,因此,即使是比较了解这个功能的人也可能会有新的发现。另外,本书还介绍了内核的相关工具,其中gcore在重要的系统中就是非常可靠的工具。
最新的Linux内核中安装了强大的追踪、概要分析功能,具备很多方便实用的功能。这些功能不仅能够很方便地达到预期的目的,而且对于分析内核功能也非常有用。甚至对于内核构建的高手也有一定帮助。
全书列举了非常多的实例,让读者更快地学会如何使用。对于想要熟练使用内核的读者来说,本书也是非常好的参考书。
本书还为想要了解Linux内核的读者以及读过本书后开始对Linux内核开发产生兴趣的读者,介绍了获取内核源码的方法和内核开发方法等内核构建入门所需的信息。我们希望读者能够通过本书更加了解Linux的世界。
在电脑刚刚诞生的时候,有一段时期人们认为“如果想要提高编程水平就查看UNIX代码”。因为最快的方式就是参考天才所编写的最先进的代码并进行模仿。而在阅读Linux内核的代码时,相信大家也会深有同感。
Linux内核是开源软件,无论是谁都可以参与开发。Linux内核的代码花费了大量的时间和精力来编写。各领域都由具有专业知识的维护人员进行长期的管理,从而得到不断的改进。基于电子邮件的开发也在不断进行,因此可以看到各种讨论,并了解到当前代码的发展历程。每次看到Linux内核的代码,都会让人感叹其中凝聚的智慧和努力,也感受到当时的辛苦。希望读者能够从本书开始接触Linux这个不一般的世界,诞生更多的内核高手。
本书主要内容
本书介绍的是Linux内核所提供的功能。不仅有比较基础的功能,还有一些功能需要具有一定的知识才能使用。
此外,还介绍了使用功能时需要用到的信息和命令。除了内核以外,本书还将介绍相关的应用程序。基本上是基于TUI进行说明的,但也有一部分关于GUI的介绍。
涉及的主要版本为Linux内核2.6.18到写作时最新的Linux内核3.0。其中一部分还介绍了Red Hat Enterprise Linux 4(RHEL4:基于Linux内核2.6.9)的功能。示例代码已经在工作中经常使用的RHEL和任何用户都可以使用的Fedora、CentOS等中进行过严格测试。
本书不涉及Linux内核的实际安装和以算法等为主体的内容。
本书目录如下:
第1章 内核入门1
HACK #1 如何获取Linux内核1
HACK #2 如何编译Linux内核7
HACK #3 如何编写内核模块18
HACK #4 如何使用Git22
HACK #5 使用checkpatch.pl检查补丁的格式41
HACK #6 使用localmodconfig缩短编译时间44
第2章 资源管理47
HACK #7 Cgroup、Namespace、Linux容器47
HACK #8 调度策略55
HACK #9 RT Group Scheduling 与RT Throttling59
HACK #10 Fair Group Scheduling62
HACK #11cpuset65
HACK #12 使用Memory Cgroup限制内存使用量68
HACK #13 使用Block I/O控制器设置I/O优先级74
HACK #14 虚拟存储子系统的调整80
HACK #15 ramzswap85
HACK #16 OOM Killer的运行与结构91
第3章 文件系统98
HACK #17 如何使用ext498
HACK #18 向ext4转换101
HACK #19 ext4的调整104
HACK #20 使用fio进行I/O的基准测试111
HACK #21FUSE118
第4章 网络121
HACK #22 如何控制网络的带宽121
HACK #23 TUN/TAP设备126
HACK #24 网桥设备129
HACK #25 VLAN133
HACK #26 bonding驱动程序136
HACK #27 Network Drop Monitor141
第5章 虚拟化147
HACK #28 如何使用Xen147
HACK #29 如何使用KVM153
HACK #30 如何不使用DVD安装操作系统159
HACK #31 更改虚拟CPU分配方法,提高性能161
HACK #32 如何使用EPT提高客户端操作系统的性能166
HACK #33 使用IOMMU提高客户端操作系统运行速度173
HACK #34 使用IOMMU+SR-IOV提高客户端操作系统速度183
HACK #35 SR-IOV带宽控制187
HACK #36 使用KSM节约内存189
HACK #37 如何挂载客户端操作系统的磁盘194
HACK #38 从客户端操作系统识别虚拟机环境200
HACK #39 如何调试客户端操作系统205
第6章 省电213
HACK #40 ACPI213
HACK #41 使用ACPI的 S状态224
HACK #42 使用CPU省电(C、P状态)226
HACK #43 PCI设备的热插拔236
HACK #44 虚拟环境下的省电240
HACK #45 远程管理机器的电源246
HACK #46 USB的电力管理251
HACK #47 显示器的省电254
HACK #48 通过网络设备节省电能260
HACK #49 关闭键盘的LED来省电263
HACK #50 PowerTOP269
HACK #51 硬盘的省电276
第7章 调试282
HACK #52 SysRq键282
HACK #53 使用diskdump提取内核崩溃转储288
HACK #54 使用Kdump提取内核崩溃转储293
HACK #55 崩溃测试297
HACK #56 IPMI看门狗计时器299
HACK #57 NMI看门狗计时器305
HACK #58 soft lockup307
HACK #59 crash命令312
HACK #60 核心转储过滤器326
HACK #61 生成用户模式进程的进程核心转储329
HACK #62 使用lockdep查找系统的死锁335
HACK #63 检测内核的内存泄漏341
第8章 概要分析与追踪346
HACK #64 使用perf tools的概要分析(1)346
HACK #65 使用perf tools的概要分析(2)349
HACK #66 进行内核或进程的各种概要分析353
HACK #67 追踪内核的函数调用360
HACK #68 ftrace的插件追踪器366
HACK #69 记录内核的运行事件371
HACK #70 使用trace-cmd的内核追踪378
HACK #71 将动态追踪事件添加到内核中382
HACK #72 使用SystemTap进行内核追踪388
HACK #73 使用SystemTap编写对话型程序394
HACK #74 SystemTap脚本的重复利用399
HACK #75 运用SystemTap402
本书使用方法
本书可以按顺序依次阅读,另外由于每一节之间都是独立的,因此也可以从感兴趣的章节开始阅读。第1章介绍了内核的基础知识,如果是第一次接触内核,建议先学习第1章。本书在介绍已有功能时也加入了一些新的信息。相信即使是经验丰富的人也可以在本书中有新的发现,因此希望各位读者能够将本书从头到尾完整读一遍。本书还收录了一些作者珍藏的信息。详细内容请参见参考文献。
--------------------------
《Linux内核精髓:精通Linux内核必会的75个绝技》主编简介
高桥浩和(Hirokazu Takahashi),毕业于北海道大学电子工学系。从VAX全盛时代开始致力于各种UNIX系列操作系统的功能强化和内核调整,以及大规模系统的实时操作系统的设计等。以ISP的服务器构建为契机,开始正式研究Linux。
《Linux内核精髓:精通Linux内核必会的75个绝技》作者简介
池田宗广(Munehiro IKEDA),大学时代,亲眼看到X68000的gcc生成比主流编译器还要快好几倍的代码,因此开始确信免费软件/开源软件的可能性。此后,在历经咖啡店店员、生产技术人员、硬件工程师后,终于开始从事Linux内核开发。这个行业最吸引人的就是能够跨公司甚至跨国界与世界最优秀的技术人员进行交流。现居住在美国,爱好音乐演奏,当过鼓手,也当过主唱,最近几年一直在弹贝斯。不管是作为技术人员还是贝斯手都喜欢做幕后工作,只不过天生就不喜欢半途而废。
大岩尚宏(Naohiro Ooiwa),任职于Miracle Linux株式会社的软件工程师。大学时研究的是类似手机这样使用天线接收无线高频信号的模拟线路。从事Linux开发工作的时候开始深入研究软件。他是《Debug Hacks》的作者,本书是O扲EILLY JAPAN的第二本Hacks系列图书。
岛本裕志(Hiroshi Shimamoto),软件工程师。负责问题分析和调试。主要工作就是在出现故障时,根据日志和核心转储找出问题所在。因此在工作中会经常用到二进制和CPU运行的知识。同时也在论坛中从事过一些关于x86架构和调度程序的活动。目前关注虚拟化方面的活动。
竹部晶雄(Akio Takebe),在Xen、KVM等与虚拟化相关的开源论坛参与开发活动。主要负责IA64架构、RAS系列和PCI pass through的开发。在开源论坛认识了专门研究省电技术的工程师,从而开始对省电方面产生兴趣。现在正使用Ruby on Rails开发云计算相关软件。
平松雅巳(Masami Hiramatsu),Linux内核追踪的相关维护人员。主要工作是对perf和ftrace的动态事件进行维护。也参与了SystemTap的开发,最近热衷于将系统SystemTap的用途从专门用于追踪扩展到游戏编程等。主要使用的是bash和vim,但是因为bash不能用hjkl移动光标,总的来说属于vim用户。喜欢使用Ubuntu和Fedora。现在的研究方向是ARM Linux、Btrfs等。
《Linux内核精髓:精通Linux内核必会的75个绝技》撰稿人简介
畑山 大辅(HATAYAMA Daisuke),crash gcore扩展模块的维护人员。对调试和故障分析感兴趣。最喜欢做的事情就是从元数据对系统进行研究。正在努力练习马拉松长跑,争取在搞技术的同时锻炼出健康的体魄。近期目标是四小时内跑完马拉松。
藤田朗(Akira Fujita),任职于NEC软件东北株式会社。担任软件工程师。大学毕业之后开始转向软件行业。喜欢Linux文件系统(ext3/ext4)。喜欢defrag,爱好五人足球。
《Linux内核精髓:精通Linux内核必会的75个绝技》技术审校者简介
刘波,资深Linux内核开发工程师、应用开发工程师和嵌入式开发工程师,现在重庆工商大学计算机科学与信息工程学院担任教师,从事Linux程序开发和Oracle管理方面的教学工作,在读博士。此外,他还专注于大规模机器学习、数值分析与计算、最优化理论(凸优化)的研究。
--------------------------
书名:《Linux内核精髓:精通Linux内核必会的75个绝技》
原书名:Linux Kernel Hacks
豆瓣收藏:http://book.douban.com/subject/21332497/
样章下载:http://vdisk.weibo.com/s/pa9NQ
内容简介:
经过近20年的发展,Linux操作系统已经成为当今最成功的开源软件之一,使用广泛,影响深远。随着Linux操作系统功能的不断丰富和完善,Linux内核的源代码也从最初的几万行增加到如今的数百万行,庞大无比,对于Linux内核的研究者和开发者而言,要系统研究Linux内核绝非易事。鉴于此,本书选取了Linux内核的资源管理(CPU、内存、进程等)、文件系统、网络、虚拟化、省电、调试、概要分析、追踪、内核调整等核心主题进行了深入剖析和讲解,总结出了75个能使读者深刻理解Linux内核精髓的技巧和最佳实践。