当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 8 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [原创]Feisty升级到2.6.20-13内核后新内核无法引导系统的故障解决过程一例
帖子发表于 : 2007-03-28 12:57 

注册: 2007-01-23 17:20
帖子: 28
地址: 成都
送出感谢: 0 次
接收感谢: 0 次
发现坛子里有不少和我一样的喜欢尝鲜的人,热衷于升级系统什么的,比如现在的还是测试版的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


_________________
Acer Aspire 5502ZWXCi

Ubuntu 8.10/Windows XP SP3


最后由 a.ron 编辑于 2007-03-30 14:14,总共编辑了 4 次

页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-03-28 15:57 
头像

注册: 2007-03-13 17:26
帖子: 2254
送出感谢: 0 次
接收感谢: 1
你的问题不知道

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

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


另,新系统还单独分什么 /boot 区, 还有你把交换分区分在硬盘最内圈 ??? 真是...


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-03-28 18:21 

注册: 2007-01-23 17:20
帖子: 28
地址: 成都
送出感谢: 0 次
接收感谢: 0 次
引用:
新版 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


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2007-03-29 2:26 

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


_________________
===============================
欢迎访问[记忆,过往……]http://TianYiSpace.cn !!


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2007-03-29 12:05 

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

可能像我这样的情况是少数吧。

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

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


_________________
Acer Aspire 5502ZWXCi

Ubuntu 8.10/Windows XP SP3


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2007-03-30 11:59 
头像

注册: 2007-03-13 17:26
帖子: 2254
送出感谢: 0 次
接收感谢: 1
我感觉 是 menu.lst 里 root= 选项和 fstab 里 / 分区选项不一样引起的,

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

再试两个不一样的情况,, 重启四次试验一下


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2007-03-30 16:21 

注册: 2006-12-16 13:07
帖子: 53
地址: 浙江
送出感谢: 0 次
接收感谢: 0 次
# /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就好了。


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2007-04-02 12:09 

注册: 2007-01-23 17:20
帖子: 28
地址: 成都
送出感谢: 0 次
接收感谢: 0 次
BY-UUID 的话,应该是没有问题的


_________________
Acer Aspire 5502ZWXCi

Ubuntu 8.10/Windows XP SP3


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 8 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译