LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 28075|回复: 203

内核升级2.4.20『谈点经验』

[复制链接]
发表于 2002-12-4 23:39:09 | 显示全部楼层 |阅读模式
一、内核简介
二、内核版本号
三、为什么重新编译内核
四、内核编译模式
五、新版本内核的获取和更新
以上这些内容讲的太多了,我这里均省略了,你可以参考:

http://www.linuxsir.cn/forum.php?mod=viewthread&tid=977

http://www.linuxsir.cn/forum.php?mod=viewthread&tid=4791

http://www.tldp.org/linuxfocus/C ... 02/article252.shtml

六、内核编译的时候,编译过程中如果出错的话,就执行一下make rmproper.这个命令是清除原来的*.o文件的,但是如果你清除了他们以后,编译会非常费时间,因为这些obj文件需要重新生成。这样能解决一些编译过程的错误。

#make menuconfig来通过字符界面来进行设置。
这里有很多选项,如果新手不明白的话,情参考上面提到的帖子,有比较详细的说明。需要提出的是,文件系统的支持选项最好选上ntfs,当然还有vfat,msdosfat等。
不用的驱动就不要选了,让内核尽量简单。不用的尽量都省去,比如USB(如果你不用打印机或者扫描仪),还有并口的支持等。
特别的,实在看不懂,就选默认的值,比较保险啊~

搞定保存。。。
执行
#make dep
#make clean
#make bzImage
#make modules
#make modules_install
一切搞定了。。。新的内核生成在/usr/src/linux/arch/i386/boot目录下,也就是bzImage。
拷贝文件到/boot:
#cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.20
#cp /usr/src/linux/System.map /boot/System.map-2.4.20

修改启动管理器

  如果用LILO,修改/etc/lilo.conf,添加以下项:

image=/boot/vmlinuz-2.4.18
label=linux240
read-only
root=/dev/hda2

  其中root=/dev/hda2一行要根据需要自行加以修改。
  运行:

#/sbin/lilo -v

  确认对/etc/lilo.conf的编辑无误,现在重新启动系统:

#shutdown -r now

如果是用Grub启动管理器
就执行new-kernel-pkg --mkinitrd --moddep --install 2.4.20
这时候你的/boot下生成一个initrd-2.4.20.img

并且,你的Grub.conf也更改好了。不过要特别说明的是,自己vi一下Grub.conf,

把kernel /vmlinuz-2.4.18-14 ro root=LABEL=/ hda=ide-scsi改成
kernel /vmlinuz-2.4.18-14 ro root=/dev/hdaX
其中X是你的根的分区。

注意,这里根分区不时boot的那个50M的分区,而一般是你最大的那个分区,也就是"/",千万不要搞错哦。
保存,重起。。。。

如果顺利的话,就应该进入Xwindow了。可是,如果
1、出现以下错误提示VFS:cannot open root device "XXXX"or 00:00的话,就是你的grub.conf里kernel /vmlinuz-2.4.18-14 ro root=/dev/hdaX没有设对的问题了。我开始就是被这个问题搞的很烦。
2、进不了xwindow
如果你装过显卡驱动,比如Nvidia的话,你可以这样办
rpm -e NVIDIA_GLX_XXX(XXX为你的显卡驱动对应的版本号,比如我的是NVIDIA_GLX-1.0-3123)
rpm -e NVIDIA_kernel_XXXX(同上)
把以前安装的驱动删去。
rpmbuild --rebuild NVIDIA_kernel_XXXX,重新编译你的显卡驱动。编译好的放在/usr/src/redhat/RPMS/i386/下
然后安装就是了、、、
rpm -Uvh NVIDIA_kernel_XXXX.i386.rpm
rpm -Uvh NVIDIA_GLX_XXXX.i386.rpm
搞定,重起。。。ok~
3、不能自动关机
你可以在make menuconfig的时候,在 general setup里的“APM(advance power manager)BIOS SUPPORT”选“Y”,然后下面的“USE REAL MODE APM BIOS CALL TO POWER OFF”选“Y”,重新编译内核就ok了。

还要说明一点,如果你用的是EXT3分区格式请将EXT2编入内核,将EXT3编成模块。否则,你的系统不能加载你的分区。



以上是我的升级经历,如有错误高手请指正,谢谢。。HOHOHO~

详细的说明:[部份]

http://www.linuxsir.cn/forum.php?mod=viewthread&tid=17164
发表于 2002-12-9 16:54:41 | 显示全部楼层
唯雪兄的大作,弟兄们最好能点评一下。因为内核升级比较复杂。问题主要出在模块加载以及内核选项方面。。也就是说什么样选项,应该加入模块好还是直接写进内核。。
唯雪兄弟的帖子对于没有成功编译过内核的弟兄,有极大的帮助。如果您已经成功编译过,不妨也把您的经验与弟兄们分享。就是短短的一两句,对于咱们来说也有很大的帮助。有时就是一个提示,也能为我们打开一个变通解决问题的思路。。。

真情互助,就从相互交流开始。

多谢唯雪兄与弟兄们共享成功喜悦。。。。

请弟兄们多多参与,多谢。
发表于 2002-12-9 17:36:29 | 显示全部楼层

好,好,我明天就试试!

有什么问题请多指点!
发表于 2002-12-9 17:47:26 | 显示全部楼层
应该是make mrproper吧?
安装nvidia驱动不需要重新启动机器(节省时间)
其实如果你的驱动程序是作为模块装载的, 绝大部分不需要重新启动,
另外ext3可以直接编译进内核,我的没有什么问题
如果你需要使用USB鼠标,需要input core中的mousedev支持,不要忘了,
发表于 2002-12-10 14:20:21 | 显示全部楼层
建议不是lilo,虽然lilo确实有用。
建议使用grub,然后在升级内核的时候直接
apt-get install linux-image-2.4.20-686
安装完了以后,在/etc/grub.conf中添加:
title Debian (kernel 2.4.20)
root (hd0,1) # add you root device here , pay attention to number
kernel /boot/vmlinux-2.4.20-686
initrd=/boot/initrd.img-2.4.20-686

重新启动机器,就可以选择使用2.4.24内核引导了。
发表于 2002-12-12 08:40:27 | 显示全部楼层

我启动不起来

我升级完内核2.4.20后,启动时出现1、出现以下错误提示VFS:cannot open root device "XXXX"or 00:00,我看了上面的帖子,是grub.conf配置的问题,可我怎么启动系统来修改它,用启动盘也启动不起来啊,各位说说该怎么办啊。
发表于 2002-12-12 14:41:47 | 显示全部楼层

唯雪,请指点!

我刚开始准备编一个新的内核,呵呵,一开始就有问题了,请你帮我看一下,我执行:make mrproper 时,就出现:[root@louzy linux]# make mrproper
Makefile:536: Rules.make: No such file or directory
make: *** No rule to make target `Rules.make'.  Stop.

我以前没有编过内核,我执行:make xconfig,出现:root@louzy linux]# make xconfig
Makefile:536: Rules.make: No such file or directory
make: *** No rule to make target `Rules.make'.  Stop.
这是怎么一回事呀?
发表于 2002-12-12 16:12:21 | 显示全部楼层
这是没有把编译类的软件安装上。也就是[软件开发]类的没有选中。。兄弟还是升级一下升统吧。
发表于 2002-12-12 17:22:26 | 显示全部楼层
那我的应该怎么解决呢
我启动不起来
我升级完内核2.4.20后,启动时出现1、出现以下错误提示VFS:cannot open root device "XXXX"or 00:00,我看了上面的帖子,是grub.conf配置的问题,可我怎么启动系统来修改它,用启动盘也启动不起来啊,各位说说该怎么办啊。
发表于 2002-12-12 22:16:06 | 显示全部楼层

遇见一个棘手的内核编译错误问题,请指教

make[2]: Leaving directory `/usr/src/linux-2.4.18-14/arch/i386/math-emu'
make[1]: Leaving directory `/usr/src/linux-2.4.18-14/arch/i386/math-emu'
make[1]: Entering directory `/usr/src/linux-2.4.18-14'
ld -m elf_i386 -T /usr/src/linux-2.4.18-14/arch/i386/vmlinux.lds -e stext arch/i386/kernel/head.o arch/i386/kernel/init_task.o init/main.o init/version.o init/do_mounts.o --start-group arch/i386/kernel/kernel.o arch/i386/mm/mm.o kernel/kernel.o mm/mm.o fs/fs.o ipc/ipc.o  drivers/char/char.o drivers/block/block.o drivers/misc/misc.o drivers/net/net.o drivers/media/media.o drivers/char/drm/drm.o drivers/atm/atm.o drivers/ide/idedriver.o drivers/cdrom/driver.o drivers/pci/driver.o drivers/pnp/pnp.o drivers/video/video.o arch/i386/math-emu/math.o net/network.o crypto/crypto.o abi/abi.o /usr/src/linux-2.4.18-14/arch/i386/lib/lib.a /usr/src/linux-2.4.18-14/lib/lib.a /usr/src/linux-2.4.18-14/arch/i386/lib/lib.a --end-group  -o vmlinux
kernel/kernel.o: In function `do_acct_process':
kernel/kernel.o(.text+0xab22): undefined reference to `__udivdi3'
fs/fs.o: In function `proc_pid_stat':
fs/fs.o(.text+0x246ab): undefined reference to `__udivdi3'
make[1]: *** [kallsyms] Error 1
make[1]: Leaving directory `/usr/src/linux-2.4.18-14'
make: *** [vmlinux] Error 2
错误如上,我实在解决不了
谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表