本文走一遍升级发行版Linux内核的过程。实验用系统为Fedora 7。
为求简单,用来升级的内核版本与实验用的系统Fedora 7内核为同一版本v2.6.21.1。
一、下载源码,解压源码
tar -zxvf linux-2.6.21.1.tar.gz
二、配置内核
make help可以查看所有内核编译相关的make目标的帮忙
1. 生成 .config 文件:
方法一: .config文件可以由Fedora的/boot/目录下的config文件直接得到
然后运行make oldconfig,make oldconfig这时只提示新内核中出现的新配置选
项,旧的配置选项使用原有的.config中的配置。
运行make oldconfig之后,可以再运行make menuconfig查看都选中了什么配置
选项,也可以改变原有的配置。
方法二:直接运行make menuconfig完全重新开始配置,生成.config。这种情况需要搜集
完整的软硬件信息。
三、编译内核
运行make或make all命令
make或make all命令等于(make vmlinux && make modules && make bzImage--见make help的输出)
make命令会生成linux-2.6.21.1/vmlinux,linux-2.6.21.1/ arch / i386 / boot / bzImage及相应目录下的内核模块。
四、安装内核模块
运行make modules_install
The kernel Makefile includes the modules_install target for installing the kernel modules.
如果没有设置该环境变量INSTALL_MOD_PATH。By default, the modules are installed in the /lib/modules directory。如果设置了变量INSTALL_MOD_PATH,它会把内核安装在$INSTALL_MOD_PATH/lib/modules/下。
五、启动新内核
(一)、将新内核和System.map文件拷贝到/boot目录下
# cp /root/linux-2.6.21.1/arch/i386/boot/bzImage /boot/vmlinuz-2.6.21.1
# cp /root/linux-2.6.21.1/System.map /boot/System.map-2.6.21.1
(二)、制作initrd-2.6.21.1.img(编译2.6.14以后的内核需要)
在进行内核编译时,需要进行制作initrd.img.在Fedora下面一般是用mkinitrd,而在
Ubuntu/Debian下是用mkintramfs.
它们的用法稍微有些不一样,如下所示:
mkinitrd /boot/initrd-2.6.21.1.img 2.6.21.1
mkintramfs 2.6.21.1 -o /boot/initrd-2.6.21.1.img
其中2.6.21.1为/lib/modules下的相应内核目录名称.
将initrd-2.6.21.1.img拷贝到/boot/目录下。
(三)、修改文件/boot/grub/grub.conf添加新内核的启动项,如下所示,
/boot/grub/menu.lst是/boot/grub/grub.conf的符号链接。
注意:是添加不是修改,要是出错了还能选择从Fedora 7原有的内核启动。