免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234
最近访问板块 发新帖
楼主: §飞鸟§
打印 上一主题 下一主题

Linux内核2.4.20升级至2.6.0遇到的问题 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2005-04-23 00:17 |只看该作者

Linux内核2.4.20升级至2.6.0遇到的问题

我下载了module-init-tools-3.1,3.0我没有找到
发生了下面奇怪的事,以下命令全都是照着教程打的

[root@localhost module-init-tools-3.1]# configure --prefix=/
bash: configure: command not found
[root@localhost module-init-tools-3.1]# make moveold
make: *** No rule to make target `moveold'. Stop.
[root@localhost module-init-tools-3.1]# make all install
make: *** No rule to make target `all'. Stop.

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
32 [报告]
发表于 2005-04-23 00:57 |只看该作者

Linux内核2.4.20升级至2.6.0遇到的问题

configure --prefix=/
改為:
bash configure --prefix=/

论坛徽章:
0
33 [报告]
发表于 2005-04-23 12:12 |只看该作者

Linux内核2.4.20升级至2.6.0遇到的问题

谢谢楼上的。。
我升级了modules-tools
然后再编译内核。
把grup.conf按照论坛上的做法改了。
改成:kernel /vmlinuz-2.6.0 ro root=/dev/hda7 elevator=deadline

但是重启后,还是进不去
屏幕显示:
mount:error 19 mounting ext3
pivotroot:pivot_root(/sysroot,/sysroot/initrd) failed:2
umount /initrd/proc failed:2
Freeing unused kernel memory:232k freed
Kernel panic:No init found.Try passing init=option to kernel


在menuconfig的时候,我把ext3和网卡驱动都放到要编译的里面,怎么还会出现这种情况??   

论坛徽章:
0
34 [报告]
发表于 2005-04-23 18:16 |只看该作者

Linux内核2.4.20升级至2.6.0遇到的问题

自己顶一下。。

论坛徽章:
0
35 [报告]
发表于 2005-04-23 23:21 |只看该作者

Linux内核2.4.20升级至2.6.0遇到的问题

这是grub.conf文件

kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
你把ro root=LABEL=/ 去掉试试,2.6.0好像得把这个去掉,我也是在redhat9上编译的2.6.11.4的升级module-init-tools,把ext3文件系统编译进内核,最后是成功了。你多试试,找找帖子看看应该没有问题的。

论坛徽章:
0
36 [报告]
发表于 2005-04-24 18:12 |只看该作者

Linux内核2.4.20升级至2.6.0遇到的问题

grub.conf这个文件好像没有问题吧?

论坛徽章:
0
37 [报告]
发表于 2005-04-25 11:26 |只看该作者

Linux内核2.4.20升级至2.6.0遇到的问题

你试试在grub.conf里,把新内核的
initrd /initrd-2.6.0.img改成 no initrd

再重起

论坛徽章:
0
38 [报告]
发表于 2005-04-25 11:28 |只看该作者

Linux内核2.4.20升级至2.6.0遇到的问题

能详细描述一下你的硬件环境吗?

论坛徽章:
0
39 [报告]
发表于 2005-04-25 12:19 |只看该作者

Linux内核2.4.20升级至2.6.0遇到的问题

升级到2、6内核需要注意以下几个问题:
1、升级module-init-tools至2.4.21-23
2、更改系统启动脚本/etc/rc.d/rc.sysyinit,因为该脚本可有有缺陷,因为/proc/ksysms文件在2.6内核中已经没有了.
vi /etc/rc.d/rc.sysinit
找到:if !LC_ALL=C grep -iq nomodules /proc/cmdline 2>;/dev/null &&[-f /proc/lsyms];then USEMODULES=y
将&&[-f /proc/ksyms]去掉。
3、开始编译内核。具体过程略。
4、2.6内核增加了与proc类似的sysfs文件系统,需要建立/sys目录
mkdir /sys
在/etc/rc.d/rc.sysinit文件中的action $"mounting proc filesystem:"mount -n -t proc /proc /proc, 后增加一行:
action $"mounting sysfs filesystem:"mount -n -t sysfs /sys/sys
然后再reboot试一下。

论坛徽章:
0
40 [报告]
发表于 2005-04-25 12:56 |只看该作者

Linux内核2.4.20升级至2.6.0遇到的问题

级RH9.0到2.6.5内核全过程     
linux-2.6.x内核发布后,与2.6.x内核配套的系统程序并没有相应的来得及更新, 升级过程会碰到很多问题。虽然网上已有很多关于升级到2.6.x文章,但总是有些细节没有作很好的总结,因此撰写本文将我的经验与大家分享一下。我是在虚拟机上将Linux系统从Redhat9.0升级到2.6.5内核,虚拟机软件为:VMware Workstation 4.0.5 build-6030。

准备工作
1、做好重要数据的备份工作,这是一个好习惯。

2、下载最新的2.6.x内核源码包
所有Linux内核的官方版本可以在http://www.kernel.org/ 找到。内核2.6.5 具体的下载地址是:http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.5.tar.gz。

3、升级module-init-tools软件包
要编译与正常运行新的内核你需要升级一些软件包,这些信息在源码目录下的Documentation/Changes文件中,请根据你的实际情况选择升级。
特别要说明的是,因为2.4.x下的modutils工具包已经不在适合新的2.6.x内核, 必需将其升级到module-init-tools工具包.,我下载module-init-tools-3.0.tar.gz源码包的地方是:http://www.kernel.org/pub/linux/kernel/people/rusty/modules/module-init-tools-3.0.tar.gz

接下来, 按照下列步骤安装module-init-tools工具包:

tar -zxvf module-init-tools-3.0.tar.gz

在module-init-tools-3.0目录下,

# 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.
如果你使用devfs系统你还需要复制modprobe.devfs 到/etc目录下。
当你升级完相关软件包之后,准备工作就算完成了,下面我们将进入到编译阶段。

配置,编译和安装linux-2.6.x内核
2.6的build系统与2.4有很大的不同,实际上是更加简单与方便了。

· 将linux-2.6.5.tar.gz 复制到 /usr/src/ 下

· tar -zxvf linux-2.6.5.tar.gz

· cd linux-2.6.5

· 如果是新内核没有编译过,就不需要用make mrproper 把原来编译产生的垃圾删除

· make menuconfig,进入内核选项卡。选择相应的配置时,有三种选择:
  Y--将该功能编译进内核
  N--不将该功能编译进内核
M--将该功能编译成可以在需要时动态插入到内核中的模块
在编译内核的过程中,最烦杂的事情就是这步配置工作了,很多新手都不清楚到底该如何选取这些选项。实际上在配置时,大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。选择的原则是将与内核其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要选;与内核关心紧密而且经常使用的部分功能代码直接编译到内核中。关于这方面,有很多文章,就不作详细介绍了。
其中要注意的是:RH9.0使用的是ext3文件系统,要把ext3 fs编译进内核。如果系统是SCSI硬盘,并且root fs在SCSI硬盘上,配置内核时也要把SCSI装置支持编译进内核。总之,升级后的系统需要什么,就要把相应的内容编译进内核。

· make

· make modules

· make modules_install

· make install
该命令是最近的从2.5.69内核(按照内核发布时间算)开始才有的选项,他可以帮你完成很多东西: (1)把压缩内核映象拷贝到/boot目录下, 并创建相应的System.map符号链接; (2)修改bootloader的配置文件; (3)调用mkinitrd程序创建内核的initrd映象. 对于GRUB而言, 将在/boot/grub/grub.conf配置文件增加如下类似的配置行:
title Red Hat Linux (2.6.5)
root(hd0, 0)
kernel /boot/vmlinuz-2.6.5 ro root=LABEL=/
initrd /boot/initrd-2.6.5.img
注意:一定要先编译并安装模块,再运行make install;否则可能会出现错误,导致升级失败!

· 修改/boot/grub/grub.conf配置文件。新内核并不识别"root=LABEL=/"这个启动参数, 如果现在你就重新启动新内核的话, 将发生kernel panic错误。因此,必需把这个" LABEL=/"替换成你真实的根分区,就OK了。

如何知道你的根目录"\"在哪个partition上? 命令为: # df
以下是偶机器的部分输出:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda2 3834496 1609188 2030520 45% /
/dev/hda1 101089 15154 80716 16% /boot
none 46548 0 46548 0% /dev/shm

可见,我的根目录在/dev/hda2上,需要将启动参数改为 "root=/dev/hda2"。

· 重启便可以看见kernel-2.6.5了。

声明:本升级过程参照了网上很多相关的文章,并且得到网友们的帮助,深表感谢!

如果文中有错误,恳请请大家指正。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP