我已经经历了很多相关的问题和答案,grub rescue
但我遇到了一个我无法理解的不同问题。
根据一些答案,我尝试按照以下步骤来解决此问题 -
首先,我使用
ls
命令来获取所有分区,在我的例子中是(hd0)
,(hd0,msdos5)
,(hdo,msdos1)
,(hd1)
&(hd1,msdos1)
在上述 5 个分区中,我得到了
Filesystem is ext2
留言给(hd0,msdos1)
驾驶。根据中提供的一些答案询问 ubuntu&堆栈交换我尝试设置
root
&prefix
使用(hd0,msdos1)
驱动器(我使用ls
命令找到的)设置时
prefix
我意识到/boot/grub
所选驱动器中不存在该目录(hd0,msdos1)
。结果当我尝试开火时
insmod normal
命令,grub救援给出一个错误说/boot/grub/i386-pc/normal.mod
未找到除此之外,我尝试在 ubuntu 14、16、17、18 甚至 Windows 操作系统上使用可启动 USB 驱动器,但我总是进入 grub 救援窗口。
这给我留下了以下问题 -
我是否将错误的驱动器设置为根驱动器(假设这是 5 个登记驱动器中唯一的 ext2 驱动器)?
有没有办法包括
/boot/grub
根目录中的文件夹,以便我可以运行`insmod 正常命令 ?
答案1
/boot
由于启动分区是在系统启动时安装在上面的,因此您将找不到那里/boot/grub
。
您要搜索的目录位于/grub
该boot
分区中。
至于安装完整的系统,您必须安装第一个系统/
,然后再安装/boot
在它的上面。
实际上,如果你在相同架构的Live DVD中,你经常会挂载:
/mnt -> root partition
/mnt/boot -> boot partition
/mnt/proc /proc
/mnt/sys /sys
/mnt/dev /dev
然后做一个chroot /mnt
至于加载内核模块,我会从实时启动系统加载它们。
答案2
ls (hdo,msdos1)
你说这给出的文件系统是ext2。
set boot=(hdo,msdos1)
set prefix=(hdo,msdos1)/boot/grub
insmod normal
normal
然后启动kali打开终端并输入:
sudo apt-get update
sudo apt-get install --reinstall grub-pc
sudo grub-install /dev/sda
sudo update-initramfs -u
sudo update-grub