基本信息
- 原书名:Linux Kernel Hacks

编辑推荐
一线内核技术专家经验和智慧结晶,深刻解读Linux内核的资源管理、文件系统、网络、虚拟化、省电技术、调试、性能调优、分析与追踪等核心主题
相关推荐:
<a href="http://product.china-pub.com/3768005" target="_blank"><img border="0" src="http://images.china-pub.com/ebook3765001-3770000/3768005/zcover.jpg" width="79" height="100"/>《Linux高性能服务器编程》</a>
<a href="http://product.china-pub.com/3682836" target="_blank"><img border="0" src="http://images.china-pub.com/ebook3680001-3685000/3682836/zcover.jpg" width="79" height="100"/>《构建高可用Linux服务器(第2版)》</a>
<a href="http://product.china-pub.com/3767800" target="_blank"><img border="0" src="http://images.china-pub.com/ebook3765001-3770000/3767800/zcover.jpg" width="79" height="100"/>《Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理(第2版)》</a>
<a href="http://product.china-pub.com/3767304" target="_blank"><img border="0" src="http://images.china-pub.com/ebook3765001-3770000/3767304/zcover.jpg" width="79" height="100"/>《鸟哥的Linux私房菜 基础学习篇+服务器架设篇(第三版)》</a>
<a href="http://product.china-pub.com/51609" target="_blank"><img border="0" src="http://images.china-pub.com/ebook50001-55000/51609/zcover.jpg" width="79" height="100"/>《鸟哥的Linux私房菜.基础学习篇(第三版)》</a>
<a href="http://product.china-pub.com/3661115" target="_blank"><img border="0" src="http://images.china-pub.com/ebook3660001-3665000/3661115/zcover.jpg" width="79" height="100"/>《鸟哥的Linux私房菜——服务器架设篇(第三版)》</a>
内容简介
作译者
作者简介
池田 宗广(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等。
撰稿人简介
畑山 大辅(HATAYAMA Daisuke)
crash gcore扩展模块的维护人员。对调试和故障分析感兴趣。最喜欢做的事情就是从元数据对系统进行研究。正在努力练习马拉松长跑,争取在搞技术的同时锻炼出健康的体魄。近期目标是四小时内跑完马拉松。
藤田 朗(Akira Fujita)
任职于NEC软件东北株式会社。担任软件工程师。大学毕业之后开始转向软件行业。喜欢Linux文件系统(ext3/ext4)。喜欢defrag,爱好五人足球。
技术审校者简介
刘波,资深Linux内核开发工程师、应用开发工程师和嵌入式开发工程师,现在重庆工商大学计算机科学与信息工程学院担任教师,从事Linux程序开发和Oracle管理方面的教学工作,在读博士。此外,他还专注于大规模机器学习、数值分析与计算、最优化理论(凸优化)的研究。
目录
编者与作者介绍
主编致辞
前言
第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
前言
然而,最近的Linux所提供的并不只有基本功能。随着功能的不断发展,现在已经出现了很多特定领域的便捷功能和独特功能。即使是内核黑客也很少有人能够完全掌握。
本书从Linux内核的众多先进功能中选取了一些必备并且有趣的内容进行介绍,同时也对内部的运行机制和结构进行了阐述。此外,本书还介绍了熟练使用这些功能所需的工具、设置方法以及调整方法等。
省电就是其中一项内容。除了使用方法以外,本书还介绍了省电的理念、与硬件的关系等。此外,还提到了当前广受关注的虚拟化、资源管理、标准文件系统中所采用的ext4等已有功能和新功能。对于已有功能,本书结合最新的源码,介绍它的更改内容和新增功能。其中也包括文档中没有记载,且必须对内核内部有一定理解才能得知的信息,因此,即使是比较了解这个功能的人也可能会有新的发现。另外,本书还介绍了内核的相关工具,其中gcore在重要的系统中就是非常可靠的工具。
最新的Linux内核中安装了强大的追踪、概要分析功能,具备很多方便实用的功能。这些功能不仅能够很方便地达到预期的目的,而且对于分析内核功能也非常有用。甚至对于内核构建的高手也有一定帮助。
全书列举了非常多的实例,让读者更快地学会如何使用。对于想要熟练使用内核的读者来说,本书也是非常好的参考书。
本书还为想要了解Linux内核的读者以及读过本书后开始对Linux内核开发产生兴趣的读者,介绍了获取内核源码的方法和内核开发方法等内核构建入门所需的信息。我们希望读者能够通过本书更加了解Linux的世界。
在电脑刚刚诞生的时候,有一段时期人们认为“如果想要提高编程水平就查看UNIX代码”。因为最快的方式就是参考天才所编写的最先进的代码并进行模仿。而在阅读Linux内核的代码时,相信大家也会深有同感。
Linux内核是开源软件,无论是谁都可以参与开发。Linux内核的代码花费了大量的时间和精力来编写。各领域都由具有专业知识的维护人员进行长期的管理,从而得到不断的改进。基于电子邮件的开发也在不断进行,因此可以看到各种讨论,并了解到当前代码的发展历程。每次看到Linux内核的代码,都会让人感叹其中凝聚的智慧和努力,也感受到当时的辛苦。希望读者能够从本书开始接触Linux这个不一般的世界,诞生更多的内核高手。
本书主要内容
本书介绍的是Linux内核所提供的功能。不仅有比较基础的功能,还有一些功能需要具有一定的知识才能使用。
此外,还介绍了使用功能时需要用到的信息和命令。除了内核以外,本书还将介绍相关的应用程序。基本上是基于TUI进行说明的,但也有一部分关于GUI的介绍。
涉及的主要版本为Linux内核2.6.18到写作时最新的Linux内核3.0注1。其中一部分还介绍了Red Hat Enterprise Linux 4(RHEL4:基于Linux内核2.6.9)的功能。示例代码已经在工作中经常使用的RHEL和任何用户都可以使用的Fedora、CentOS等中进行过严格测试。
本书不涉及Linux内核的实际安装和以算法等为主体的内容。
本书使用方法
本书可以按顺序依次阅读,另外由于每一节之间都是独立的,因此也可以从感兴趣的章节开始阅读。第1章介绍了内核的基础知识,如果是第一次接触内核,建议先学习第1章。本书在介绍已有功能时也加入了一些新的信息。相信即使是经验丰富的人也可以在本书中有新的发现,因此希望各位读者能够将本书从头到尾完整读一遍。本书还收录了一些作者珍藏的信息。详细内容请参见参考文献。
书摘
内核入门
一提起内核包,总会让人感觉似乎困难至极、如临深渊一般。但其基本的操作与其他开放源代码软件包并没有什么不一样,都是首先获取源代码,进行解读,然后修改或者添加新功能对应的代码,并编译、测试。本章将介绍这些内核包操作中最基础的知识,以及Linux内核特有的方法。
HACK #1 如何获取Linux内核
本节介绍获取Linux内核源代码的各种方法。“获取内核”这个说法看似简单,其实Linux内核有很多种衍生版本。要找出自己想要的源代码到底是哪一个,必须首先理解各种衍生版本的意义。
接下来将简单介绍Linux内核的开发模式,并分析各种衍生版本在其中所处的地位,然后介绍获取这些衍生版本的源代码的方法。
内核的种类
想要获取正确的Linux内核源代码,首先必须了解Linux内核的开发模式。
Linux内核是由多个开发者以分散型的模式进行开发的。这里出现的“分散型”,是指多个衍生源码树同时存在。下面将简单介绍一些具有代表性的源码树及其地位。
……