经历了整整两天的编译、编译、再编译,终于搞定了 2.6.8的内核,用着2.6.8的内核,现在写下这篇文章,给大家一个借鉴。
首先,必须得承认: 2.6.8的内核速度真的很快,呵呵!
我的系统:rh as 3 update2。
1.下载及解压:到kernel.org下载 2.6.8的内核源码包,然后解压到/usr/src下,形成一个linux-2.6.8的文件夹。
2.升级系统必要工具:包括module_init_tools和mkinitrd
安装module-init-tools-3.0.tar.gz工具包
linux-2.6.x内核的module处理过程有所改变(很多原先在用户态下由modutils处理的工作都放到内核里去完成了), 因此2.4.x下的modutils工具包已经不在适合新的2.6.x内核, 必需将其升级到module-init-tools工具包. 该工具包的最新版本是3.0。
可以下载module-init-tools-3.0.tar.gz源码包的地方有两个:
Rusty's Linux Kernel Page: http://www.kernel.org/pub/linux/ker...ools-3.0.tar.gz
http://www.kernel.org/pub/linux/uti...ools-3.0.tar.gz
接下来, 按照下列步骤安装module-init-tools工具包:
# configure --prefix=/
# make moveold
# make all install
# ./generate-modprobe.conf /etc/modprobe.conf
命令"make moveold"将把系统原来的modutils工具程序改名为"*.old"(比如,lsmod.old等等). NOTE! 这是非常重要的一步, 千万不要省略. 这将使得你可以继续使用原有的linux-2.4.x系统, 因为在2.4.x系统下, 新的module-init-tools工具包实际上是倚赖原来"*.old"程序来加载内核模块. 如果忘记了这一步也不要紧张, 可以先下载并安装原来的modutils程序包, 然后按照上面的步骤重来一遍就可以了.
新的module-init-tools工具包不再使用原来的/etc/modules.conf配置文件了, 而是使用新的配置文件/etc/modprobe.conf. 因此必需用命令"./generate-modprobe.conf etc/modprobe.conf"来生成新的配置文件/etc/modprobe.conf.
更新mkinitrd程序
由于依赖性的问题,升级这个软件包需要下载如下包:
mkinitrd- 3.5.15.1-2.i386.rpm,device-mapper-1.00.07-1.i386.rpm
device-mapper- 1.00.07-3.1.i386.rpm lvm2-2.00.08-2.i386.rpm
直接rpm -ivh安装即可。
3.内核配置及编译:
内核配置可以选择自己喜欢的工具,如make config,make menuconfig,make xconfig,make gconfig等,最终得到的效果都是一样的—生成一个“.config”。由于我是只安装了Gnome,所以make xconfig自然没法用了,好在make gconfig和make menuconfig都不错:)。
内核配置中有几点需要注意的地方:
o关于"Loadable Module support"选项, 一定要选上"Module unloading"和"Automatic kernel module loading"这两个选项.
o 关于"Processor type and features"选项, 一定要选上"Preemptible Kernel"选项, 这是2.6.x内核优于2.4.x内核的重要原因之一.
o 关于"Block Devices"的配置, 一定要选上对loopback和ramdisk的支持.
o 关于"Multi-device support(RAID and LVM)", 要选上"device mapper".
o 关于"Input device support", 记得要选上"Keyboards"和"Mice"的支持.
o 关于"Graphics support", 要选上对frame buffer的支持,要安装nvidia驱动的绝对不要选择RIVA Frame buffer支持,如果选择了,将无法安装nvidia驱动。
o 关于"Sound": 2.6.8内核默认是用的ALSA的驱动,选择如下:
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 --->
[M] Intel i8x0/MX440, SiS 7012; Ali 5455; NForce Audio; AMD768/8111
Open Sound System --->
[ ] Open Sound System (DEPRECATED)
我的声卡是Nforce 2 AC97,用的驱动也是snd-intel8x0,而这个模块我编译成了模块,其实编译进内核也是一个好注意:)。
o 关于USB, 几个重点模块usbhid,ohci-hcd,ehci-hcd,usbmouse,usbcore等等我全部直接编译进内核了,开始的几次都编译为模块,但是在rc.sysinit运行到modprobe的时候总是提示read-only filesystem,无法加载到内核,但是进入系统后手动modprobe又可以,所以一气之下全部编译进内核,反正我是用的usb鼠标,必须得有usb支持。
o 关于文件系统, 选上常用的那几种就可以了. 如果要体验sysfs的话, 要选上对sysfs的支持(到现在我也不知道这个sysfs到底有什么用处?)但是,一个重点问题是Ext3的文件系统一定要直接编译进内核,这个非常重要,在配置完后一定要检查一下.config文件有没有"CONFIG_EXT3_FS=y"这一项. 如果不是"CONFIG_EXT3_FS=y"而是"CONFIG_EXT3_FS=m",你在运行内核时就会遇上以下错误: pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed 。选项如下:
File systems--->
[*] Ext3 journalling file system support
[*] Ext3 Security Labels
[*] JBD (ext3) debugging support
o 关于显卡驱动的问题,我的主板是Nforce2芯片组,显卡为Nvidia Geforce 4 Ti 4200,as 3刚刚安装时,无论怎样装显卡驱动或者修改XFconig,都无法正常使用显卡驱动,只要安装,使用nvidia模块x就必死无疑。经过反复研究,终于发现是内核中的Agpgart模块的问题,所以,内核配置中重点要选择如下:
Device Drivers --->
character Device--->
<*> /dev/agpgart (AGP Support)
<*> NVIDIA nForce/nForce2 chipset support
其他就根据具体情况配置一下,懒得话默认也可以了。
然后就:make
make modules_install
make install
这时,你的grub.conf文件中已经多了一项新内核的启动项了。但是,2.6的内核不认识默认给出的root=LABEL=/,必须改成root=/dev/hda9,我的是hda9,你的根据实际情况而定。
4.其他配置文件改动:
/etc/modprobe.conf的修改:由于usb的所有模块都已经直接编译进了内核,所以/etc/modprobe.conf文件中所于关于usb的行都可以删除了,当然,如果你不想全部编译进内核的话,或者你能成功自动modprobe上的话(当然不是自己在rc.local中写modprobe),你就需要修改一些地方了:
alias usb-controller usb-ohci要把它改为:alias usb-controller ohci-hcd
alias char-major-13-32 mousedev改成alias char-major-13-32 usbmouse
如果你有usb键盘的话还需要把:keybdev改成usbkbd