a、为了好玩,赶潮流或做实验,那就可以大胆的进行下面的操作!
b、为了支持新硬件,为了得到更好的性能,那么请问:有没有已经对系统进行了备份!
内核参数请参考:http://lamp.linux.gov.cn/Linux/kernel_options.html http://blog.csdn.net/lengxingfei/archive/2007/10/02/1809585.aspxhttp://linux.chinaunix.net/bbs/viewthread.php?tid=632835&extra=page%3D1%26amp%3Bfilter%3Ddigest 1、选择
下载内核版本
http://www.kernel.org/pub/linux/kernel/ 这里有最新的内核版本
因为红旗3.0内核版本为V2.4.17-1 我们就选择一个V2.4.20的最新稳定内核来进行升级
下载一个完整内核文件名为linux-2.4.20.tar.bz2
a)
在任何一个子目录下(但通常是在/usr/src/下,我们先在/root下解开)解开新的内核源程序:
# bzip2 -d
linux-2.4.20.tar.bz2 ;解压将会在当前目录下生成linux-2.4.20.tar
# tar xvf
linux-2.4.20.tar ;解包
# mv linux-2.4.20 /usr/src ;把解开的数据移动到/usr/src目录下
b) 建立一个符号连接到你的新内核目录,这一步可以不做,只是为了操作方便
# ln -s /usr/src/linux-2.4.20
/usr/src/linux ;以后对新内核的访问就通过
linux 这个连接进行
c)配置内核前的准备
工作 配置内核前的准备工作
# cd /usr/include
# rm -rf asm linux scsi
asm-generic(或改名保存)
# ln -s /usr/src/linux/include/asm-i386 asm
# ln -s
/usr/src/linux/include/linux linux
# ln -s
/usr/src/linux/include/scsi scsi
# ln -s
/usr/src/linux/include/asm-generic
asm-generic
d)配置内核
我是在不删除原有内核的情况下进行编译,如果你不想保留原有内核,建议先做好启动盘
启动盘制作:#mkbootdisk --device
/dev/fd0 `uname -r` ;`uname -r` 是取得当前内核版本号
对于我们红旗3.0来说可以使用 #mkbootdisk
--device /dev/fd0 2.4.17-1
重新启动机子﹐确定启动盘能正确引导。
转到目录/usr/src/linux下
进行编译配置
1)#make mrproper ;清除任何将引起问题的附加额外源代码 (建议执行)
2)#make xconfig ;这是在X
window下的图形界面,很方便
或 make menuconfig ;如果是在字符下建议使用
或 make config
;这个方法不建议使用很麻烦, 很古老!
或 make oldconfig ;如果有很小的改动,可以使用,使用得不多
选择好新内核中要开启的选项,;除了【】【*】外,【M]表示模块被动态编译,需要时可以载入
这一步将/usr/src/linux目录下生成一个配置文件.config文件
3)#make dep ;确定那些文件已经改动,那些需要重新编译;确保关键文件在正确的位置.
4)#make clean
;删除那些不需要的旧文件(例如:内核原有的拷贝);确保所有东西均保持最新状态.
5)#make zImage
;将一个新内核建立在一个压缩文件中(会生成/usr/src/linux/arch/i386/boot/zImage文件)
;注意有大小写区分
如果提示System is too big.出错进用make
bzImage进行压缩建立(会生成/usr/src/linux/arch/i386/boot/bzImage文件)
e)如果你用了模块,你还需要建造和安装模块
make modules ;编译选择的模块
make modules_install
;将编译后的模块转移到系统的标准位置
depmod -a ;
分析可载入模块的相依性 f)安装新内核
复制内核文件到/boot目录
# cp
/usr/src/linux/System.map /boot/System.map-2.4.20 ;特定内核的内核符号表
# cp
/usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.20
编辑/etc/lilo.conf文件添加 image=/boot/vmlinuz-2.4.20
label=linux-2.4.20
root=/dev/hda1 ;这一项可以参考原来的root项
#lilo
;只有执行了lilo命令之后﹐ LILO 才会真正装到系统之上
grub只需改相应的内核名为新的即可 g)重启
#shutdown -r now
提示:开机启动LILO、出现系统选择时选择“linux-2.4.20”用新内核来启动我们的Linux
进入后可以用#uname -r
来查看当前的内核版本
h)问题
有可能如果系统不能正常启动或有些设备不认时,可能是我们在make
menuconfig时有些选择不正确,只有在来从这一步来一次!
内核升级不可能一次成功,除非您对内核中的每个选项非常了解
而且升级后是否稳定,这也是个问题因为有些问题不可能一下子就会发生,可能要过很长时间才会暴露出来!
但从内核升级的过程中您将会更加了解Linux的工作流程,希望以上的内容对大家在
学习中有所帮助!
附录:vmware下面编译内核必选的选项如果你在vmware下重新编译内核,硬盘用的是scsi的,以下选项必选:
Device Drivers --->SCSI device support ---><*> SCSI disk support
Device Drivers --->SCSI device support --->SCSI low-level drivers ---> <*> BusLogic SCSI support
Device
Drivers ---> Fusion MPT device support ---><M> Fusion MPT
(base + ScsiHost) drivers和<M> Fusion MPT misc device (ioctl)
driver(这个要不要,不确定)
注意:只能选模块方式,直接编译进内核,就出错,不知道为什么,这个浪费了我好多时间才找到,编译了几十次的成果。
出错信息如下:No module mptbase found for
kernel vmware。。。。。。。
Device Drivers ---> USB support ---><*> USB Mass Storage support
Device
Drivers ---> Networking support --->Ethernet (10 or
100Mbit) ---> <*> AMD PCnet32 PCI support(看到文章说这个必选,应该是网卡吧)