Kernel 编译

Kernel
 
我们的内核的工作:
1 cpu的时间片分配,进程的管理
2 内存的管理。这是最复杂的
3 文件系统
4 设备的驱动
5 设置网络协议
6 安全
7 加密功能


 我们的内核源代码下载下来大概70~80MB,但是在我们的/boot/vmlinuz只有1.8MB,惊人吧 我们的内核分类:微内核,单内核 

 微内核:内核本身只是一个极小极小的调度程序而所要完成的以上各种功能都是做成子系统的,只有我们在用到的时候才会掉到内核当中供我们使用但是这种内核的优势现在没有体现出来,不过设计是很不错的
 

  单内核:我们的linux就是单内核,将所有的功能都写在内核之内,但是假如我们的某个功能坏了就会影响我们整个内核的功能。于是我们的linux就引入了模块的功能,保留了各种模块的接口使得我们在使用该功能的时候就将模块动态装载其内,,这时我们的内核就保留一些核心功能。

   我的内核模块都是在/lib/modules/2.6.18-164.e15中以.ko结尾的文件.注意我们每一个内核都会对应一个目录在这里面,且我们的内核是不能升级的,只能全新的安装,在我们新安装一个内核之后系统就会在我们的/boot/grub/下生成量个相互对应的vmlinuz和initrd的文件,并下我们的/boot/grub/grub.conf中写入了一个新的title,同时在/lib/modules/下生成一个对应内核的模块目录大概有50MB,在该目录下的kernel中就是各种的模块,并在modules.dep定义了这些模块之间的依赖关系在kernel中有arch cypto sound net fs lib drivers模块。但是在这些模块中我们没有必要全要,所以我们可以根据自己的需要量身定做一个完全属于自己的内核

  安装内核方法:
   1 rpm的方式
   ]#rpm -ivh kernel 2.6.18-164.e.15 .i386.rpm

   2 编译安装新内核:
    2.1 只要我们编译安装东西,就需要我们安装快发环境
,但是我们一般用到的安装库有
     1 Development Tools
     2 Development Libraries
     3 X Software Development
     4 GNOME Software Development
     5 KDE Software Development

     yum -y groupinstall "" "" "" "" "''

   系统:32 64(字长比32位的多了4位)
    32位的系统最多支持到4G(2^32bit)的内存,我们的系统如果是64位的,但是我们的cpu是32位,一般来说我们就没法用,但是在早期我们就有PAE(physical address extend)的技术,也就是在32为的字长之上增加了4位(4*2^4=64G)

    内核,由 1内核本身 2 initrd 3内核模块组成

     内核的源代码:http://www.kernel.org

   2.2  查看我们系统上的各个硬件的信息
      1 cat /proc/cpuinfo  记录的是cpu相关的信息
      2 lspci 查看我们的pci设备,主板上的总线接口
      3 lsusb 查看我们的
      4 hal-device (硬件抽象层)
      5 hal-device-manager & 图像化的,详细的显示我们的计算机的设备信息
      我们根据我们查看到的信息选择我们要使用的模块
   2.3
      tar zxf linux-2.6.18.10.tar.gz -C /usr/src -C
              表示我们要解压缩到什么位置,注意一般都是要放到这里的
      cd /usr/src
      ln -sv linux-2.6.18.10.tar.gz linux 创建目录链接
              我们的目录只能创建软连接,使用linux是为了我们方便编译
      *  和内核做在一起的,不是和我们系统启动过程必须的建议不要做进内核,我们做进内核以为者我们不需要额外加载驱动就能使用,但是这样我们的内核很容易被一个损坏的模块而影响且不易改变,而模块要先装载进来,但是方便我们改变内核
      m 可动态装卸的
      n  表
   2.4
      使用
          ]#make menuconfig   文本的编译内核我们选择完了就会保存在/usr/src/linux/.config的文件这是一个自动生成的文件(如果我们拿不准到底哪些选项我们系需要用到,可以先将我们/boot/grub/下,config-2.6.18-164.e15开头文件复制过来,并重命名为.config就行了,这时我们的make menuconfig命令就会将我们当前系统上所有的模块选项显示给大家,我们可以以此为母版来修改并保存,不过我们修改过之后原来从本系统上复制的config文件就会变为.config.old,而我们同时还会重新生成一个新.config的文件,这里面就是保存了我们对内核模块的选择)
           ]#make config  这个也能编译内核,但是这种方法编译耗时,耗力,对我们的个人能力要求极高,国内能搞好的不多不过我给大家推荐 金步国,这个人对内核编译的每个选项都有自己深入的理解,我们可以在网上google查看一下
           ]#make gconfig
           ]#make xconfig
      这两个都是图像化界面编译的,当然必须是在我们安装了对应的开发工具之后才能用到的

2.5
     我们模块的选择已经完成了,并保存到.config中。然后我们就要将源码使用make命令将其编译成2进制
          ]#make  这个时间的长短和我们计算机的内存大小,cpu的运算能力,有关一般40分钟左右,但是一定要注意,千万不能有任何的打断,或终端的掉线,等,否则全部  rm -rf 重新再来
    2.6
        ]#make modules_install  先安装内核模块
        ]#make install      再安装内核
        注意一定要按顺序来,否则就没法安装,我就曾经在此处因为颠倒顺序导致浪费掉了一天的时间。

     如果我们要想卸载编译安装的软件包,直接删除目录下对应的文件就行了,好像是用yum remove不行。

   总的来说内核的编译步骤不复杂,但是就是在选择模块时很费时间,我们redhat将自己编译内核时的模块选择就保存在
/boot/grub/config-2.6.18-164.e15中

 

本文出自 “近水楼台,向阳花木” 博客,转载请与作者联系!

你可能感兴趣的:(职场,kernel,休闲,edit)