我最近升级了我的 Ubuntu 14.04 (kubuntu),作为 64 位 Windows 7 Enterprise 托管的 VirtualBox 4.3.12 中的客户机运行。
一切都运行正常,直到昨天我尝试启动新的升级系统。
首先是新系统(内核 3.13.0-52-generic)无法启动:我得到了经典的
ALERT! /dev/disk/by-uuid/<long string> does not exist. Dropping to a shell!
错误,我陷入了(initramfs)
灰烬的提示中。我可以启动一个较旧的系统(内核 3.13.0-32-generic),但它提供了一种损坏的 KDE,其中窗口管理器似乎无法启动:应用程序将启动,并被放到(一个)桌面的左上角,无法移动它或调整其大小。并且任何系统设置菜单中都没有用于添加更多虚拟桌面的选项。
我在网上搜索了很多关于这个问题的信息 - 这是我以前从未见过的错误 - 但我不确定如何将修复应用于虚拟系统。我想我可以从头开始安装一个全新的系统......但这是最好的方法吗?请注意,blkid
目前返回的唯一一行
/dev/sr0: LABEL="VBOXADDITIONS_4.3.12_93733" TYPE="iso9660"
此外,没有/dev/disk
目录,也没有/boot
目录。前段时间我确实设法从blkid
包含启动映像的行中获取行/dev/sda1
,但我不知道它现在去哪儿了。
我尝试过:将我的 linux 虚拟映像(“ubuntu.vdi”)传输到 VirtualBox 中的 SCSI 控制器,将参数“rootdelay=60”添加到 GRUB 菜单中的启动行,但到目前为止没有任何效果。
任何帮助都将不胜感激,因为我的大部分工作都需要 Linux,而且它必须在 Windows 中运行,因为我的机构使用 Microsoft AD 处理所有事情,包括访问常用驱动器和打印机。而且我们的 IT 服务断然拒绝内置 Linux 支持。
答案1
我在物理机上也遇到过类似的问题。它似乎在更新期间重新启动了,并让 grub 启动一个内核映像 (3.13.0-45-generic),该映像无法找到我的硬盘,并且没有 /dev/disk/by-uuid/ 的条目。
我通过从较旧的内核启动,然后完成升级解决了这个问题。这给了我 3.13.0-53-generic,它似乎工作得更好。
1) 启动到 grub 提示符,按“e”查看当前(损坏的)启动过程的启动脚本。拍摄屏幕照片。2
) 按 ESC,然后按“c”进入 GRUB 命令提示符。3
) 检查根驱动器上的启动目录的内容,查看有哪些内核可用。(将 hd0,msdos3 替换为您的根目录):
grub> ls (hd0,msdos3)/boot/
grub/ .... vmlinuz-3.13.0-45-generic vmlinuz-3.2.0-70-generic initrd.img-3.13.0-45-generic initrd.img-3.2.0-70-generic
4) 从旧内核启动。(请参阅您的照片以获取确切的命令和 root UUID=... 。使用制表符补全以确保拼写准确,并对 vmlinuz 和 initrd.img 使用相同的版本号):
grub> set root='hd0,msdos3'
grub> linux /boot/vmlinuz-3.2.0-70-generic root=UUID=xxx[replace this]xx ro
grub> initrd /boot/initrd.img-3.2.0-70-generic
grub> boot
(可能需要尝试几次才能正确完成所有操作。如果 UUID 不起作用,请尝试 root=/dev/sda3 —— 或 Linux 对您的根磁盘+分区的调用。)