/dev/disk/by-uuid ***** does not exits

首先要说明的是 make xconfig  “对号”是编译进内核  通过与make menuconfig 对比可知 我一开始选反了..
 
编译内核后出现找不到磁盘的情况
 
解决方法一:
安装完ubuntu 10.10后,启动发生错误。提示
ubuntu alert! /dev/disk/by-uuid/########### does not exist

解决方案:
修改启动参数,不要通过uuid来指定root所在的disk。


具体操作:
1. 出现ubuntu alert! /dev/disk/by-uuid/########### does not exist后会进入命令行,敲reboot重启
2. 重启会进入grub2的启动菜单. 如果没有进入启动菜单,可以尝试在启动时按住shift键。
3. 在启动菜单界面通过上下键选择启动选项。通常是第一个。
4. 按‘e’键进入编辑模式,可以编辑这一项的启动参数。
5. 找到root=UUID=XXXXXXX 这里,改成root=/dev/sdXY,然后按ctrl+x启动。(这里sdXY中的X代表一个字母,Y代表一个数字,通常是/dev/sda1啦。可以在live cd模式下通过fdisk -l来看你都有哪些设备,以此来确定X和Y的值)


这样应该可以正常启动到ubuntu了。
上面的修改是临时性的,系统不会记住。重启后又会出错了。所以在正常进入系统后需要修改grub2的配置,让他以后不要通过uuid来指定系统所在的disk了。


具体操作:
1. 编辑 /etc/default/grub 文件。 我用的是vi。 可以 sudo vi /etc/default/grub
2. 找到 #GRUB_DISABLE_LINUX_UUID=true 这一行
3. 去掉前面的#号。(#号表示这一行是注释啦,去掉之后,就是让这一行的配置起作用。)
4. 保存退出。
5. 执行 sudo update-grub ( update-grub会更新/boot/grub/grub.cfg文件 )


这样下次就能正常启动啦!


PS.
如果系统是用的grub而不是grub2,那直接修改/boot/grub/menu.lst文件就可以了。


grub2的参考:
https://help.ubuntu.com/community/Grub2



解决方法二:
[出错状况]:
安装步骤都正确总是出现“ubuntu alert dev disk by-uuid ########### does not exist dropping to a shell”的提示.

[解决办法]:
增加rootdelay参数。利用命令sudo gedit /boot/grub/menu.lst修改menu.lst的内容为:Kernel /boot/vmlinuz-2.6.27-7-server rootdelay=90 root=UUID=596db294-4759-4f2c-991b-f8be2931a56a ro quiet。再次重启.

解决方法三

ubuntu 开机出错disk by-uuid ########### does not exist dropping to a shell(启动时间太短)

 经过查看 dmesg 信息,发现系统引导时,initrd 等待加载 SAS/SATA 控制器驱动的时间太短(这也是为啥 Ubuntu 启动速度飞快的原因之一),导致 SAS/SATA 控制器还没有成功驱动之前,系统就开始进行下一步引导,而此时,系统中连磁盘都没有加载,当然什么都找不到 – -” 真不知道作为服务器 OS,这个重要的步骤 Ubuntu 这么火急火燎的干什么呢…… 相比之下,CentOS 启动虽然慢那么一点点,但由于 initrd 有足够的时间等候加载 SAS/SATA 控制器驱动,所以从不会发生这样的窘境。

找到问题后,只需要延长 initrd 等候加载 SAS/SATA 控制器驱动程序的时间就可以了:

1. 系统启动到 GRUB 界面时,按 “ESC” -> “e” 进入 GRUB 菜单编辑,在 kernel 一行的后面添加 rootdelay=60(就是第一个单词是linux的那行中间加入rootdelay=60)

linux /vmlinuz* rootdelay=60

2. “CTRL + X” 启动进入系统;

3. 启动进入系统后修改sudo  vi /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX="rootdelay=60"

4. 执行 Shell 更新 GRUB 菜单内容:update-grub

5. 重启系统进行测试。注意,GRUB 菜单选择内核启动后仍然会有一段时间的黑屏,等待一段时间应该能过去,如仍不正常可尝试继续增大 rootdelay 的时间。


原因:
rootdelay设置的时间太短,导致系统还没有正常加载完设备驱动就已经开始寻找root分区,而导致找不到/root分区。
 
问题是通过以上方法仍然没有解决问题!
进入提示符后 ls /dev/
发现根本没有sdax ,sdbx
也就是没有发现硬盘,这肯定是内核编译的时候没有加载相应驱动 不能编译成M
进入内核配置菜单
[*] Block devices --->
<*> Loopback device support

-*- SCSI device support[*] legacy /proc/scsi/ support
<*> SCSI disk support
<*> SCSI generic support[*] Probe all LUNs on each SCSI device[*] Asynchronous SCSI scanning (这个非常重要,貌似你的问题和这个有关,必选!)


sata硬盘
<*> Serial ATA and Parallel ATA drivers --->[*] ATA ACPI Support[*] SATA Port Multiplier support
<*> AHCI SATA support[*] ATA SFF support[*] ATA BMDMA support
<*> Intel ESB, ICH, PIIX3, PIIX4 PATA/SATA support
<*> AMD/NVidia PATA support
<*> ATI PATA support


除了最后那几个amd ati相关的选项,那几个都是必选的,你编译一个看看

[*] Asynchronous SCSI scanning (这个非常重要,貌似你的问题和这个有关,必选!)
这个是扫描SCSI设备的,必选

还有就是合适的文件系统,比如你的是ext4,那么内核中选上,肯定没问题的。
<*> The Extended 4 (ext4) filesystem
[*] Use ext4 for ext2/ext3 file systems
[*] Ext4 extended attributes

猜你喜欢

转载自pnxio.iteye.com/blog/2197289