



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
下面是Linux内核开发者Robert Love写的一篇入门文章,号称“包教会”,推荐对Linux内核开发感兴趣爱好者、开发者一定不要错过。当然,虽然标题说是包教会,你可能需要一定的Linux命令以及C语言的基础。以下是正文内容: Linux内核一直都被视为学习Linux最难的一块,相信大家也一定看过不少关于内核的文章,但扪心自问,你现在究竟掌握了多少?本文将从零开始介绍被视为高深的Linux内核,内容涉及内核源代码的下载,编译,安装,以及内核开发相关的内容。如何获取Linux内核源代码 下载Linux内核当然要去官方网站了,网站提供了两种文件下载,一种是完整的Linux内核,另一种是内核增量补丁,它们都是tar归档压缩包。除非你有特别的原因需要使用旧版本的Linux内核,否则你应该总是升级到最新版本。使用Git 由Linus领头的内核开发队伍从几年前就开始使用Git版本控制系统管理Linux内核了(参考阅读:什么是Git?),而Git项目本身也是由Linus创建的,它和传统的CVS不一样,Git是分布式的,因此它的用法和工作流程很多开发人员可能会感到很陌生,但我强烈建议使用Git下载和管理Linux内核源代码。你可以使用下面的Git命令获取Linus内核代码树的最新“推送”版本:$ git clone git://pub/scm/linux/kernel/git/torvalds/linux-2.6.git 然后使用下面的命令将你的代码树与Linus的代码树最新状态同步:$ git pull安装内核源代码 内核包有GNU zip(gzip)和bzip2格式。Bzip2是默认和首选格式,因为它的压缩比通常比gzip更好,bzip2格式的Linux内核包一般采用linux-x.y.z.tar.bz2形式的文件名,这里的x.y.z是内核源代码的具体版本号,下载到源代码包后,解压和抽取就很简单了,如果你下载的是bzip2包,运行:$ tar xvjf linux-x.y.z.tar.bz2 如果你下载的是gzip包,则运行:$ tar xvzf linux-x.y.z.tar.gz 无论执行上面哪一个命令,最后都会将源代码解压和抽取到linux-x.y.z目录下,如果你使用Git下载和管理内核源代码,你不需要下载tar包,只需要运行git clone命令,它就会自动下载和解压。内核源代码通常都会安装到/usr/src/linux下,但在开发的时候最好不要使用这个源代码树,因为针对你的C库编译的内核版本通常也链接到这里的。应用补丁 Linux内核开发人员会将自己的修改做成补丁与其它人员分享,而且补丁是增量的,增量补丁是从一个内核树移动到另一个内核树的有效方法,不用下载完整的内核包就可以升级内核,不仅可节省带宽,也节省了内核升级时间,应用补丁之前先进入内核源代码树所在目录,然后运行:$ patch p1 .config$ make oldconfig 内核配置好后,使用下面的命令进行生成:$ make 和2.6以前的内核不一样,在生成内核前不再需要执行make dep命令了,依赖树会自动维护,也不需要再指定特定的生成类型,如bzImage,或独立生成模块,默认Makefile规则会自动处理好一切。将干扰信息最小化 在生成过程中会遭到警告和错误的干扰。最小化干扰信息的一个诀窍是重定向make的输出,但仍然会看到一些警告和错误:$ make ./detritus 如果你想查看生成输出,你可以事后阅读这个文件,如果你完全不想看到任何输出,那么就重定向到/dev/null:$ make /dev/null同时执行多个生成作业 Make命令提供了一个功能可以将生成过程拆分成多个平行的作业,这些作业可以独立运行,也可以并行运行,在多处理器系统上可以极大地提高生成速度,也提高了处理器利用率,因为生成大型源代码树会出现大量的I/O等待时间。默认情况下,make只能拆分成一个作业,因为Makefiles常常会包含不正确的依赖信息,如果真是这样,多个并行执行的作业将会引起混乱,最终会导致生成过程失败,如果Makefiles中的依赖信息无误,那么完全可以拆分成多个作业执行,如:$ make jn 这里的n表示拆分的作业数量,通常按每个处理器拆分成1-2个作业,例如,在一个16核心的机器上 ,你可以运行:$ make -j32 /dev/null 使用distcc或ccache等优秀的工具也可以大大提高生成速度。安装新内核 内核生成好之后,你需要安装它,如何安装于系统架构和引导加载程序有关,我们以x86架构,grub引导加载程序为例进行说明。首先将arch/i386/boot/bzImage拷贝到/boot,重命名为vmlinuz- version,这里的version也是版本号,然后编辑/boot/grub/grub.conf,为新内核添加相应的项目,如果是使用LILO引导装载程序,则修改/etc/lilo.conf文件,然后运行lilo。模块的安装与系统架构无关,都是自动完成的,以root用户运行:% make modules_install 这个命令会将所有编译好的模块安装到/lib/modules下对应的子目录中。生成过程会在源代码树根目录下创建一个System.map文件,它包含一个符号查找表,映射内核符号到它们的起始地址,在调试期间可以用它将内存地址转换成函数和变量名。可能会遇到的问题 与普通用户空间的应用程序相比,Linux内核有多个特殊的属性,下面是我认为最重要的一些不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广州理工学院《数控技术》2023-2024学年第二学期期末试卷
- 安徽涉外经济职业学院《网店运营与管理》2023-2024学年第二学期期末试卷
- 2025年中国通信服务湖南省通信产业服务有限公司招聘笔试参考题库含答案解析
- 2025年浙江温州瑞安市瓯飞建设投资开发有限公司招聘笔试参考题库含答案解析
- 圆形小猪创意美术课件
- 挥手怀念我的父亲
- 点亮创业之星-掌握市场策略遵循法律规定
- 迎接未来-固体饮料制造年终总结-固体饮料发布会
- 家装设计方案讲解要点
- 房产领域年度峰会
- NB-T+10110-2018风力发电场技术监督导则
- JGJ52-2006 普通混凝土用砂、石质量及检验方法标准
- 2024高考有机专题真题
- 2024旋转电机绕组绝缘第2部分:定子绕组绝缘在线局部放电测量
- TD/T 1068-2022 国土空间生态保护修复工程实施方案编制规程(正式版)
- DZ∕T 0382-2021 固体矿产勘查地质填图规范(正式版)
- 《研学旅行课程设计》课件-研学课程方案设计
- 小儿补液的基础与临床课件
- GB/T 9442-2024铸造用硅砂
- 戏剧之美(山东联盟)智慧树知到期末考试答案2024年
- MOOC 商务英语-北京交通大学 中国大学慕课答案
评论
0/150
提交评论