编译安装linux内核,基于debian的linux

  编译安装linux内核,基于debian的linux

  我一直以为Linux内核的编译是一件很复杂的事情。虽然有几次忍不住想自己编译,但类似的尝试都以失败告终。前不久看到一些关于Debian下编译内核的文章,很详细,看起来也不是很复杂,于是决定自己编译内核。毕竟用Linux的人没有自己编译内核真的很可惜。这里写下的是自己编译2.6.19内核的方法。希望对大家有点帮助。

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

  2将内核解压缩到/usr/src目录中:

  之前一些关于内核编译的文章会在这里讲到创建一个linux的链接到源目录,但是在新的2.6版本内核中并没有进行这一步,有时会导致编译不成功,所以我们在这里省略这一步。

  3安装所需的软件包:

  在这里,我们可以根据自己的兴趣和需求来配置内核。如果我们不熟悉这些配置选项,我们可以使用以前的配置文件进行配置:

  这里有必要介绍两个软件包,make-kpkg和fakeroot。

  在Debian编译器内核中,我们可以使用make-kpkg,它可以自动替换make dep使干净;制作bzImage制作模块命令序列的脚本。两个最常用的参数是-append-to-version和- revision。

  -append-to-version这个选项允许我们指定一个额外的内核版本,它可以是内核名称的查询。我们可以使用数字,,,,但不要使用下划线 _ 。一个常见的用法是,我们可以使用一天中的日期作为参数来区分不同的内核。例如,我运行的内核版本号如下:

  这里我们应该注意的是,我们应该避免将-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内核映像文件的名称格式如下:

  我们在编译内核时使用的另一个软件包是fakeroot。有了fakeroot,我们就可以以普通用户的身份运行make-kpkg,用普通权限就可以完成大部分工作。在工作接近尾声时,fakeroot将通过模拟根环境来创建一个内核映像包。

  所以经过一段时间的等待,我们会得到一个deb包,比如:

  6创建ramdisk:

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

  在使用这个包创建ramdisk之前,我们需要将/boot/config-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

编译安装linux内核,基于debian的linux