我的分区设置是:
[Win7] [Ubuntu] [extended [logical partition]]
(按此顺序)
MBR 中安装的引导加载程序是非标准的,它允许您在另一个分区上链式加载辅助引导加载程序。我使用此选项通过安装在 /dev/sda1 上的 GRUB 引导 Ubuntu。此设置对我来说一直有效,但在升级硬盘后,我似乎无法将 GRUB 恢复到工作状态。我通过将最近的备份映像恢复到驱动器来进行升级(这在过去对我有效)
但这次,我只得到:
Error: no such partition. Grub rescue>
我可以在救援提示符下使用此命令启动 Ubuntu 安装:
set root=(hd0,1)
set prefix=(hd0,1)/boot/grub
insmod normal
normal
但每次都输入这些内容是很愚蠢的。
这是我的磁盘布局fdisk -l
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Device Boot Start End Blocks Id System
/dev/sda1 122896725 146336084 11719680 83 Linux
/dev/sda2 178053120 976773119 399360000 5 Extended
/dev/sda3 * 929 122881184 61440128 7 HPFS/NTFS/exFAT
/dev/sda5 178055168 976773119 399358976 7 HPFS/NTFS/exFAT
Partition table entries are not in disk order
我已经尝试过grub-setup
、、grub-install
(boot-repair
但是没有用,因为它只提供安装到 MBR 的选项),但是都没有用。
我有一个安装了 GRUB 的 USB 拇指驱动器(当我使用它在笔记本电脑 /dev/sda1 上启动 Ubuntu 安装时它可以工作),并且它的 grub.cfg 文件与 /dev/sda1 上的文件相同。
如果我不得不猜测,列出的分区顺序与fdisk -l
它们在磁盘上的排列顺序不匹配这一事实是否会对此产生影响?
当我set
在 grub 提示符下输入时,我得到
prefix=(hd0,msdos2)/boot/grub
root=hd0,msdos2
答案1
使用命令解决问题:
sudo grub-install /dev/sda1 --force
--force
是这个谜题中缺失的关键一块。