Ubuntu Give up waiting for root device 解决之道
前言
昨天晚上把ubuntu 9.10 的Linux 内核升级到 31-17 就关机了。今天中午进去后出错,内容如下:
Give up waiting for root device. Common problems:
-boot args (cat.proc/cmdline)
-check root delay=(did the system wait long enough?)
-check root=(did teh system wait for the right device?)
-miss modules (cat/proc/modules;ls/dev)
ALERT! /dev/disk/by-uuid/acc3414d-926c-453c-b458-cf47088d77d2 does not exist.dropping to a shell!
busybox v1.10.2(ubuntu 1:1.10.2-lubuntu6)bulit-in shell (ash).
enter 'help' for a list of built-in commands
-boot args (cat.proc/cmdline)
-check root delay=(did the system wait long enough?)
-check root=(did teh system wait for the right device?)
-miss modules (cat/proc/modules;ls/dev)
ALERT! /dev/disk/by-uuid/acc3414d-926c-453c-b458-cf47088d77d2 does not exist.dropping to a shell!
busybox v1.10.2(ubuntu 1:1.10.2-lubuntu6)bulit-in shell (ash).
enter 'help' for a list of built-in commands
[by .z, 我之前做得操作是增加分区,挂载新分区,我的linux系统是运行在虚拟机上
]
分析
一开始不知道怎么办,挑战以下吧。
1.既然是升级内核的问题,就和升级的
内核不兼容或着是
硬盘出错有关。
(1).换内核,在Grub中把31-17改到31-15,结果是同样的问题。
失败。
(2).那就是硬盘出错了。
2.根据提示did the system wait long enough?判断是不是等待时间不足?
于是在GRUB 中 在 kernel 的内核后 加载 rootdelay=120(这个加到哪从网上查)。失败。
3.恼了,在 busybox v1.10.2 中开是不是UUID的事,我的linux 的 / (根目录)安装在/dev/sda5上
ls -l /dev/disk/by-uuid
竟然没有 sda5 的uuid,
问题找到。
[by .z, 我的有sda5和sda3,但是没有sda1]
解决
1.不管他,先进系统再说。
直接在GRUB中把 kernel 那句中的 root=uuid=xxxxxxx给他改成 root=/dev/sda5。[by .z, 我的修改为/dev/sda1]
成功进入。
2.至此,可以有两种解决之道,一种是先用着,一种是根本解决之道。
3.对于先用着,只要把Grub的menu.lst 里面的 root=uuid=xxxxx改成 root=/dev/sda5。这个我不多说,可以搜一下,网上有,也可以给我留言。
4.对于根本解决之道,请看下面:
根本解决之道 [by .z,进行系统后,执行 fsck]
1.uuid不存在,那我们只要修复就行了,从网上查,有的说要重装GRUB。直觉告诉我不行。
2.那我记得有个 fsck 的可以修复硬盘。试试:
sudo fsck
的确有错,看了问题要解决了。
修复一下,重启机器。
又进不去了,不过这回找到uuid了,就是进不去x-window。那我就再在shell中,fsck一下。
重启,到进度条的时候,机器自动修复硬盘,看来有希望了。
呵呵,果然进去了。
此致全部解决。
后语:
是升级写硬盘出错导致此问题。