如何在几种常见情况下安装 Grub2

如何在几种常见情况下安装 Grub2

我觉得社区早就需要一份关于如何在一些极其常见的场景下安装 Grub2 的简洁指南。当答案针对每个场景都有一个部分并且除了指定的内容之外不做任何其他假设时,我会接受该答案为已解决。请以 wiki 风格添加现有答案,并保持原始假设。

规则:
1. 在回答的任何时候,您都无法调用 Ubiquity(Ubuntu 安装程序)。2
. 我强烈建议不要使用任何自动修复工具,因为它们没有什么教育意义

场景 1:无法启动 Linux 操作系统,没有启动分区,通过 Live CD 修复

设置:

  • /dev/sda1已格式化ext*
  • /dev/sda2已格式化linux_swap
  • /dev/sda1无法启动,因为 MBR 被扰乱并被/boot/grub/*删除
  • 相当于跑步rm -rf /boot/grubdd if=/dev/zero of=/dev/sda bs=440 count=1

解释:

  • 如何启动 Live CD/USB 并将 Grub2 恢复到 MBR/boot以及/dev/sda1

场景 2:无法启动 Linux 操作系统,启动分区,从 Live CD 修复

设置:

  • /dev/sda1已格式化fat
  • /dev/sda2已格式化ext*
  • /dev/sda3已格式化linux_swap
  • /dev/sda2由于 MBR 混乱且/dev/sda1已格式化,因此无法启动

解释:

  • 如何启动到 Live CD/USB 并将 Grub2 恢复到 MBR,/dev/sda1然后fstab更新/dev/sda2

场景 3:安装到 U 盘,启动各种操作系统,从 Linux 操作系统

设置:

  • /dev/sdb 是可移动媒体
  • /dev/sdb1已格式化fat
  • /dev/sdb2已格式化ext*
  • /dev/sdb3已格式化fat
  • 的 MBR/dev/sdb尚未初始化
  • 您正在执行安装在 Linux 上的操作系统/dev/sda

解释:

  • 如何在 上安装 Grub2 /dev/sdb1,标记/dev/sdb1为活动,并能够在启动时选择/dev/sdb2和。/dev/sdb3

场景 4:(奖励)从 Linux 操作系统安装到 U 盘,启动 ISO

设置:

  • /dev/sdb 是可移动媒体
  • /dev/sdb1已格式化fat
  • /dev/sdb1包含/iso/live.iso
  • /dev/sdb2已格式化ext*
  • /dev/sdb3已格式化fat
  • 的 MBR/dev/sdb尚未初始化
  • 您正在执行安装在 Linux 上的操作系统/dev/sda

解释:

  • 如何在 上安装 Grub2 /dev/sdb1,标记为活动,并在启动时/dev/sdb1能够在/dev/sdb2/dev/sdb3和之间进行选择。/iso/live.iso

答案1

Grub2 相关命令的一般背景

  • grub-install

    1. sudo grub-install /device
      /device的是 Grub 将把主 grub 可执行文件写入 MBR 或分区引导记录的物理驱动器。 形式的设备/dev/sd[a-z]将把 MBR 写入其中,而 形式的设备/dev/sd[a-z][0-9]将把 PBR 写入其中。主要区别在于硬件始终执行 MBR 中的内容,然后由那里的代码决定是否执行 PBR。有些设置可能会将 Grub2 以外的其他东西安装到 MBR(例如 grub legacy),并让其加载安装在其中一个分区的 PBR 中的 Grub2。但一般而言,建议使用 将 Grub2 安装到 MBR。 该/dev/sd[a-z]命令的所有形式都需要此选项。
    2. sudo grub-install {--no-floppy|--allow-floppy} /device
      这两个标志可以与命令行的任何其他变体一起使用grub-install。第一个选项--no-floppy用于告诉 grub 不要查找软盘,这减少了总体执行时间。Grub 的较新版本现在有--allow-floppy专门启用此功能的选项,因为现在默认不搜索软盘。
    3. sudo grub-install [--force] /device
      添加该--force选项只会允许将 Grub 安装到分区引导记录而不是主引导记录中。通常不允许这种行为。以下场景之一可能会详细说明为什么会这样做。
    4. sudo grub-install [--recheck] /device
      /boot/grub/device.map这将重新生成用于[填写]的 文件
    5. sudo grub-install [--target=] /device 如果您想指定在启动时执行的特定固件,请使用此选项。BIOS 和 UEFI 以及 x86 和 x64 都有不同的版本。如果您使用 BIOS 并在您计划启动的同一台机器上安装 Grub2,那么这完全是可选的,建议让 Grub2 自行检测这一点。
  • grub-mkconfig

    1. sudo grub-mkconfig -o /boot/grub/grub.cfg
      这是此命令的标准格式。这将导致每个脚本/etc/grub.d按顺序运行,并将所有脚本的输出附加到选项指定的文件中-o file。文件的位置取决于正在执行的安装或修复类型。请参阅条目grub/grub.cfg
  • grub-update

    1. sudo grub-update [*]
      这是唯一grub-update可以调用的形式。它只是 的包装器,grup-mkconfig -o /boot/grub/grub.cfg这意味着/boot必须安装 才能工作。所有参数都直接传递给grub-mkconfig

Grub2 相关文件的一般背景

  • /boot/grub/device.map(可选)
    [填写此内容]

  • /boot/grub/core.img(必填)
    这是 grub2 的主要可执行文件。[填写更多]

  • grub/grub.cfg(大多数情况下是必需的)
    此文件是读取 grub 的所有菜单项的文件。它由/etc/grub.d安装 grub 的操作系统的脚本列表生成(这可能是也可能不是 grub 最终要启动的操作系统)。请参阅 的条目grub-mkconfig。如果发生以下情况,此文件将被覆盖(Grub 有更新并且/boot已安装)或(grub-update正在运行)或(grub-mkconfig -o /boot/grub/grub.cfg正在运行)。此文件以相对路径列出,因为它的确切位置取决于您是安装还是修复。如果是修复,则需要将包含的分区/boot安装在某个地方,例如/mnt/boot。在这种情况下,路径将为/mnt/boot/grub/grub.cfg。如果安装在已启动的 linux 系统上,路径将为/boot/grub/grub.cfg。如果缺少此文件,仍然可以通过 grub 命令 shell 进行启动。这超出了本文档的范围(因此大多必需的)。

场景 1:没有启动分区

  1. 启动 Live CD、USB 或其他 Linux 环境

场景 2:启动分区

  1. 启动 Live CD、USB 或其他 Linux 环境

场景 3:U盘

  1. 将 USB 驱动器连接到现有 Linux 环境
  2. 创建挂载点/dev/sdb1并挂载它
  3. 安装 grub 到/dev/sdb
  4. ???

命令:

# Step 2
sudo mkdir /mnt/usb-boot-part
sudo mount /dev/sdb1 /mnt/usb-boot-part
# Step 3
sudo grub-install --boot-directory=/mnt/usb-boot-part /dev/sdb

场景 4:环回设备

  1. 将场景 3 中的 USB 驱动器连接到现有 Linux 环境

真正信息丰富的网站

  1. [主题] :关联

相关内容