测试环境:centos4 (编译前内核是:2.6.9-42 新内核是:2.6.26.2)
1 确保系统中已经安装 ncurses-devel
2 下载内核源代码包 http://kernel.org/pub/linux/kernel/v2.6/
3 下载后 cp 到/usr/src/kernels目录下 并解压
4 做一link ln -s linux-2.6.26.2 linux
5 cd llinux make mrproper (如果是第一次编译,此不可省略)
6 make menuconfig (配置内核)
#make config (基于文本的最为传统的配置界面)
[newpage]
#make menuconfig (基于文本选单的配置界面)
#make xconfig (基于图形窗口模式的配置界面)
#make oldconfig (如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)
[newpage]
进行配置时,大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。例如,如果需要内核支持DOS分区的文件系统,则要在文件系统部分选择FAT或DOS系统支持;系统如果配有网卡、PCMCIA卡等,需要在网络配置中选择相应卡的类型。
“Y”- 将该功能编译进内核
“N”- 不将该功能编译进内核
“M”- 将该功能编译成可以在需要时动态插入到内核中的模块。
注意:编译配置
在这一部分涉及几个重要模块的配置请,特别注意.一般用"make menuconfig"命令来配置内核.
输入以上命令后出现一个菜单界面,用户可以对需要的模块.下面着重讲几个重要的配置
1)文件系统
请务必要选中ext3文件系统,
File systems--->
[*] Ext3 journalling file system support
[*] Ext3 Security Labels
[*] JBD (ext3) debugging support
以上三项一定要选上,而且要内建(即标*). 这个非常重要,在配置完后一定要检查一下.config文件有没有"CONFIG_EXT3_FS=y"这一项. 如果不是"CONFIG_EXT3_FS=y"而是"CONFIG_EXT3_FS=m",你在运行内核时就会遇上以下错误: pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed
2)网卡驱动 (没有找到 稍微配置了下 最后也成功了)
请务必把自己网卡对应的驱动编译进内核,比较普遍的网卡是realtek 8139,以下就是这种网卡的配置,以供参考
Device Drivers--->
Networking support--->
Ethernet (10 or 100Mbit) --->
<*> RealTek RTL-8139 C+ PCI Fast Ethernet Adapter support (EXPERIMENTAL)
<*> RealTek RTL-8139 PCI Fast Ethernet Adapter support
3)声卡驱动 (用*都给选上了)
也要选择自己声卡对应的驱动编译进内核,比较普遍的声卡是i810_audio,以下就是这种声卡的配置,以供参考
Device Drivers --->
Sound --->
<*> Sound card support
Advanced Linux Sound Architecture --->
<*> Advanced Linux Sound Architecture
<*> Sequencer support
< > Sequencer dummy client
<*> OSS Mixer API
<*> OSS PCM (digital audio) API[*] OSS Sequencer API
<*> RTC Timer support
PCI devices --->
<*> Intel i8x0/MX440, SiS 7012; Ali 5455; NForce Audio; AMD768/8111
Open Sound System --->
< > Open Sound System (DEPRECATED)
以上三项配置关系到新内核能否正常运行,请备加注意.其他的配置如果不是很了解,大可以按默认的选择.
7 make clean (确保所有有关文件都处于最新版本状态)
make bzImage (编译的时间与机器的硬件条件及内核的配置等因素有关,所获得的内核的位置在/usr/src/Linux/arch/i386/boot目录下,当然这里假设用户的CPU是x86型的。)
make modules (编译选择的模块)
make modules_install (将编译后的模块转移到系统标准位置, 这将把上一步构建出来的内核放入一个模块子目录中:/lib/modules/your_kernel_version)
[newpage]
8 编辑 /boot/grub/grub.conf
注释掉 hildenmenu
9 reboot
内核启动顺序可以设置 vi /etc/grub.confi 有个default=参数
大功告成!