[原创]Feisty升级到2.6.20-13内核后新内核无法引导系统的故障解决过程一例

系统错误报告和讨论
回复
a.ron
帖子: 28
注册时间: 2007-01-23 17:20
来自: 成都
送出感谢: 0
接收感谢: 0

[原创]Feisty升级到2.6.20-13内核后新内核无法引导系统的故障解决过程一例

#1

帖子 a.ron » 2007-03-28 12:57

发现坛子里有不少和我一样的喜欢尝鲜的人,热衷于升级系统什么的,比如现在的还是测试版的Feisty。大家多交流交流哦! :D

自从月前UPDATE至Feisty H5后,我是一直跟随Ubuntu官方的更新第一时间做更新的,也开始使用新版内核,从2.6.20-9到2.6.20-11,升级过程和升级后的系统都一切正常。但从2.6.20-12内核开始,升级后即无法从新内核启动系统,错误信息的大致意思是:系统无法识别/boot等分区的ext2文件系统。

我的本本的分区最近也作了调整,但GRUB仍是安装在/boot分区中的,如下:

代码: 全选

Number  Size    Type      File system  MountPoint      Flags
 1      94.1MB  primary   ext2         /boot           boot 
 2      7.51GB  primary   ntfs         windows xp     
 3      6.84GB  primary   ext3         /usr     
 4      41.44GB extended                               lba  
 5      5.76GB  logical   ext3         /     
 6      14.65GB logical   ntfs         windows program     
 7      15.91GB logical   fat32        data     
 8      4.00GB  logical   ext3         /opt     
 9      1.12GB  logical   swap         swap     
在升级至2.6.20-12内核时未做仔细的查看,还以为是和2.6.20-8内核一样是有BUG的,下一版本会予以修复。哪知升级到2.6.20-13后仍然如此,而且错误信息也是相同的。
分析错误信息发现,从新内核引导系统时,错误出现在已经挂载/分区后,挂载/boot等分区的时候。所以新内核实际上是可以识别各分区的文件系统的。查看/etc/fstab:

代码: 全选

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# /dev/hda1
/dev/hda1       /boot           ext2    defaults        0       2
# /dev/hda5
/dev/hda5       /               ext3    defaults,errors=remount-ro 0       1
...
而/boot/grub/menu.lst中的内核加载项是这样的:

代码: 全选

...
# kopt=root=UUID=dd63d5b3-b549-4d8e-abe2-521ee4082cbc ro
...

title		Ubuntu, kernel 2.6.20-13-generic
root		(hd0,0)
kernel		/vmlinuz-2.6.20-13-generic root=UUID=dd63d5b3-b549-4d8e-abe2-521ee4082cbc ro quiet splash
initrd		/initrd.img-2.6.20-13-generic
quiet
savedefault

...
title		Ubuntu, kernel 2.6.20-11-generic
root		(hd0,0)
kernel		/vmlinuz-2.6.20-11-generic root=UUID=dd63d5b3-b549-4d8e-abe2-521ee4082cbc ro quiet splash
initrd		/initrd.img-2.6.20-11-generic
quiet
savedefault

...
所以会不会是新内核对分区的识别需要使用BY-UUID的模式呢?

代码: 全选

aron@aron-laptop:~$ ls /dev/disk/by-uuid/ -l
total 0
lrwxrwxrwx 1 root root 10 2007-03-28 17:49 45DB-026A -> ../../hda7
lrwxrwxrwx 1 root root 10 2007-03-28 17:49 66f461fe-969a-4d8a-ac57-5ef1a99b2d0c -> ../../hda3
lrwxrwxrwx 1 root root 10 2007-03-28 17:49 945e373e-c360-4c74-b967-94120103fe25 -> ../../hda1
lrwxrwxrwx 1 root root 10 2007-03-28 17:49 9624B8F824B8DD05 -> ../../hda6
lrwxrwxrwx 1 root root 10 2007-03-28 17:49 b5ffc87e-da51-4008-97b7-2710cda8f026 -> ../../hda9
lrwxrwxrwx 1 root root 10 2007-03-28 10:23 D4842EB8842E9D4C -> ../../hda2
lrwxrwxrwx 1 root root 10 2007-03-28 17:49 dd63d5b3-b549-4d8e-abe2-521ee4082cbc -> ../../hda5
lrwxrwxrwx 1 root root 10 2007-03-28 17:49 e75d2f45-eafd-4530-a858-b5bf6d1beabf -> ../../hda8
更改/etc/fstab将其中使用/dev/hdax表示的分区用其UUID代替,如下:

代码: 全选

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# /dev/hda1
UUID=945e373e-c360-4c74-b967-94120103fe25 /boot           ext2    defaults        0       2
# /dev/hda5
UUID=dd63d5b3-b549-4d8e-abe2-521ee4082cbc /               ext3    defaults,errors=remount-ro 0       1
...
重启系统,并用新内核引导。OK,可以正常引导了。

后记:
是否如上的解决方案就是事实的真相了呢?

代码: 全选

aron@aron-laptop:~$ fdisk -l /dev/hda
(查询结果为空)

代码: 全选

aron@aron-laptop:~$ ls /dev/disk/by-uuid/ -l
total 0
lrwxrwxrwx 1 root root 10 2007-03-28 17:49 45DB-026A -> ../../sda7
lrwxrwxrwx 1 root root 10 2007-03-28 17:49 66f461fe-969a-4d8a-ac57-5ef1a99b2d0c -> ../../sda3
lrwxrwxrwx 1 root root 10 2007-03-28 17:49 945e373e-c360-4c74-b967-94120103fe25 -> ../../sda1
lrwxrwxrwx 1 root root 10 2007-03-28 17:49 9624B8F824B8DD05 -> ../../sda6
lrwxrwxrwx 1 root root 10 2007-03-28 17:49 b5ffc87e-da51-4008-97b7-2710cda8f026 -> ../../sda9
lrwxrwxrwx 1 root root 10 2007-03-28 10:23 D4842EB8842E9D4C -> ../../sda2
lrwxrwxrwx 1 root root 10 2007-03-28 17:49 dd63d5b3-b549-4d8e-abe2-521ee4082cbc -> ../../sda5
lrwxrwxrwx 1 root root 10 2007-03-28 17:49 e75d2f45-eafd-4530-a858-b5bf6d1beabf -> ../../sda8
对比前面相同的查询,结果有什么变化吗?是否可以如下所示将UUID表示的分区替换回/dev/sdax呢?

代码: 全选

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# /dev/hda1
/dev/sda1       /boot           ext2    defaults        0       2
# /dev/hda5
/dev/sda5       /               ext3    defaults,errors=remount-ro 0       1
...
OK,一切正常。

很清楚了,2.6.20-13 For Ubuntu Feisty 的内核会自动的将ATA接口(我的是PATA,不清楚SATA是否如此)的硬盘识别为(或者仅仅是标识为)SCSI。如果升级之前对/etc/fstab作过修改用/dev/hdax来表示分区的,升级后新内核无法引导系统,这应该是其中的一个原因了。不知道这是不是新内核的一个BUG?还是我理解错了,新内核本来就是这样来处理的?

个人浅见,仅供各位参考。如有不确之处,还请不吝指正。
本贴最初发表于我的Blog:http://my.opera.com/isaron/blog/ubuntu-feisty-2-6-20-13
上次由 a.ron 在 2007-03-30 14:14,总共编辑 4 次。
Acer Aspire 5502ZWXCi

Ubuntu 8.10/Windows XP SP3
头像
windwiny
帖子: 2254
注册时间: 2007-03-13 17:26
送出感谢: 0
接收感谢: 1 次

#2

帖子 windwiny » 2007-03-28 15:57

你的问题不知道

新版 GRUB 可以用UUID来代替 hdaX 之类的,
内核在读取 fstab 当然也可以

这样可以方便把系统 装在移动硬盘上,到处 "移动" 使用 ,再不会因为 设备号变了要修改文件之类的才能启动


另,新系统还单独分什么 /boot 区, 还有你把交换分区分在硬盘最内圈 ??? 真是...
a.ron
帖子: 28
注册时间: 2007-01-23 17:20
来自: 成都
送出感谢: 0
接收感谢: 0

#3

帖子 a.ron » 2007-03-28 18:21

新版 GRUB 可以用UUID来代替 hdaX 之类的,
内核在读取 fstab 当然也可以
可能我没有说明白:在用UUID替代 /dev/hdax 的表示之后,系统恢复正常。
另,新系统还单独分什么 /boot 区,
是从Edgy UPDATE来的,而且单独分出 /boot分区是便于在系统出状况时好处理,而不用使用光盘之类的。
还有你把交换分区分在硬盘最内圈 ???
是最内圈吗?应该是最外圈吧?

其实这个也不是什么大问题的,毕竟像我这样分好多区的应该是少数吧,而发生这样的故障的条件也正如我上面说的:如果升级之前对/etc/fstab作过修改用/dev/hdax来表示分区的,升级后新内核无法引导系统,错误症状是内核无法识别其它分区(不管是ext2/ext3/swap分区还是vfat分区)的情况。
Acer Aspire 5502ZWXCi

Ubuntu 8.10/Windows XP SP3
leo_tzao
帖子: 157
注册时间: 2005-11-15 11:28
送出感谢: 0
接收感谢: 0
联系:

#4

帖子 leo_tzao » 2007-03-29 2:26

楼主的解决办法看来只适合一种情况,我的笔记本,fstab本来就是uuid的,和menu.lst里面也完全一致,并且我的硬盘也没有被识别为scsi设备,但是我也是12和13两个版本内核均不能启动,苦哇 :(
a.ron
帖子: 28
注册时间: 2007-01-23 17:20
来自: 成都
送出感谢: 0
接收感谢: 0

#5

帖子 a.ron » 2007-03-29 12:05

楼主的解决办法看来只适合一种情况,我的笔记本,fstab本来就是uuid的,和menu.lst里面也完全一致,并且我的硬盘也没有被识别为scsi设备,但是我也是12和13两个版本内核均不能启动,苦哇 Sad
可能像我这样的情况是少数吧。

不过发现坛子里不少朋友在升级至12/13内核后出现系统各方面的问题,所以不得不让想想是不是新内核在某些方面作了很大的调整,以致与旧有系统的某些配置不兼容?而我所碰到的也可能只是这其中的一个较个别的具体症状了。

对了,我的本本只有在使用12/13内核时硬盘才被识别为scsi,而在使用11内核时却不会有这样的问题。
Acer Aspire 5502ZWXCi

Ubuntu 8.10/Windows XP SP3
头像
windwiny
帖子: 2254
注册时间: 2007-03-13 17:26
送出感谢: 0
接收感谢: 1 次

#6

帖子 windwiny » 2007-03-30 11:59

我感觉 是 menu.lst 里 root= 选项和 fstab 里 / 分区选项不一样引起的,

楼主试一下 两个文件 都用uuid 或是 /dev/hdXX 格式的,

再试两个不一样的情况,, 重启四次试验一下
tellno
帖子: 53
注册时间: 2006-12-16 13:07
来自: 浙江
送出感谢: 0
接收感谢: 0

#7

帖子 tellno » 2007-03-30 16:21

# /etc/fstab: static file system information.
#
# -- This file has been automaticly generated by ntfs-config --
#
# <file system> <mount point> <type> <options> <dump> <pass>

proc /proc proc defaults 0 0
# Entry for /dev/sda3 :
UUID=2bc6b33b-b209-4740-9b21-d8d172c0996e / ext3 defaults,errors=remount-ro 0 1
# Entry for /dev/sda1 :
UUID=4CB4E9C9B4E9B61C /media/sda1 ntfs umask=222,utf8 0 1
# Entry for /dev/sda5 :
UUID=14A7-DFE4 /media/sda5 vfat defaults,utf8,umask=007,gid=46 0 0
# Entry for /dev/sda6 :
UUID=123866F0E93129B1 /media/sda6 ntfs umask=222,utf8 0 1
# Entry for /dev/sda7 :
UUID=48E19BC7E982D264 /media/sda7 ntfs umask=222,utf8 0 1
# Entry for /dev/sda8 :
UUID=A3FB9E8B68123BD1 /media/sda8 ntfs umask=222,utf8 0 1
# Entry for /dev/sda4 :
UUID=1ec76421-ebed-49da-8733-df542b2aee60 none swap sw 0 0
/dev/scd1 /media/cdrom0 udf,iso9660 user,noauto 0 0


以上是我的FSTAB,从6.10升到7.04时是2.6.16,一直升级到现在的2.6.20-13,都没有出过大问题。

中间安装过ntfs-3g,出现过 计算机 中不显示挂载的分区的问题,去掉ntfs-3g就好了。
a.ron
帖子: 28
注册时间: 2007-01-23 17:20
来自: 成都
送出感谢: 0
接收感谢: 0

#8

帖子 a.ron » 2007-04-02 12:09

BY-UUID 的话,应该是没有问题的
Acer Aspire 5502ZWXCi

Ubuntu 8.10/Windows XP SP3
回复

回到 “Ubuntu错误报告”