先把linux-2.6.29.2.tar.gz 复制到/usr/src/ 的下面,进行下列操作:
[root@server6 src]#tar –jxvf linux-2.6.18.2.tar.bz2
[root@server6 src]#cd linux-2.6.18.2
[root@server6 src]#make mrproper //把原来编译产生的垃圾删除
配置内核可以根据需要与爱好使用下面命令中的一个:
#make config (基于文本的最为传统的配置界面)
#make menuconfig (基于文本选单的配置界面)
#make xconfig (基于图形窗口模式的配置界面)
#make oldconfig (如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)
进行配置时,大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。例如,如果需要内核支持DOS分区的文件系统,则要在文件系统部分选择FAT或DOS系统支持;系统如果配有网卡、PCMCIA卡等,需要在网络配置中选择相应卡的类型。
选择相应的配置时,有三种选择,它们分别代表的含义如下:
“Y”- 将该功能编译进内核
“N”- 不将该功能编译进内核
“M”- 将该功能编译成可以在需要时动态插入到内核中的模块。
将与核心其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响。许多功能都可以这样处理,例如像上面提到的网卡的支持、对FAT等文件系统的支持。
我 这里使用make menuconfig配置内核。配置内核时重要的就是pci了,如果你硬盘是IDE的那一定要选择好你主板上南桥芯片。SCSI的话就是要选择上你的 SCSI卡型号。还有就是网卡,声卡芯片的型号了,他们的型号你都可以用lspci 查找到。我的是在虚拟机上编译的,如下所示:
[root@server6 linux-2.6.29.2]# lspci
00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)
00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 01)
00:07.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 08)
00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
00:07.7 System peripheral: VMware Inc Virtual Machine Communication Interface (rev 10)
00:0f.0 VGA compatible controller: VMware Inc Abstract SVGA II Adapter
00:10.0 SCSI storage controller: LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (rev 01)
00:11.0 PCI bridge: VMware Inc PCI bridge (rev 02)
00:15.0 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:15.1 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:15.2 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:15.3 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:15.4 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:15.5 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:15.6 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:15.7 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:16.0 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:16.1 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:16.2 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:16.3 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:16.4 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:16.5 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:16.6 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:16.7 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:17.0 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:17.1 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:17.2 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:17.3 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:17.4 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:17.5 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:17.6 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:17.7 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:18.0 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:18.1 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:18.2 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:18.3 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:18.4 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:18.5 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:18.6 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
00:18.7 PCI bridge: VMware Inc Unknown device 07a0 (rev 01)
02:00.0 USB Controller: Intel Corporation 82371AB/EB/MB PIIX4 USB
02:01.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 10)
02:02.0 Multimedia audio controller: Ensoniq ES1371 [AudioPCI-97] (rev 02)
02:03.0 USB Controller: VMware Inc Abstract USB2 EHCI Controller
开始编译:
[root@server6 linux-2.6.29.2]# make menuconfig
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/kxgettext.o
HOSTCC scripts/kconfig/lxdialog/checklist.o
HOSTCC scripts/kconfig/lxdialog/inputbox.o
HOSTCC scripts/kconfig/lxdialog/menubox.o
HOSTCC scripts/kconfig/lxdialog/textbox.o
HOSTCC scripts/kconfig/lxdialog/util.o
HOSTCC scripts/kconfig/lxdialog/yesno.o
HOSTCC scripts/kconfig/mconf.o
SHIPPED scripts/kconfig/zconf.tab.c
SHIPPED scripts/kconfig/lex.zconf.c
SHIPPED scripts/kconfig/zconf.hash.c
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/mconf
scripts/kconfig/mconf arch/x86/Kconfig
这之后就会出现文本选单的配置界面,如图所示:
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
里面还有ext4文件,根据自己意向决定,我这里把它编译进去。
2),网卡驱动
3),声卡驱动:
以上三项配置关系到新内核能否正常运行,请备加注意.其他的配置如果不是很了解,大可以按默认的选择.
选择Yes,保存文件。
接着运行make bzImage,进行编译:
这个时间稍长点。完了之后依次是make modules(编译选择的模块);make modules_install(将编译后的模块转移到系统标准位置); make install.
上面的命令"make install"将:
(1)把压缩内核映象拷贝到/boot目录下, 并创建相应的System.map符号链接;
(2)修改bootloader的配置文件;
(3)调用mkinitrd程序创建内核的initrd映象. 对于GRUB而言, 将在/boot/grub/grub.conf配置文件增加如下类似的配置行:
title Red Hat Linux (2.***)
root(hd0, 1)
kernel /boot/vmlinuz-2.*** ro root=LABEL=/
initrd /boot/initrd-2.***.img
到此,整个内核的编译已经结束,在/boot目录下会多出几个文件,如下所示:
grub.conf文件里,也会多出新的内核:
下来用新内核引导下:
选择2.6.29.2内核启动.