发现还是很多人问关于内核编译的问题,所以一时性起发个帖子总结一下。
2.6.0 的编译方法已经简洁了很多,下面的办法假设你的现有系统上已经具备了所有操作所需要的东西(绝大多数系统默认都已经提供)
1.下载
在 http://www.kernel.org/pub/linux/kernel/v2.6/ 下载 linux-2.6.0.tar.bz2
选择 bz2 的原因就是压缩比高,节约点时间 。
2.解压
代码:
# cd /usr/src
# tar xvjpf [$NEW-KERNEL-PATH]/linux-2.6.0.tar.bz2
$NEW-KERNEL-PATH 就是你刚才将新内核下载到的路径,以下操作都在 /usr/src 目录下完成
3.配置
代码:
# make mrproper
# make menuconfig
make mrproper 是清理代码树的动作,保证源代码是干净的
make menuconfig 如果失败,很可能是 ncurses 库没有装,可以用 make xconfig 或者 make config 来替代
4.编译
代码:
# make
如果不放心,也可以用旧的命令:make bzImage && make modules 。
5.安装
代码:
# make install
如果不放心,也可以用 cp [$bzImage-PATH]/bzImage /boot/vmlinuz-2.6.0 && cp System.map /boot/System.map-2.6.0 来替代
另外, make modules_install 也一样还可以用。
不过,建议在没有 make clean 之前,如果增加了新的模块,可以直接 make menuconfig && make moduels && make modules_install,不需要全部重新来过
6.检验
代码:
# ls /boot
如果看到了 vmlinuz-2.6.0 和 System.map-2.6.0 ,那么恭喜你,成功了!
如果你是用 make install 安装的,还会看到个 config-2.6.0 文件
7.清理
代码:
make clean
如果你以后还要利用这次编译的成果,也可以省略这一步,如果你想直接删除源代码目录,也可以省略这一步。
8.修改 grub
在 grub 的配置文件中进行修改,增加新内核的支持。建议保留旧内核的项目,避免编译失败后痛哭流涕 。
通常 grub 配置文件在下面三个地方(根据发行版的不同):
/etc/grub.conf
/boot/grub/menu.lst
/boot/grub/grub.conf
根据你的实际情况来修改。
修改参照下面:
代码:
title Kernel 2.6.0
root (hd0,0)
kernel /vmlinuz-2.6.0 ro root=/dev/hda1
将 (hd0,0) 和 /dev/hda1 换成你的实际信息,如果重新启动后出现 kernel panic 错误或者显示应该修改 init 信息,则基本都是 kernel 语句错误。
8.其他
如果你的 kernel 支持内存镜像,就用 mkinitrd 命令制作一个镜像文件,然后拷贝到 /boot 路径下。通常在 redhat 的 /boot 下有一个 initrd-2.6.0.img 就是这么做的,呵呵。不过这个步骤似乎并非必要,而且很多发行版默认不提供
mkinitrd 命令。就算你真的非要这么做,也要记得在 make menu 的时候记得选择内核镜像 ram image,并且不能安装为模块,否则 initrd 就不会运作。