所以我用最新的内核升级了 Ubuntu。但是升级后,我重启了 Ubuntu,结果只剩下 GRUB。如果我只有 GRUB,我该如何再次加载 Ubuntu?
我使用 wubi 安装了 Ubuntu。
非常感谢你的帮助
答案1
使用 Grub
如果您看到grub
提示符,并且系统和内核仍安装在分区上,则可以“手动”启动系统 - 即无需使用有效的 grub.cfg。这也适用于从实时媒体运行的 grub。为此,grub 包含一个基本的命令行,您可以使用它来查找分区并启动系统。
find /vmlinuz
这应该会给你一个像 (hd0,0) 这样的分区。你也可以使用这个ls
命令来查看分区,看看哪些内核可用。该search
命令的工作原理类似。你也可以使用Tab 补全。
set root=(hd0,1)
当然,用向find
您显示的任何内容替换分区标识符。
linux /vmlinuz root=/dev/sda1
initrd /initrd.img
选择内核映像和 initrd 映像,这两个映像总是需要一起使用。幸运的是,Ubuntu 在根目录中创建了一对符号链接,它们指向工作映像和 initrd。请注意,您需要用/dev/sda1
Linux 内核使用的方案中的分区表示替换 。大致来说,(hd0,1)
对应于/dev/sda1
;(hd0,2) corresponds to
/dev/sda2 ;
(hd1,1) 对应于/dev/sdb1
。
boot
这将从所选分区启动所选内核。一旦您成功启动系统,您就可以使用它来恢复 grub,详情如下这里。
使用 Wubi 的 Grub
以上内容的前提是 Ubuntu 已定期安装,即安装在其自己的单独分区中。正如您所写,您使用了 Wubi,这意味着您将其安装到较大的文件grub.cfg
在 Windows (NTFS) 分区上使用一种称为“Lupin”的技术。我认为从原则上讲,这没有理由行不通,尽管过程更复杂。以下是基于 Wubi 安装的内容:
insmod part_msdos
insmod ntfs
set root='(hd0,msdos5)'
search --no-floppy --fs-uuid --set be300f9c300f5ab3
loopback loop0 /ubuntu/disks/root.disk
set root=(loop0)
linux /boot/vmlinuz root=/dev/sda1 loop=/ubuntu/disks/root.disk
initrd /boot/initrd.img
您需要根据具体情况进行调整。在此代码片段中,取自 10.10 安装,该search
命令使用文件系统 UUID 或标识符查找根分区,您可能不知道;您可以改用--file --set /ubuntu/disks/root.disk
(这里这是官方文档)。此 grub 配置会创建一个虚拟磁盘 - 一个“环回设备” - 名为,loop0
它代表 NTFS 分区上的“分区文件”的内容/ubuntu/disks/root.disk
。经过一些尝试和错误,您应该能够完成此操作。