Ubuntu配置、编译、安装自定义内核笔记

在VirtualBox虚拟机下 Ubuntu 12.04 环境编译自己的 Linux 内核,版本是3.2.28。

参考资料:

  1. http://zhyu.me/linux/compile-your-own-ubuntu-kernel.html
  2. http://www.howtogeek.com/howto/ubuntu/how-to-customize-your-ubuntu-kernel/
  3. http://bodhizazen.net/Tutorials/kernel

UPDATE: (2012.10.30)
1. 由于 kernel-package 中的 make-kpkg 有各种各样的问题,而 Linux 内核自带的 make 又比较完善,所以本笔记更新为使用 make 安装而非 deb 包。取消 deb 包的坏处在于,删除内核时需要手动删除内核文件及模块。
2. 教育网用户可以在中科大的镜像下载内核源代码,地址为: http://mirrors.ustc.edu.cn/linux-kernel/v3.0/ 。
3. 本教程适合各种版本的 Linux 内核(最好是3.x版本)。

教程前提是已经安装好虚拟机,下载解压了Linux 3.2.28内核。

首先要安装依赖包,包括:build-essential、kernel-package、fakeroot和libncurses5-dev(用于menuconfig):

sudo apt-get install build-essential fakeroot libncurses5-dev

切换到内核源代码目录下,首先将Ubuntu自带的内核配置拷贝过来作为基础:

make mrproper #相当于clean
cp /boot/config-`uname -r` ./.config #复制当前系统内核
make oldconfig

然后,按照当前虚拟机的实际硬件环境,清理一些不必要的模块:

make localmodconfig

在以上两步中,会问一些关于配置的问题(缺少一些配置项之类的),建议直接按住回车使用默认值。

接下来如果有特殊需要(例如VirtualBox的VGA驱动它检测不到,或者ftrace中的一个检测器默认关闭需要打开),可以进行自己的配置:

make menuconfig

在menuconfig环境中,按y表示编译进内核,n表示不编译,m表示编译成模块,h获得帮助。如果不是很明白,建议直接使用默认配置编译,不要menuconfig。

配置完成后保存,并开始编译、安装内核,这里使用Ubuntu自己的kernel-package脚本编译,而不直接make 使用自带的 Makefile 方式进行编译和安装。

make all #编译内核及模块
sudo make modules_install
sudo make install

安装完成后重启,就会自动用新内核启动了。如果启动不了,就按住Shift返回原内核,然后:

cat /var/log/dmesg.0 | less

查看上次启动的内核错误,相应的修改配置后重新编译即可。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注