kernel 2.6.0 编译方法

来源:互联网 发布:淘宝商家怎么弄淘宝客 编辑:程序博客网 时间:2024/04/29 23:31

编译前准备
1)下载一份内核源代码,我下的是linux-2.6.7.tar.bz2,你可在如下地址下载它或者是更新的版本.
http://kernel.org/pub/linux/kernel/v2.6/
2) 下载最新版本的module-init-tools( "module-init-tools-3.0.tar.gz" and "modutils-2.4.21-23.src.rpm")
http://www.kernel.org/pub/linux/kernel/people/rusty/modules/module-init-tools-3.0.tar.gz
http://www.kernel.org/pub/linux/kernel/people/rusty/modules/modutils-2.4.21-23.src.rpm
3)安装module-init-tools. 它会替代depmod [/sbin/depmod]和其他工具.
tar -zxvf module-init-tools-3.0.tar.gz
cd module-init-tools-3.0
./configure --prefix=/sbin
make
make install
./generate-modprobe.conf /etc/modprobe.conf
4)安装modutils-2.4.21-23.src.rpm. 你可能会看到"user rusty and group rusty not existing"的警告. 没关系,你只需强制安装就是了.如果你不对Redhat 9和Redhat 8做这几步, 你将会在"make modules_install"这一步时出现问题.
rpm -i modutils-2.4.21-23.src.rpm
rpmbuild -bb /usr/src/redhat/SPECS/modutils.spec
rpm -Fi /usr/src/redhat/RPMS/i386/modutils-2.4.21-23.i386.rpm

以上软件 如果实在找不到,可以给我发Email索取。
编译:

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.0root (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 就不会运作。
原创粉丝点击