发信人: linskystar(林民隆)
整理人: qiaoqian(2001-12-31 00:09:15), 站内信件
|
首先说明一点,我的方法是有点冒险,但我从来没有出过险,我的过程也是经过N次试验的,如果谁一步步按我的做,应该会很安全---如果你的linux瘫了,不许拿刀找我,呵呵,大不了重安系统,重做上一步呗
OK,现在开工,我的方法是先卸掉旧的内核,因为是系统安装安上的,所以用rpm -qa |grep kernel,(rqm -qa是查询所以安装的包)
把找出来的包,应该是四个包,全卸掉,
rpm -e --nodeps <找出的包名>(刚才安上的kernel-headers也在这卸了)
rpm -e --nodeps modules
不用怕,linux稳定的很,我从来没有出过险,现在千万别重起
有些东东上步是删不掉的,手工删除
rm -f /etc/conf.modules
rm -fr /usr/src/linux-2.2.14-50(这是我的内核版本号,如果与你的不同,请修改为你所用的版本号)
rm -fr /lib/modules/2.2.14-50
OK,搞干净了,现在开始编译新内核
先说一下每层目录里的"."和".."的意思,可能我会用到这个,有人看不明白,这其实是两个link,"."当前目录,".."父目录,就是上层目录,一般的用法是用来简写命令行
为了说明当前路径,我尽量多用点cd
cp linux-2.4.1.tar.gz /usr/src/
cd /usr/src/
tar zxvf linux-2.4.1.tar.gz
(解开后是个linux目录,因为刚开始安了一个kernel-headers所以这有个linux的符号链接,不用理它)
cd /usr/include/
ln -s /usr/src/linux/include/linux linux (如果你自已在这编绎过kernel,这会有linux的,用-fs参数,就是force)
ln -s /usr/src/linux/include/asm-i386 asm
(如果你有scsi 还要做个scsi的符号链接, 反正我是穷学生,没钱买哪玩意)
cd /usr/src
chown -R 0.0 linux (把所有者设为root,-R表示递归)
cd /usr/src/linux/
make mrproper
好的,要开始配置了
如果你是高高高高....手的话,呵呵,你可以去用make config找找感觉,呵呵,没有后退功能的,呵呵,做错一点只能ctrl+c再来,呵呵
我试过几次make config,累死,每次还要去手工改.config.为什么?因为我老是选错东东,呵呵
按我这个安装方法在make config make menuconfig make xconfig中,只能用make config的,呵呵,不过,还是有办法的
在你的红帽光盘上(redhat/rpms)再安一个包就行
rpm -ivh ncurses-devel.编号.i386.rpm,我忘了把编号抄下来,呵呵,后补上,自已查吧
好了,可以用make menuconfig了,注意选你的网卡!多网卡安装在支持的前题下,我后补上设置过程
用这个可以导入配置的,据说用make -f也行,但不要用cat config>/usr/src/linux/.config和cp的方法,试过N次了,基本都出错
make dep
make clean
make bzImage
按我的方法应该没有什么问题,如果不成功,查一下过程,看一下/usr/include/asm 和linux这两个链接,没有红底白字的在闪吧?把你出错信息贴出来,我帮你看一下
如果成功,你应该在最后的信息哪看到bzImage放在哪
OK,安装新内核
一.cd /usr/src/linux/
cp System.map /boot/System.map-2.4.1
cd /usr/src/linux/arch/i386/boot/
cp bzImage /boot/vmlinuz-2.4.1
/usr/src/linux/太大了,有很多用不到的东东...用到的只是很小一部份,我们拿用不到的东东去掉
我使用链接的方式
mkdir -p /usr/src/linux-2.4.1/include/ 用-p生成两个目录
cp -r /usr/src/linux/include/asm-generic /usr/src/linux-2.4.1/include/
-r 拷目录,这命令行太知了,可以简写为 cd /usr/src/linux-2.4.1/include
cp -r ../../linux/indule/asm-generic .
再把同目录下的asm-i386 linux net video目录拷到/linux-2.4.1/include/里,如果你有scsi,还要拷这个目录,反正我没有
现在把两个文件删了
cd /usr/src/
rm -f linux-2.4.1.tar.gz
rm -rf linux
ln /usr/src/linux-2.4.1 linux
OK,安装新内核去
cd /boot 是不是看到有三个文件在红底白字的闪阿,呵呵,更改link
ln -fs System.map-2.4.1 System.map
ln -fs vmlinuz-2.4.1 vmlinuz
rm -f module-info 因为做的是单块系统,用不到模块
现在更改/etc/lilo.conf
把 image改成这样
image = /boot/vmlinuz
再lilo -v
OK,内核安上了,
现在收尾
因为是单块系统,所以起动是不要给系统查找模块,如果看的懂的话,在/etc/rc.d/rc.sysinit里注释掉关于查找模块的两个if,我现在没有把这个准备这个,以后贴上来
现在重起 init 6 如果你喜欢reboot的话也行,呵呵
如果能起动(我就没有不能起动的时候) uname -a ,告诉我,你看到什么了,呵呵,你用新内核了
关于起动如何不给系统查找模块我写的不细,现在补上
下面是/etc/rc.d/rc.sysinit的一个片断
☆#if [ -x /sbin/depmod -a -n "$USEMODULES" ]; then
# If they aren't using a recent sane kernel, make a link for them
if [ ! -n `uname -r | grep "-"` ]; then
ktag="`cat /proc/version`"
mtag=`grep -l "$ktag" /lib/modules/*/.rhkmvtag 2> /dev/null`
if [ -n "$mtag" ]; then
mver=`echo $mtag | sed -e 's,/lib/modules/,,' -e 's,/.rhkmvtag,,' -e 's,[ ].*$,,'`
fi
if [ -n "$mver" ]; then
ln -sf /lib/modules/$mver /lib/modules/default
fi
fi
☆# if [ -L /lib/modules/default ]; then
☆# INITLOG_ARGS= action "Finding module dependencies" depmod -a default
☆# else
☆# INITLOG_ARGS= action "Finding module dependencies" depmod -a
☆# fi
☆#fi
原文是没有星号的,我加上去会了大家好看明白的,加星号的行,全用#号注释掉就好了,当然你删了也没错
---- |
|