LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: 鸟儿

实在是郁闷了,内核的问题!(已搞定)

[复制链接]
发表于 2006-2-13 15:28:59 | 显示全部楼层
:)太奇怪了。目前你是第一个没有特殊硬件而initrd出问题的人。仔细寻找一下原因吧。

我全下的官方的kernel, 仍然不能启动到控制台,
装回2.6.15.1-2就可以了,
所以一定是2.6.15.2-2     2.6.15.4有问题.

从2.6.15.2-2以后的initrd26.img
在启动时总时提示unable open initial console后重启,换2.6.15.1的initrd26.img后就可以了, 所以想请英文好的朋友给提个bug
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-14 16:58:55 | 显示全部楼层
要想保证在arch下内核升级的成功率,要注意以下几点(折腾了N小时):
1,注意备份,把/boot下的原始内核文件改名备份。
[color="Red"]因为用“mkinitrd auto”或者“mkinitrd full”生成inintrd文件会和原始内核文件重名,所以新的initrd文件会覆盖掉原始内核文件。不备份的话,除非你对自己有100%的自信。
命令例子(我的):

  1. cp /boot/kconfig26 /boot/kconfig-2.6.15
  2. cp /boot/System.map26 /boot/System.map-2.6.15
  3. cp /boot/vmlinuz26 /boot/vmlinuz-2.6.15
  4. cp /boot/initrd26.img /boot/initrd-2.6.15.img
  5. cp /boot/initrd26-full.img /boot/initrd-2.6.15-full.img

  6. [color="Red"]#相应的,/boot/grub/menu.lst也要做相应的修改![/color]
复制代码


2,步骤(我是手动升级),到目前为止,2.6.x的安装步骤几乎没什么变化!我的命令是:

  1. cd /usr/src/linux-2.6.15.4
  2. make menuconfig
  3. make
  4. make modules
  5. make modules_install
  6. cp System.map /boot/System.map-2.6.15.4
  7. cp .config /boot/kconfig26
  8. cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.15.4
  9. mkinitrd auto
复制代码

[color="Red"]注意:上面倒数第二步,做复制配置文件的命令时,到/boot的配置文件名一定要用kconfig26。不然的话,Arch的mkinitrd就不会判断你的config选项是否合理。比如我在配置RAM disk容量时把Arch默认的16384kb改成了8192kb,在生成initrd文件时,mkinitrd就判断出我的RAM disk容量太少而拒绝生成initrd文件!

[color="Red"]3,必须要initrd.img文件(在2.6.x内核下),这是Arch官方指定的。因此最后mkinitrd命令必须执行!
注意:一定要在编译内核的工作目录下执行mkinitrd,例如我的工作目录就是:
/usr/src/linux-2.6.15.4
否则,Arch的mkinitrd命令会找不到新内核模块的安装目录!也就是说在这种情况下生成的内核镜像文件是“废物”文件,用它启动系统都困难,更别说其他功能的加载了!

[color="Blue"]小心得:
mkinitrd auto 或 mkinitrd full 执行完后,会自动在/boot目录生成“initrd26.img”或者是“initrd26-full.img”。它们和原始内核的initrd名字冲突并且会覆盖原来的initrd文件。所以改名备份决对必要!
Arch的mkinitrd太“为用户着想”了,即使出现错误,照样生成initrd文件。当然,这个时候的内核镜像已经是“废物”了!是无法启动系统的!所以我请大家注意,生成镜像时,把mkinitrd的执行信息转向一下,看看有没有什么严重错误。命令例子:

  1. mkinitrd auto &> filename.txt
  2. vi filename.txt
复制代码

还有,如果发现什么错误,不要急着重新编译内核,只要不是kconfig26配置的问题,把“废物”内核镜像删了,改正错误,重新执行“mkinitrd auto”或“mkinitrd full”就行了!

叹息:请Arch的老大们多写些说明文档吧,省得我等小鸟忙忙碌碌“奔”学习啊!
回复 支持 反对

使用道具 举报

发表于 2006-2-14 19:42:49 | 显示全部楼层
恭喜!问题解决了就好!
如果怀疑initrd生成得不对,可以把它bzip开后,mount上带检查一次呀
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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