《Linux内核设计与实现》——从内核出发

来源:互联网 发布:好看的网络剧2017 编辑:程序博客网 时间:2024/04/29 20:04

一、获取源代码

 1、使用git获取

   git  clone  git:://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git

   git  pull


 2、安装内核源代码


 3、使用补丁

   1)、在Linux内核社区中,补丁是通用语。可以以补丁的形式发布对代码的修改,也可以以补丁的形式接受其他人所做的修改。

   2)、要应用增量补丁,从你的内核源代码树开始,只需要运行:

         patch  -pl  <  . . ./patch-x.y.z



二、内核源码树(P11-12  表2-1)



三、编译内核

 1、配置内核

   1)、内核可以配置各种选项;以CONFIG_FEATURE形式表示,其前缀为CONFIG。配置既可以用来决定那些文件编译进内核,也可以通过预处理命令处理代码。

   2)、配置选项要么二选一,要么三选一。二选一就是yes或no。三选一可以是yes、no或module。module意味着该配置项被选定了,但编译的时候这部分功能的实现代码是

             以模块的形式生成的。在三选一的情况下,yes选项表示把代码编译进主内核映像中,而不是作为一个模块。

   3)、内核配置工具

       I、字符界面:make  config

       II、基于ncuese库编制的图形界面:make  menuconfig

       III、基于gtk+的图形工具:make  gconfig

       IV、默认配置:make  defconfig

       V、验证和更新配置:make  oldconfig

   4)编译(make)


 2、减少编译的垃圾信息

  1)、make  >  . . ./detritus:尽量少看到垃圾信息,却又不希望错过错误报告与警告信息。

  2)、make > /dev/null:吧无用的输出信息重定向到永无返回值的黑洞/dev/null。


 3、衍生多个编译作业

   1)、make程序能把编译过程拆分成多个并行的作业。

   2)、为了以多个作业编译内核,使用命令:make  -jn,其中n是要衍生的作业树。


 4、安装新内核

   1)、模块的安装是自动的,也是独立于体系结构的。以root身份,只需运行:make  modules_install。



四、内核开发的特点

    I、内核编程时既不能访问C库也不能访问标准的C头文件。

    II、内核编程时必须使用GUN  C。

    III、内核编程时缺乏像用户空间那样的内存保护机制。

    IV、内核编程时难以执行浮点运算。

    V、内核给每个进程只有一个很小的定长栈堆。

    VI、由于内核支持异步中断、抢占和SMP,因此必须时刻注意同步和并发。

    VII、要考虑可移植的重要性。



0 0
原创粉丝点击