删除 GRUB2 Stage 2(并手动引导)是否安全?

删除 GRUB2 Stage 2(并手动引导)是否安全?

我按照通常的方式将 GRUB2 安装在 /dev/sda 上(MBR 中的阶段 1 和扇区 0-63 中的阶段 1.5);我正在使用 BIOS/MBR。我的磁盘上有四个分区:

  1. Win10 100 MB -- 保留
  2. Win10 30GB
  3. Linux 20GB
  4. 数据分区(将其视为/home)——磁盘的其余部分

当然,GRUB2 的第 2 阶段安装/dev/sda3/boot/grub/.现在的问题是,我可以擦除/dev/sda3/dev/sda4仍然能够从 GRUB 命令行手动启动到 Win10 吗?使用insmod part_msdosinsmod ntfs,最多chainloader +1.

根据维基百科,没关系,但互联网上的一些其他来源表明您在删除第 2 阶段后可能会陷入困境(不过,这些来源可能指的是 GRUB 遗留版本)。

为什么我需要这样做?我想延长/dev/sda2。据我所知,最可靠的方法是使用标准的 Win 10 磁盘分区工具(我不太相信 Linux 会这样做)。在启动到您试图扩展的同一分区时这样做据说是有风险的,但我已经做到了,而且效果很好(还有一些第三方软件可以通过在引导之间扩展来更平滑地处理它)。

所以,我想删除/dev/sda3/, /dev/sda4/, 扩展/dev/sda2/,然后启动到 Live USB,重新分区未分配的空间,安装 Linux,安装 GRUB 并完成。

我只担心,如果出现问题(通常会发生)怎么办,我是否能够手动启动?

还有另一种方法:将 GRUB2 Stage 2 安装到 USB 上(在我的 BIOS 引导顺序中,USB 位于 HDD 之前)并从 USB 引导。但这很笨拙(我以前从未这样做过),所以如果可能的话我宁愿避免它。

(当然,我确实备份了。)

答案1

事实证明它不是照原样,但是这是经过初步的额外努力

我做了什么

  1. 从 Linux LiveUSB 启动,挂载/dev/sda3(带 grub 的 Linux 分区),mv /boot/grub /boot/grib(或任何其他操作,只是为了让阶段 1.5 不再能找到阶段 2)
  2. 从 HDD 重新启动,grub 不出所料地无法加载第 2 阶段并退回到 grub 救援模式
  3. 但是,救援模式仅提供非常少的支持,因此,例如,您可以运行insmod part_msdos,但insmod ntfs、 或chainloader +1等等都不起作用。ext4不过(当然)它支持。
  4. 我能够手动加载所有需要的模块(使用完整路径,如insmod (hd1,msdos3)/boot/grib/i386-pc/ntfs.mod,或者简单地先设置前缀:set prefix=(hd1,msdos3)/boot/grib然后使用相对路径insmod ntfs:)
  5. 您可以通过加载普通模块然后输入normal将 grub 从救援模式转移到类似 bash 的 grub 命令行来让您的生活变得更轻松。从那里,您可以再次加载所有需要的模块(例如,还必须加载 chainloader 模块)
  6. 最后,通过复制与中相同的命令序列来加载 Win10(或其他任何东西)grub.cfg

解决方案

i386-pc因此,考虑到这一切,我认为作为临时解决方案,只需将整个目录复制到单独的 USB 并根据需要手动加载模块就可以了。只需确保单独的 USB 格式化为 MBR 并有一个ext4分区。

更新:确实有效。只需将 U 盘格式化为 MBR、创建ext4分区并从之前的安装中进行复制(正确配置)/boot/grub/即可。当 grub 回退到 grub rescue 时,只需输入set prefix=(hdX,msdosY)/boot/grub(其中X是 USB 驱动器的编号,Y是相应的分区),然后insmod normalnormal。就是这样,grub 第 2 阶段加载并工作得很好。

相关内容