自从月前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
分析错误信息发现,从新内核引导系统时,错误出现在已经挂载/分区后,挂载/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
...
代码: 全选
...
# 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
...
代码: 全选
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
代码: 全选
# <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
...
后记:
是否如上的解决方案就是事实的真相了呢?
代码: 全选
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
代码: 全选
# <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
...
很清楚了,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