早上好,我希望 grub 完全独立于 windows 和 linux mint 分区。我已经安装了 grub,它可以在 /boot 中运行,但它在 linux mint 的分区中。所以我点击了不同的链接,以下是我所做的:
#first I mount my ext2 partition which is on sdb partition 4
sudo mount -o rw /dev/sdb4 /mnt
#then I install grub in my partition
sudo grub-install --root-directory=/mnt /dev/sdb
sudo chmod 777 -R /mnt
#then I configure grub to have the OS list
sudo grub-mkconfig -o /mnt/boot/grub/grub.cfg
grub
# this part is supposed to make my new grub work.
root (hd1,3) # 3 is 4 - 1
setup (hd1) # 1 is 2 for sdb - 1
quit
sudo update-grub
reboot
为了确定使用的是哪个 grub,我修改了 /root 的 grub.cfg,因此我重新启动,再次使用旧的 grub,缺少哪个 cmd?我还放置了 gulp 标志或带有 gparted 的传统启动的启动标志,但分区仍然没有出现在 bios 中。
以下文字是我的动机,它不是问题描述的一部分,您可以跳过此部分。我的目标是拥有一个 ext2 或更好的 fat32 分区,因为使用某些软件可以从 Windows 访问 ext2 分区,这将允许我创建一个脚本,通过修改 grub 从 Windows 自动重启 Linux。我还想使用 virtualbox 从 Windows 访问 Linux 物理分区(它已经以另一种方式工作了),我已经成功了,但我必须使用 grub 的 iso,每次重新检测我的系统上有哪些操作系统。我认为,如果我理解如何使 grub 完全独立,它将解决我在 virtualbox 中使用它的问题。
谢谢
答案1
由于 GRUB 在启动过程的早期就启动了,因此通常会出现一些简单的错误,但很难确定是什么问题。以下是我的建议:
- 通常 BIOS 从第一个硬盘启动,第一个硬盘通常称为
sda
。你的是什么sda
?也许grub-install
ing tosdb
没有效果,因为 BIOS 实际上是从 启动的sda
? - 较旧的 BIOS 可能无法读取硬盘上某个点以外的内容。如果您的 GRUB 分区位于磁盘末尾,则 BIOS 可能无法看到该分区。
- 您的系统有 UEFI 吗?这启动方式完全不同。如果您有 UEFI,您要么需要使用它,要么将您的 BIOS 置于“传统启动”模式,在该模式下它将表现得像非 UEFI BIOS。
答案2
我不完全清楚问题是什么,但这是一个可行的解决方案,可以让包含 grub.cfg 的分区可从 Windows 和 Linux 访问。
- 使用 Windows 创建一个 fat32 分区并给该分区指定一个字母,我在使用 gparted 时遇到了问题(不需要将分区放在开头)。然后在 Linux 上重新启动,对我来说,新分区是 sdb8。
在启动这些命令之前,请先备份 /boot/grub/grub.cfg
sudo mkdir -p /media/grub2 /media/efi
sudo mount /dev/sdb8 /media/grub2
sudo mkdir -p /media/efi
sudo mount /dev/sdb1 /media/efi
sudo grub-install --no-floppy --boot-directory=/media/grub2/boot --efi-directory=/media/efi /dev/sdb
然后在 /media/grub2/boot/grub/grub.cfg 中恢复 grub.cfg 的备份,然后修改启动顺序(启动时按 F2)以将新条目放在首位。现在它应该可以正常工作了。我有一个包含 grub.cfg 的 fat32 分区,我可以在 Windows 和 Linux 上编辑它。
我认为这是使用启动目录而不是根目录,而且我将文件放在 /media 而不是 /mnt 中,我试过不使用 --no-floopy,它也能工作。我没有执行 grub-mkconfig,因为它会创建不可启动的条目,之后我必须使用带有实时 usb 的启动修复。
我也尝试过:
- efibootmgr :这是一个在 EFI 中添加条目的命令,但对我来说,每个修改都会在重启时消失,甚至启动顺序
也许另一种方法是使用 grub-mkstandalone
我安装了 rEFInd、clover 和 OSX siera,也许它以更好的方式改变了我的 EFI。