zoukankan      html  css  js  c++  java
  • Debian下编译Linux内核

     一直以为Linux内核的编译是一件很复杂的事情,虽然有几次也实在是按捺不住冲动,要自己来编译一下试试,但是类似的几次尝试都是以失败而告终。在不久前,看到过一些关于Debian下编译内核的文章,说得很详细,而且似乎看起来也并不是很复杂的样子,于是决定自己编译一下内核,毕竟对于使用Linux的人来说没有自己编译过内核还真是一件叫人遗憾的事情。在这里记下的是自己编译2.6.19内核的方法,希望对于大家会有一些小小的帮助。

    1 下载内核:我们可以在http://www.kernel.org上找到我们所希望的内核,在这里我们使用的较新的2.6.19版本的内核。

    2 将内核解压/usr/src目录下:

               代码:   
    1. $ cd /usr/src



    代码:  
    1. $ tar -xvf linux-2.6.19.tar.bz2

    以前看到过的一些关于内核编译的文章都会说到在这里创建一个指向源码目录的linux链接,但是在新的2.6版本的内核中没有进行这一步,而且有时如果这样做反倒会造成编译不成功,所以在这里我们也就把这一步免了。

    3 安装所需的软件包:

      代码:  
    1. $ apt-get install kernel-package libncurses5-dev fakeroot build-essential

    4 配置内核:

      代码:  
    1. $ cd linux-2.6.19



      代码:  
    1. $ make menuconfig

    在这里我们可以按照我们的兴趣与需要来配置内核。而如果我们对于这些配置选项并不是很熟悉,我们可以使用我们以前的配置文件来进行配置:

      代码:  
    1. $ cp /boot/config-`uname -r` .config

    5 编译内核:

      代码:  
    1. $ make-kpkg clean



      代码:  
    1. $ fakeroot make-kpkg --append-to-version=.061228 linux-image

    在这里我们有必要先介绍一下make-kpkg与fakeroot这两个软件包。
    在Debian编译内核,我们可以使用make-kpkg,这是一个可以自动替换"make dep;make clean;make bzImage;make modules"命令序列的脚本。而最其最常用的两个参数就是--append-to-version与--revision。
    --append-to-version这个选项可以让我们来指定一个额外的内核版本,这个可以成为内核名的一问分。我们可以使用数字,"+",",",但是不要使用下划线"_".比较常见的用法是我们可以当天的日期作为参数,从而来区分不同的内核。如我正在运行的内核版本号如下:

      代码:  
    1. mylxiaoyi@debian:~$ uname -r
    2. 2.6.19.061228

    这里我们要注意的是我们要避免设置--append-to-version为如"-686","-K7","-sparc"等值,因为这些值常为Debian的预编译内核所使用。
    内核模块位于/lib/modules子目录下。每一个内核有他自己的子目录。每次当我们以一个新的名字来安装一个新的内核时,这个包安装程序就会在/lib/modules目录下创建一个新的子目录来保存他自己的模块。
    这就意味着每一次我们使用--append-to-version的一个新的值来编译一个内核时,我们就可以保证这个内核有一个新的名字,而他的模块也不会与其他的内核模块相冲突。
    注意:如果我们使用相同的名字来安装一个内核时,安装程序就会覆盖掉已安装的内核及其模块。
    --revision只会影响Debian软件包本身的名字而不是内核的名字。与--append-to-version相似,我们只可以使用数,"+",".",不要使用下划线"_"。如果我们并没有为--revision指定一个值,make-kpkg就会使用"10.00.Custom".
    使用不同的--revision的值就可以避免相同名字的内核之间的冲突。
    Debian kernel-image文件的名字格式如下:

      代码:  
    1. kernel-image-(kernel-version)(--append-to-version)_(--revision)_(architecture).deb

    进行内核编译时我们用到的另外一个软件包就是fakeroot。使用fakeroot我们可以普通用户的身份来运行make-kpkg,并且可以以普通的权限来完成大多数的工作。在接近工作的结尾时,fakeroot就会以模拟root环境来创建一个kernel-image软件包。
    这样经过一段时间的等待以后我们就会得到一个deb包,如:

      代码:  
    1. linux-image-2.6.19.061228_2.6.19.061228-10.00.Custom_i386.deb

    这时我们就可以使用dpkg来安装这个包了:

      代码:  
    1. $ dpkg -i linux-image-2.6.19.061228_2.6.19.061228-10.00.Custom_i386.deb

    6 创建ramdisk:

    在新版本的内核中创建ramdisk使用的是mkinitrd.yaird。我们首先要安装这个软件包:

      代码:  
    1. $ apt-get install mkinitrd.yaird

    在使用这个软件包创建ramdisk之前,我们需要修改/boot/config-2.6.19.061228文件,将

      代码:  
    1. CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"

    这句注释掉,否则我们就会得到一个错误信息。

      代码:  
    1. $ vim /boot/config-2.6.19.061228



      代码:  
    1. [...]
    2. # CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
    3. [...]

    这样以后我们就可以创建ramdisk了:

      代码:  
    1. $ mkinitrd.yaird -o /boot/initrd.img-2.6.19.061228 2.6.19.061228

    7 修改Grub配置文件使用新版本的内核启动。

    呵呵~~这样看来在Debina下编译内核也并不是一件很困难的事情,这样我们就可以完全按照我们的需要来配置我们的Linux内核了~~

    参考:

    http://www.linuxsir.org/bbs/showthread.php?t=284609



    http://blog.chinaunix.net/u/19185/showart_202665.html


  • 相关阅读:
    读后感
    每日总结
    融e学 一个专注于重构知识,培养复合型人才的平台【获取考试答案_破解】
    营销经验总结:如何才能提升h5游戏代入感?
    在通过《令人心动的offer》中,掌握学到的公司选择企业邮箱3大技巧!
    2020年的最后一个月来了!TOM 企业邮箱陪伴您度过!
    用户主动分享h5游戏的4大理由
    企业邮箱的作用是什么?企业邮箱有什么用处?
    电子邮箱系统哪家好?邮箱登陆入口是?
    专业外贸企业邮箱,企业邮箱退信怎么办?
  • 原文地址:https://www.cnblogs.com/dyllove98/p/2462073.html
Copyright © 2011-2022 走看看