我编译的是在Ubuntu9.10下编译 Linux-2.6.33内核(原来内核Linux-2.6.31.……)
首先需要前期准备,由于Ubuntu没有相关的编译工具,所以应该先安装Vim,build-essential,ncurses-dev这几个工具
前期准备:
1. 安装编译器(这其实是一个开发工具包)
sudo apt-get install build-essential
2. 安装nurse(运行 menuconfig 必需)
sudo apt-get install ncurses-dev
3. 下载 Linux 内核源码
www.kernel.org
编译需要使用管理员权限,所以使用命令:
sudo -i
切换至管理员模式下。
1. 先复制到目录 /usr/src下
cp linux-2.6.33.tar.bz2 /usr/src
cd /usr/src
2. 解压Linux内核源码:
现在解压我们下载的源程序文件。如果所下载的是.tar.gz(.tgz)文件,请使用下面的命令:
tar xzvf linux-2.6.33.tar.gz
如果你所下载的是.bz2文件,例如linux-2.4.0test8.tar.bz2,请使用下面的命令
tar xjvf linux-2.6.33.tar.bz2
3.保存当前的配置文件
cp /boot/config-2.6.31 .config
接下来的内核配置过程比较烦琐,但是配置的适当与否与日后Linux的运行直接相关,有必要了解一下一些主要的且经常用到的选项的设置。
配置内核可以根据需要与爱好使用下面命令中的一个:
#make config(基于文本的最为传统的配置界面,不推荐使用)
#make menuconfig(基于文本选单的配置界面,字符终端下推荐使用)
#make xconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用)
#make oldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)
个人是使用了make menuconfig
我自己第一次试着修改了这个
Processor type and features
Timer frequency ->1000
相关配置选项,可以查考http://www.svn8.com/shouce/Linux/kernel_options.html
配置完以后开始编译了,这三步分别都相当的漫长,可以做做其他事,总共起码一个半小时以上
1)编译内核
make -j<n> bzImage
<n>替换成数字,代表需要将编译过程拆分成多少个作业。如需要衍生出2个编译作业,则命令为:make -j2 bzImage。在实际中,每个处理器上一般衍生出一个或者两个作业,如果你的机器是双核的,可以将 n 设置成 4 试下。
2)编译模块
make -j<n> modules
4. 安装
1)模块的安装是自动的,只需运行命令:
make -j<n> modules_install
即可。
然后是内核安装
内核的安装稍比较麻烦,首先拷贝编译的文件,依次执行以下命令:
cp .config /boot/config-2.6.33
cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.33
cp System.map /boot/System.map-2.6.33
mkinitramfs -o /boot/initrd.img-2.6.33 2.6.33
最后这个步骤就相当的戏剧化
关于启动内核,由于我在虚拟机上测试的,所以这个Ubuntu进入系统时没有Grub的选择,所以当时我就先重新安装了Grub
sudo apt-get install grub
然后发现已经原有安装了grub-pc,所以又再重新安装grub-pc,在安装的过程中,他把我放在boot目录下的镜像关联了,所
以我重启Ubuntu时,已经可以使用Linux-2.6.33,不过不能选择原来的Linux-2.6.31,还有就是开机是有点怪的现象