首先获得内核,这里得到的是linux2.6.29;
进入内核目录;
make distclean
这一步是清理中间文件,配置文件
3.然后选择参考配置文件
就选择当前运行的linux平台的配置文件吧
cp /boot/config-2.6.18-194.el5 .config 4.然后进行配置内核
make menuconfig
等图形界面出来后,向下移动鼠标,选择Load an Alternate Configuration file,然后回车Select进行选择,然后Exit,它会提示你保存。
5.然后执行如下命令,进行编译内核
make bzImage
整个过程需要大概20分钟左右的时间,看个人的配置好坏了。
然后生成的内核镜像bzImage位于 arch/x86/boot 目录下。
有一个需要注意的问题:
不要在windows文件系统下编译linux内核,因为它不支持ln,比如:
ln: 创建符号链接 “include/asm”: 不支持的操作
附注:因为有次我尝试在虚拟机下安装的linux系统编译,在/mnt/hgfs/linux-2.6.29 下编译。因为是在windows的FAT目录下编译,所以出现了这样的错误。
所以,编译内核的时候在linux文件系统下编译就行了,比如/home目录。
6.编译内核模块
make modules
7.安装内核模块
make modules_install
8.制作init ramdisk
initramdisk的作用:提供一种让内核可以简单实用ramdisk的能力。这些能力包括:格式化一个ramdisk;加载文件系统内容到ramdisk;将ramdisk作为根文件系统。
mkinitrd initrd-2.6.29 2.6.29
然后再当前目录会生成initrd-2.6.29
9.安装内核
由于linux系统启动时,会从/boot目录下来寻找内核文件与init ramdisk,所以需要将内核和init ramdisk拷贝至/boot目录
cp linux-2.6.29/arch/x86/boot/bzImage /boot/vmlinuz-2.6.29
cp initrd-2.6.29 /boot
然后修改grub的配置文件。
vi /etc/grub.config然后你会看到你系统中已经有一个了,这里我以rhel5举例
title Red Hat Enterprise Linux Server (2.6.18-194.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-194.el5 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.18-194.el5.img
~
你只需要修改一下上图中的红色字体就行了。然后再拷贝一份在下面就行了。开机的时候按空格键就可以选择了