|
答怎样升级内核至Linux Kernel-2.6.10
这是我从Linux Kernel-2.4.20-8升级内核到Linux Kernel-2.6.10经过一次失败后成功的经验.
1.从网上下载自由软件:
module-init-tools-3.0.tar.gz -----内核工具源代码包.
modutils-2.4.25-8.9.i386.rpm -----内核工具
2.升级前的工作:
(1)安装 module-init-tools-3.0.tar.gz:
# tar -zxvf module-init-tools-3.0.tar.gz
# cd module-init-tools-3.0
# ./configure --prefix=/sbin
# make
# make install
# ./generate-modprobe.conf /etc/modprobe.conf
(2)安装modutils-2.4.25-8.9.i386.rpm:
# rpm -Uvih modutils-2.4.25-8.9.i386.rpm
(3)安装新内核:
I. 将新内核copy到/usr/src下,
#tar xzvf linux-2.6.10.tar.gz -----解压缩.
II. 将名为linux的符号链接删掉,这时旧版本内核的符号链接.
#ln -s linux-2.6.10 linux ------建立linux-2.6.10的符号链接linux.
3.设置内核.
# cd /usr/src/linux
# make mrproper -----删除不必要的文件和目录.
# make xconfig -----使用图形界面的内核设置管理器.
这时出现图形界面的内核设置管理器,在File项中点击Load,在/usr/src/linux/arch中选择您的电脑对 应的文件夹,进入.调用deconfig文件.
比如我的电脑是使用的P4,所以我就选择了i386的deconfig,这时默认的内核设置.你只需把你的network,网卡,PPP,usb等选上即可,当然也可以多选几项,不过,选的太多你的内核就会大得撑不住了.当然你也可以把有些项设置成模块(modules).打对号的是要编译进内核的,打圆点的是要编译成modules的.
保存.推出管理器.
4.编译内核:
# cd /usr/src/linux
# make dep -----链接程序代码与函数库.
# make clean -----删除不必要的模块和文件.
# make bzImage -----开始编译系统内核.
# make modules -----开始编译外挂模块.
# make modules_install -----安装编译完成的模块.
# su -
# /sbin/depmod -a -----创建模块的链接.
5.更换内核:
# cd /boot -----切换到引导分区/boot.
# rm System.map vmlinuz -----删除旧的符号链接.
# mv /usr/src/linux/System.map System.map
# mv /usr/src/linux/arch/i386/boot/bzImage vmlinuz
6.如果用的是GRUB来管理开机,就要修改/boot/grub下的menu.1st文件:
# vi /boot/grub/menu.1st
键入i进入编辑模式:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You do not have a /boot partition. This means that
# all kernel and initrd paths are relative to /, eg.
# root (hd0,0)
# kernel /boot/vmlinuz-version ro root=/dev/hda1
# initrd /boot/initrd-version.img
#boot=/dev/hda
default=0
timeout=10
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title Red Hat Linux (2.6.10)
root (hd0,0) -----如果你有2个的硬盘,就要用(hd0,1)
kernel /boot/vmlinuz ro root=/dev/hda1
title Red Hat Linux (2.4.20-
root (hd0,0)
kernel /boot/vmlinuz-2.4.20-8 ro root=hda1
initrd /boot/initrd-2.4.20-8.img
这样还可以保留旧版本的内核以防编译新内核失败进不了系统.
7.如果无法开机,则用引导盘来启动计算机.待进入系统,执行下列命令,即可使系统恢复正常:
# cd /boot
# rm System.map
# rm vmlinuz
# ln -s System.map-2.4.20-8 System.map
# ln -s vmlinuz-2.4.20-8 vmlinuz
8.从Redhat 9 升级内核后由于有些模块名称的变化使得有些得手动改变,网上有详悉的说明可自己看看.
如果有的模块没有自动加载,可以用/sbin/modprobe -v 模块名 来手动加载.
我所遇到的困难和解决办法:
1.rpm没法用了,怎么办?
答:在/usr/lib/rpm/macros里面寻找代码:
%__dbi_cdb create cdb mpool mp_mmapsize=16Mb mp_size=1Mb
修改成代码:
%__dbi_cdb create cdb mpool mp_mmapsize=16Mb mp_size=1Mb private
2.闪盘和mp3挂不上,怎么办?
答:由于我的kernel不支持cp936,所以一开始我用
# mount -t vfat -o iocharset=cp936 /dev/sda /mnt/usb
没办法挂上显示:
mount: wrong fs type, bad option, bad superblock on /dev/sda,
or too many mounted file systems
于是我直接用
# mount -t vfat /dev/sda /mnt/usb
奇迹般的,我把usb挂上了!!!
现在我了解了,没有以前放进usb的带中文文件名的文档在新内核下无法正确显示中文名称,但是只要是在升级内核后放进usb的带中文文件名的文档都能正确显示中文名称,我想这是kernel-2.6.10的开发组将显示中文解决了吧,不管它。
但是每次都得在/mnt重新
# mkdir usb
# mount -t vfat /dev/sda /mnt/usb
这还有待解决!!!
3.usb鼠标和键盘的挂载问题。
答:我还没有解决。我只想告诉要升级内核的朋友,不要随便按照论坛里的帖子修改/etc里的配置文件,/etc是放系统管理和配置文件的地方,是不能象修改/home里的东西那样修改的,我这并不是说论坛里的帖子些的不对,大家知道Linux不象Windows它是一种个性化相当高的操作系统,不是一样的硬件便会产生或多或少的不同,不能COPY ONE BY ONE。我一周以前由于修改了几个/etc文件,导致新旧内核一起完蛋!!!进不了文件系统了。于是就重装了一遍系统啊!!!
我虽然没有解决usb鼠标和键盘,但是并没有影响使用他们,和修改前完全一样,还顺手了些,呵呵!!
4.换了内核后,正确选择了网卡,但为什么还是拨不上宽带?
答:我换了内核后eth0可以激活,可以上局域网,但是拨不了宽带。于是我又配置了一遍内核,发现没有选PPP,于是敢紧选上-----OK!可以激活了。原来PPP是个点对点的Internet协议,要上宽带就必须给它选上啦!!!
好啦,我的内核就欢快的工作了起来啦!!!
“为人民服务--真好!”
---my kernel |
|