我有一块硬盘,上面有一些 Windows 分区(NTFS),1 个 Linux 分区,1 个 Linux 交换分区。最近,我试用了 Norton Partition Magic Pro 8.05(附带 Hiren Boot CD)。它建议我安装 ExtendedX。我选择 [修复],然后砰的一声,重启后,我的 grub 损坏了(真是神奇!!!)。
fdisk -l
当我使用 Ubuntu Live CD 启动时,我的计算机上的结果如下:
Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x4ffe4ffd
Device Boot Start End Blocks Id System
/dev/sda1 * 1 2615 21004956 7 HPFS/NTFS
/dev/sda2 2616 14593 96213285 f W95 Ext'd (LBA)
/dev/sda5 2616 4619 16097098+ 7 HPFS/NTFS
/dev/sda6 4620 11459 54942268+ 7 HPFS/NTFS
/dev/sda7 11460 11982 4200966 7 HPFS/NTFS
/dev/sda8 11983 14344 18972733+ 83 Linux
/dev/sda9 14345 14593 2000061 82 Linux swap / Solaris
我在这里找到并关注了一篇文章: http://gadgetmix.com/index/how-to-restrore-grub-bootloader-in-ubuntu-9-10-standard-and-netbook-remix/
但是在我的计算机上,当我尝试grub-install --root-directory=/mnt /dev/sda8
(这是我的 ubuntu 主分区)时,终端返回错误:
root@ubuntu:~# grub-install --root-directory=/mnt /dev/sda8
grub-probe: error: Cannot find a GRUB drive for /dev/sda8. Check your device.map.
Auto-detection of a filesystem module failed.
Please specify the module with the option `--modules' explicitly.
那是什么错误?我该如何修复它?谢谢。
答案1
尝试这个:
chroot /mnt bash
mount -a
update-grub
grub-install /dev/sda8 # <- are you sure about this? (see below)
unmount -a
exit
关于将 grub 安装到特定分区
如果你这样做,你的引导加载程序需要知道该分区有一些有趣的东西。微软的引导加载程序是通过编辑来配置的c:\boot.ini
。你可以先将引导加载程序复制到一个文件中:
dd if=/dev/sda8 of=grub.bin bs=512 count=1
然后保存grub.bin
,c:\grub.bin
然后添加类似这样的内容到您的c:\boot.ini
:
c:\grub.bin="Linux (GRUB)"
如果你对此一无所知,那就别费心了。请阅读下一节。
关于将 grub 安装到主引导记录
蛴螬是更好的引导加载程序。将其放入主引导记录中可让您使用它来启动 Windows,而不是相反。
继续之前,请在运行后检查 grub 配置文件,update-grub
以确保它“了解”Windows:
cat /boot/grub/grub.cfg # used for grub2 users
cat /boot/grub/menu.lst # used for grub1 users
无论您使用什么,请查找指示有关 Windows 和您的(hd0,0)
设备的行。当您满意时,只需像以前一样 chroot 然后:
grub-install /dev/sda # <- note this installs to the "master boot record"
重新启动后,Grub 将启动,您可以选择 Windows。如果您的boot.ini
文件中存在用于启动 Linux/Grub 的条目,您现在可以删除它们。
这种方法的唯一缺点是 Microsoft Windows可能删除 grub 作为系统更新的一部分,或一般无能。使用 ubuntu 磁盘并简单地重新运行update-grub
,grub-install
可能比处理更容易grub.bin
答案2
随着操作方法统计数据的变化
grub-install --root-directory=/mnt /dev/sda8
到
grub-install --root-directory=/mnt /dev/sda