Not Only Algorithm,不仅仅是算法,关注数学、算法、数据结构、程序员笔试面试以及一切涉及计算机编程之美的内容 。。
你的位置:NoAlGo博客 » 技术 » ,

Debian下编译Linux内核

内核是操作系统的核心,负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。但是系统默认的内核可能带有许多我们并不需要的特性,或者需要的特性而又不支持,这时我们可以自己手动编译安装一个新的内核,完全定制一个专属的内核版本。
本文将介绍在Debian下编译Linux内核的方法。

下载源码和工具

在官网上下载内核源代码:http://www.kernel.org/,注意选择内核的F版,即完整版。
如果不手动下载,可以运行下列命令下载2.6内核,可以根据需要修改后面的版本后。

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.39.4.tar.gz

另外需要安装有关编译程序,如make ,gcc, make-kpkg等与运行menuconfig和编译内核相关的工具。首先需要配置好源,然后运行命令:

sudo apt-get install make gcc make-kpkg kernel-package libncurses5-dev

上面下载得到的是一个压缩包,需要解压成文件,这里可以解压到任何地方,而不用一定非得是/usr/src,这里直接解压到原目录下:

tar zxvf linux-2.6.39.4.tar.gz

解压完毕,进入得到的文件夹:

cd linux-2.6.39.4/

配置编译内核

建议在发行版默认的config的基础上进行配置,这样配置出的内核和发行版本身才会有更好的相容性。比如复制默认配置文件到当前目录:

cp /boot/config-`uname -r` ./.config

或者在之后的界面上手动导入/boot/config-‘x.x.x.x’(根据当前系统使用的内核版本而定)。
配置内核的命令有几种,但各有缺点,“make config”太简陋,“make xconfig”虽然直观但需要庞大的qt类库支持,menuconfig应该是最佳的折中,所以这里配置命令如下:

make menuconfig

然后再menuconfig界面上进行配置。用到的键只有几个,esc退出菜单,空格改变选项状态,光标键上下左右移动,回车选定。选项意义:M是编译成可以随时加入的模块,*是编译进入内核,空就是不要。配置选项非常多,如果你自己使用的内核已经选用了某个选项,如果没有充分的理由不要随便改动。这样虽然内核不那么精简,但是不容易出现问题。我们可以精简的部分是硬件模块部分,对于自己没有的硬件可以放心清除。对于里面读题的设置选项,这里不进行详细展开,可以参考具体文档。

Debian下编译内核可以使用make-kpkg工具,传统的编译需要依次经过“make”、“make modules”、“make modules_install”、“make install”等一系列步骤,然后最终编译完成后还要手动添加GRUB启动信息进行引导才能正常使用,而make-kpkg组合了其中的很多步骤,使用起来非常方便。

首先清理之前编译的文件:

sudo make-kpkg clean

然后执行编译:

sudo make-kpkg --initrd --revision abcdef --append-to-version -201410 kernel_image kernel-headers -jn

其中各个参数的意义如下:

  • –initrd选项会让make-kpkg自动帮我们生成initramfs。
  • –revision会给生成的deb文件加上一个版本信息。这个参数只是影响到文件名,如果不指定,默认会是“10.00.Custom”。
  • –append-to-version也是一种版本信息,它不仅出现在deb安装包的文件名里,也会添加到内核版本号后面。
  • kernel_image表示生成内核和默认模块的安装包。
  • kernel_headers表示生成一个内核头文件的安装包。
  • -jn表示使用多线程编译,n根据cpu的核心数量来进行选择,可以提高cpu利用率,加快编译速度。

使用make-kpkg来编译内核,还有一个好处是我们是通过包管理器来安装新的内核,当不再需要这个内核时可以简单地通过dpkg命令或新立得软件包管理器来完全卸载,而不需要一个个手动删除。

安装使用内核

内核编译完成后需要进行安装。编译好的内核在上一层目录,包括以下两个文件:

  • linux-headers-2.6.39.4201410_2.6.39.4201410-10.00.Custom_amd64.deb
  • linux-image-2.6.39.4201410_2.6.39.4201410-10.00.Custom_amd64.deb

如果不搞开发,只要安装内核就可以,头文件以后要用的时候再说。安装命令如下:

sudo dpkg -i linux-image-2.6.39.4201410_2.6.39.4201410-10.00.Custom_amd64.deb

之后可以查看是否安装成功:

ls -l /boot/

安装完成后可以重启电脑使用新内核:

sudo reboot

重启后可以选择需要使用哪个版本的内核,可以看到新安装的2.6的内核已经负在原先3.x的内核的条目下边,只要选择即可进行使用。

上一篇: 下一篇:

我的博客

NoAlGo头像编程这件小事牵扯到太多的知识,很容易知其然而不知其所以然,但真正了不起的程序员对自己程序的每一个字节都了如指掌,要立足基础理论,努力提升自我的专业修养。

站内搜索

最新评论