0%

自己动手编译Linux内核

在学习内核驱动模块的时候,需要打开内核的一些调试选项。但是发行版本自带的内核可能会关闭这些调试选项,所以需要自己动手编译内核。这里总结一下编译、安装内核的方法和步骤。

下载内核源代码

首先使用命令uname -r确定现在运行的内核版本,再到kernel.org下载一个版本接近的内核。这里以2.6.27.57为例,将下载好的源码包放在/usr/src目录下。

1
2
3
4
5
6
[pk@localhost src]$ uname -r
2.6.27.41-170.2.117.fc10.i686
[pk@localhost src]$ pwd
/usr/src
[pk@localhost src]$ ls
kernels linux-2.6.27.57.tar.bz2

配置

解压源码包,并将现在运行kernel的.config文件拷贝进来,再进入menuconfig,打开自己需要的选项,关闭自己不需要的选项。.config文件可以在/lib/modules/$(uname -r)/build目录找到。配置的具体过程,略。

1
2
3
4
5
[pk@localhost src]$ sudo tar -xf linux-2.6.27.57.tar.bz2
[sudo] password for pk:
[pk@localhost src]$ cd linux-2.6.27.57
[pk@localhost linux-2.6.27.57]$ sudo cp /usr/src/kernels/$(uname -r)/.config .
[pk@localhost linux-2.6.27.57]$ make menuconfig

编译和安装

配置完成之后,依次执行下面的命令编译、安装。make install会将编译好的kernel镜像、Symbol等文件安装到/boot目录,并自动配置好Grub。

1
2
3
sudo make -j4
sudo make modules modules_install -j4
sudo make install

尝试新的内核

重启系统,在Grub选项菜单里,选择新的内核启动系统。进入终端,使用命令uname -r确定新的内核安装成功。

1
2
[pk@localhost ~]$ uname -r
2.6.27.57