其中一个最大的吸引,使用Linux是它很容易定制和最有趣的事情是定制内核本身,Linux操作系统的心脏之一。 有可能你很可能永远不必编译自己的内核。 通过软件包管理系统提供的分发和更新通常是足够好的,但有时可能需要重新编译内核。
Debian中的内核编译
其中一些原因可能是特殊的硬件需求,打造一个整体的内核而不是模块化的一个,通过删除无用的驱动程序,运行的内核的开发优化内核的欲望,或者只是为了了解更多关于Linux操作系统 。 在这种情况下,我们要编写一个新发布的内核3.12,在DebianWheezy 。 新发布的内核3.12有许多新的功能,包括了NVIDIA的Optimus和内核的Radeon显卡驱动程序的一些新的驱动程序。 它还提供了对文件系统EXT4巨大的改进,以及一些更新XFS和增加了Btrfs。
如何编译和安装Kernel 3.12在Debian
在开始之前,我们将需要一些软件包,即fakeroot的 和内核封装 :
# apt-get install fakeroot kernel-package
现在,让我们抓住从最新的源码包www.kernel.org或者你可以使用下面的wget命令下载它。
# wget -c https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.12.tar.xz
现在,让我们解压缩归档文件。
# tar -xvJf linux-3.12.tar.xz
之后,提取,将创建一个新的内核源目录。
# cd linux-3.12
现在,我们将要配置内核。 最好先从当前正在使用的配置开始,然后从那里开始工作。 要做到这一点,我们将在/ boot目录拷贝当前配置到当前工作目录并将其保存为.config文件 。
# cp /boot/config-`uname –r`.config
要从实际配置开始,您有两个选项之一。 如果您安装了X11,你可以运行xconfig,并有一个很好的GUI菜单,以帮助您为您配置的内核 。 如果您在CLI环境中运行,你可以执行make menuconfig。 您将需要安装使用menuconfig的 的libncurses5的-dev软件包:
# apt-get install libncurses5-dev # make menuconfig
内核menuconfig
正如你所看到的,一旦你在你所选择的配置中,有一吨的可用于您的内核不同的选项。 事实上,对于本教程的范围,有太多的。 当选择内核选项,最好的办法是通过试验和错误,并做大量的谷歌搜索。 这是最好的学习方式。 如果您只是只是想更新内核到最新的版本,你没有改变任何东西,可以简单地选择“ 保存配置 ”。 由于我们当前内核的配置文件复制到新内核的config文件。
保存内核配置
要认识到:“ 内核模块加载器 ”,在“ 可加载模块的支持 ”被选中。 如果不是,并且你正在使用内核模块,它可以严重地混乱的东西。
内核模块
一旦是直接的,它是时候清理源代码树。
# make-kpkg clean
make-kpkg清洁
最后,现在是构建内核包的时候了。
# export CONCURRENCY_LEVEL=3 # fakeroot make-kpkg --append-to-version "-customkernel" --revision "1" --initrd kernel_image kernel_headers
正如你可以看到上面,我们已经出口了一个名为CONCURRENCY_LEVEL变量。 拇指与此变量的一般规则是将其设置为内核的数量您的电脑有+ 1因此,如果您使用的是四核,你会:
# export CONCURRENCY_LEVEL=5
这将大大加快你的编译时间。 编译命令的其余部分是很自明的。 与fakeroot的 ,我们正在内核软件包( 使用make-kpkg),添加一个字符串,命名为内核(“customkernel”),给它一个版本号(“1”)和我们告诉使用make-kpkg构建两个图像包和报头封装 。 一旦编译完成,并根据你的机器上,你正在编译模块数量,可能需要相当长的时间,将目录更改为一个来自Linux的源目录回来了,你应该看到两个新*的.deb文件-一台Linux映像文件和一个Linux的文件头 :
新的Kernel Deb软件包
现在,您可以安装这些文件,就像您安装任何* .deb文件与dpkg的命令 。
# dpkg -i linux-image-3.12.0-customkernel_1_i386.deb linux-headers-3.12.0-customkernel_1_i386.deb
安装后
新的内核,因为它是一个Debian软件包,将更新你需要的一切,包括bootloader。 一旦安装后,只需重新启动 ,并选择从GRUB / LILO菜单中的新内核。
新内核选择
请务必在密切关注任何错误信息 的引导过程 ,因此您可以解决任何问题。 如果出于某种原因,你的系统不开机,你可以随时退回到你的最后一个工作的内核 ,然后再试一次。 非功能性内核总是可以用apt命令删除。
# sudo apt-get remove linux-image-(non-working-kernel)