需要在虚拟机中访问 GRUB 菜单吗？以下是做法。大多数现代虚拟机都配置为跳过 GRUB 引导加载程序 以获得无缝体验。但是，你有时可能需要访问 GRUB 菜单。例如，如果你想切换回旧内核或进入恢复模式以 重置密码。? TLDR：重启虚拟机并在再次启动时按住 Shift 键。这将为你提供 GRUB 菜单。在这篇简短的文章中，我将向你展示两种访问虚拟机中运行的 Linux 中的 GRUB 菜单的方法：临时方案（当你需要访问 GRUB 一两次时）永久方案（每次启动时都会显示 GRUB）由于大多数用户不会每天与 GRUB 交互，因此我将从一个临时解决方案开始，你可以无需任何调整即可访问 GRUB。? 我在此处的教程中使用了 Ubuntu，但这些步骤也适用于其他 Linux 发行版。在虚拟机中访问 GRUB 引导加载程序（快速方式）如果你偶尔想访问 GRUB，这应该是最好的方法，因为它不需要任何配置。只需重新启动系统并按住 shift 键即可。就是这样！你将拥有没有任何时间限制的 GRUB 菜单：很简单的方法。不是吗？但它仅适用于特定的启动。那么如果你想在每次启动时都进入 GRUB 该怎么办呢？ 请参考下面的方法。永久在虚拟机中启用 GRUB 菜单（如果你愿意）? 此方法需要在命令行中更改 GRUB 配置文件。请确保你能够轻松地在终端中进行编辑。如果你需要处理 GRUB 菜单来访问其他操作系统或经常更改 从旧内核启动，那么此方法非常适合你。要使 GRUB 在每次引导时都可访问，你必须在配置文件中进行更改。首先，使用以下命令打开 GRUB 配置文件：sudo nano /etc/default/grub 在这里，将 GRUB_TIMEOUT_STYLE=hidden 更改为 GRUB_TIMEOUT_STYLE=menu：接下来，在同一个配置文件中，指定你希望 GRUB 显示的秒数。我建议 5 秒，因为它似乎在太长和太短之间取得了平衡（是的，非常相关）：GRUB_TIMEOUT=5 最后，你可以 保存更改并退出 nano 编辑器。要激活对配置文件所做的更改，请使用以下命令更新 GRUB：sudo update-grub 就是这样。重启系统，GRUB 应该会显示 5 秒钟。将 GRUB 主题化如何？大多数 Linux 发行版都会使用 GRUB 引导加载程序，因为它的配置非常简单，而且能完成工作。但在默认情况下，除了黑色背景和纯文本外，它没什么样式。因此，我们制作了一份指南，教你如何让它看起来更漂亮：定制 GRUB 以获得更好的体验希望本指南对你有所帮助，如果你有任何疑问，请在评论中告诉我。（题图：MJ/f75daf37-20c2-4bae-8a68-dc6a82ad0d61）via: https://itsfoss.com/access-grub-virtual-machine/作者：Sagar Sharma 选题：lkxed 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
在 Linux 中安装和应用现代的漂亮的 GRUB 主题。GRUB ，意即 大统一引导程序 GRand Unified Bootloader ，它是大多数 Linux 操作系统的默认引导加载程序。GRUB 引导加载程序是计算机启动时运行的第一个程序。正如你可能注意到的，GRUB 菜单的默认主题是朴素的。它只有一个黑色的背景和一些白色的字符。你们中的一些人可能不喜欢默认的 GRUB 主题。在这篇教程中，我将演示如何 更改 GRUB 主题 或应用华丽的主题，以使你的 GRUB 菜单在 Linux 中更加精美。数年前，我们发布了一篇指南，阐释了如何在 Ubuntu 中 配置 GRUB2 引导加载程序设置 。在这篇文章中，我们将向你展示如何更改 GRUB 背景。但是，只更改背景不是真正的自定义。在这篇指南中，我们不仅会更改壁纸，也会更改 GRUB 的字体、主题和整体的设计。免责声明： 安装 GRUB 主题可能会破坏你的系统。我强烈建议你在一个虚拟机中尝试和测试一个主题来查看它是否没有正常工作。然后再在实际的系统上安装主题。介绍在互联网上可以找到很多社区开发的 GRUB 主题。然而，它们却散落在不同的网站上。因此，找到一个好的 GRUB 主题可能会事倍功半。GRUB 主题的一个重要的贡献者是 Pling 网站。但是，Pling 中的大部分主题是非常简单的或过时的。幸运的是，我遇到一个名称为 Gorgeous GRUB 的项目，它是一个可以找到各种精美的 GRUB 主题的地方。相信我，作者付出了巨大的努力来收集这些主题，肯定会你喜欢的主题。Gorgeous GRUB：一个可以找到很棒的 GRUB 主题的地方Gorgeous GRUB 是一个由不同用户所创建的质量上乘的 GRUB 社区主题的收藏集合。这个项目的开发者从 Pling 、/r/unixporn 和其它很多的论坛中手工挑选漂亮的 GRUB 主题，并将它们放置到一起，以便用户可以很容易的浏览它们。如上所述，在 Pling 中的很多主题都是粗糙和过时的。Gorgeous GRUB 的作者翻遍了 Pling 和其它一些论坛的整个 GRUB 部分，并将所有令人满意的 GRUB 主题放置到一个地方。它们不是一些粗制滥造的主题。他们付出了大量的努力来将定制的背景、字体和颜色等融合在一起。请注意，Gorgeous GRUB 并不是一个安装你最喜欢的 GRUB 主题的应用程序。它只是一个良好工作的 GRUB 主题的展览列表。这个项目托管在 GitHub 中。如果你有一些很酷的 GRUB 主题，你也可以将其添加到 Gorgeous GRUB 主题列表之中。如何更改 GRUB 主题应用或更改 GRUB 主题并不难。转到 Gorgeous GRUB 的 GitHub 网页 ，单击任意你想要应用的主题的标题。接下来，你将会被带到该主题的实际主页。一些主题托管在 Pling 之中，一些主题托管在 GitHub 之中。我将会看看如何安装来自 Pling 或 GitHub 的 GRUB 主题。首先，让我们看看如何应用 “Descent” 主题，它托管在 Pling 中。1、从 Pling 安装 GRUB 主题如果主题托管在 Pling 网站，遵循这些操作说明。在主题主页，单击 文件 Files 标签页。你将会在图像预览的下方找到这个标签页。单击文件链接来下载它。转到下载位置并提取存档文件：$ tar xzf 173860-20150926\ descent.tar.gz 存档文件的内容将被提取到当前工作目录中一个名称为 descent 目录中。使用下面的命令复制 descent 目录到 /boot/grub/themes/ 目录：$ sudo cp -r descent/ /boot/grub/themes/ 如果 themes 目录不存在，只需要创建它：$ sudo mkdir /boot/grub/themes 并给 themes 目录分配适当的权限：$ sudo chown $USER /boot/grub/themes/ 接下来，如上所述复制 descent 目录中内容到 themes 目录。现在，你应该在 themes 目录中有一个以主题名称命名的文件夹：$ ls /boot/grub/themes/ descent 并且，这个主题文件夹（例如 descent）应该包含 theme.txt 和该主题附带的其它一些相关的文件（例如，背景图像、自定义文件）。$ ls /boot/grub/themes/descent/ background1280x800.png descent_score_14.pf2 menu_ne.png menu_s.png progresshigh_c.png scrollframe_c.png scroll_thumb_n.png background_original.jpg descent_score_18.pf2 menu_n.png menu_sw.png progresshigh_e.png scrollframe_n.png scroll_thumb_s.png copyright menu_c.png menu_nw.png menu_w.png progresshigh_w.png scrollframe_s.png select_os.png descent_logo_bold_18.pf2 menu_e.png menu_se.png progressbar_c.png readme scroll_thumb_c.png theme.txt 在复制下载的主题到 /boot/grub/themes/ 目录后，编辑 /etc/default/grub 文件：在进行任意更改前，请备份 grub 文件，以防万一：$ sudo cp /etc/default/grub /etc/default/grub.bak 现在，使用你喜欢的编辑器编辑文件：$ sudo nano /etc/default/grub 找到 GRUB_THEME= 代码行，并添加路径到你想要使用的主题的 theme.txt 。并且，也要取消 GRUB_GFXMODE= 代码行的注释，输入背景图像的分辨率。通常，背景图像的文件名称包含其分辨率（例如 background1280x800.png）。[...] GRUB_THEME=/boot/grub/themes/descent/theme.txt GRUB_GFXMODE=1280x800 [...] 再强调一次，如果这些代码行不存在，简单地添加它们。按下 CTRL+O 组合键 和 CTRL+X 组合键（LCTT 校注：这是 nano 中的快捷键，如果你使用 Vi/Vim，请使用相应的快捷键）来保持更改并关闭文件。现在，应用更改到 GRUB ，使用命令：$ sudo update-grub 示例输出：Sourcing file `/etc/default/grub' Sourcing file `/etc/default/grub.d/init-select.cfg' Generating grub configuration file ... Found theme: /boot/grub/themes/descent/theme.txt Found linux image: /boot/vmlinuz-5.15.0-41-generic Found initrd image: /boot/initrd.img-5.15.0-41-generic Found linux image: /boot/vmlinuz-5.15.0-39-generic Found initrd image: /boot/initrd.img-5.15.0-39-generic Found memtest86+ image: /boot/memtest86+.elf Found memtest86+ image: /boot/memtest86+.bin Warning: os-prober will not be executed to detect other bootable partitions. Systems on them will not be added to the GRUB boot configuration. Check GRUB_DISABLE_OS_PROBER documentation entry. done 如果你是在基于 RPM 的系统上（例如 Fedora），运行下面的命令来更新 GRUB ：$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg instead 重新启动你的系统。你就会看到更新后的 GRUB 主题。如果 GRUB 菜单没有出现。在打开硬件系统的电源时，立即按下 ESC 按键，直到启动菜单出现。这是我的 Ubuntu 22.04 LTS 桌面的默认 GRUB 菜单。这是更新后的带有复古主题的 GRUB 菜单。很酷，是吧？移除 GRUB 主题为移除一个主题，简单地删除主题文件夹：$ sudo rm -fr /boot/grub/themes/descent/ 接下来，编辑 /etc/default/grub 文件：$ sudo nano /etc/default/grub 移除下面的代码行：[...] GRUB_THEME=/boot/grub/themes/descent/theme.txt GRUB_GFXMODE=1280x800 [...] 保存文件并关闭它。最后，应用更改到 GRUB ，并重新启动你的系统：$ sudo update-grub $ sudo reboot 2、从 GitHub 安装 GRUB 主题如果一个 GRUB 主题托管在 GitHub 中，它很可能有安装程序脚本和卸载程序脚本。让我们以 Modern GRUB Themes 为例。它托管在 GitHub 中。使用 Git 复刻项目的 GitHub 存储库：$ git clone https://github.com/vinceliuice/grub2-themes.git 转到项目的文件夹：$ cd grub2-themes/ 运行安装程序脚本：$ sudo ./install.sh 选择你喜欢的 GRUB 主题背景（例如 tela）。选择图标样式：选择你的显示分辨率。现在选择将会安装和应用的 GRUB 主题。Checking for the existence of themes directory... Installing tela color 1080p theme... Setting tela as default... Updating grub config... Sourcing file `/etc/default/grub' Sourcing file `/etc/default/grub.d/init-select.cfg' Generating grub configuration file ... Found theme: /usr/share/grub/themes/tela/theme.txt Found linux image: /boot/vmlinuz-5.15.0-41-generic Found initrd image: /boot/initrd.img-5.15.0-41-generic Found linux image: /boot/vmlinuz-5.15.0-39-generic Found initrd image: /boot/initrd.img-5.15.0-39-generic Found memtest86+ image: /boot/memtest86+.elf Found memtest86+ image: /boot/memtest86+.bin Warning: os-prober will not be executed to detect other bootable partitions. Systems on them will not be added to the GRUB boot configuration. Check GRUB_DISABLE_OS_PROBER documentation entry. done * All done! * At the next restart of your computer you will see your new Grub theme: 'tela' 重新启动你的系统来查看更改。这是一个漂亮的 GRUB 主题，前所未见。你也可以明确地给定主题的名称和屏幕分辨率，像下面一样。$ sudo ./install.sh -t whitesur -s 1080p 这将应用一个名称为 “Whitesur” 的主题，使用 1080p 屏幕分辨率。你可能会提及到其它的分辨率，例如 2k 、4k 、超宽（ultrawide）、超宽 2k（ultrawide2k） 。如果你不提及分辨率，将默认采用 1080p 。安装 Tela 主题到 /boot/grub/themes 文件夹：$ sudo ./install.sh -b -t whitesur 重新启动你的系统来查看更改。移除 GRUB 主题为移除已安装的一个主题，转到项目的复刻目录：$ cd grub2-themes/ 随后，运行：$ sudo ./install.sh -r -t tela 使用你已安装的主题的名称来替换 tela 。请注意，每个主题的安装说明可能有所不同。详细地参考每个项目的 GitHub 页面，并相应地安装主题。总结有些人喜欢使用艺术化的 Linux 发行版。他们以美化其 Linux 发行版而感到高兴和自豪。如果你是他们中的一员，你可以看看 Gorgeous GRUB 项目来美化你的 GRUB 菜单。转到 Gorgeous GRUB 主题网站，从列表中选择你最喜欢的主题，并按照每个项目的主页说明来安装和应用 GRUB 主题。资源Gorgeous GRUB 的 GitHub 存储库via: https://ostechnix.com/change-grub-theme-in-linux/作者：sk 选题：lkxed 译者：robsean 校对：校对者ID本文由 LCTT 原创编译，Linux中国 荣誉推出
极客们好，将 Ubuntu 22.04（Jammy Jellyfish）启动到 救援 Rescue 和 紧急 Emergency 模式可以重置忘记的用户密码、修复文件系统错误，以及在启动过程中禁用或启用 systemd 服务。在这篇文章中，我们将学习如何启动 Ubuntu 22.04 LTS 系统进入救援和应急模式。救援模式类似于单用户模式，所有的故障排除步骤都在这里进行。救援模式加载最小的环境并挂载根文件系统。而在紧急模式下，我们得到的是单用户 Shell，而不启动任何系统服务。因此，当我们无法启动系统进入救援模式时，就需要紧急模式。启动 Ubuntu 22.04 进入救援或单用户模式前往你想启动到救援或单用户模式的目标系统。在启动时按下 SHIFT + ESC 键，进入 GRUB 引导加载器页面。选择第一个选项 “Ubuntu”，并按 e 键进入编辑模式。在以 linux 开头的一行末尾，删除字符串 $vt_handoff 并添加字符串 systemd.unit=rescue.target。做完修改后，按 Ctrl + X 或 F10 在救援模式下启动。进入救援模式后，运行所有的故障排除命令，并运行 systemctl reboot 命令来重启系统。另一种启动系统进入救援模式的方法重新启动系统并按下 ESC + Shift 键，进入 GRUB 启动界面。选择第二个选项 “ Ubuntu 高级选项 Advanced Options for Ubuntu ”->选择“ 恢复模式 recovery mode ”选项并点击回车->选择 root（进入 root shell 提示符） root (Drop to root shell prompt) 。下面是一个例子：当你有了 root Shell，运行命令来恢复和修复系统问题，最后使用 systemctl reboot 来重启系统。引导 Ubuntu 22.04 进入紧急模式要启动系统进入紧急模式，首先进入 GRUB 页面。选择第一个选项 “Ubuntu” 并按 e 键进行编辑。寻找以 linux 开头的一行，移到该行的末尾，删除字符串 $vt_handoff 并添加字符串 systemd.unit=emergency.target。按 Ctrl + X 或 F10 将系统启动到紧急模式。同样，在紧急模式下，你可以在这个模式下执行所有的故障排除，完成后，就用 systemctl reboot 命令重启系统。这篇文章的内容就这些。文章内容丰富，不要犹豫，请在你的技术朋友中分享它。请在下面的评论区发表你的疑问和反馈。via: https://www.linuxtechi.com/boot-ubuntu-22-04-rescue-emergency-mode/作者：Pradeep Kumar 选题：lkxed 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
详解在 Ubuntu 中引导到救援模式或紧急模式
这篇教程将介绍如何在 Ubuntu 22.04、20.04 和 18.04 LTS 版本中引导到 救援 Rescue 模式或 紧急 Emergency 模式。你可能已经知道，在 RHEL 7 、RHEL 8 、Ubuntu 16.04 LTS 及其更新的版本的 Linux 发行版中 运行等级 Runlevels 已经被 系统目标 Systemd target 所替代。更多关于 运行等级 Runlevel 和 系统目标 Systemd targets 的信息，参考 这篇指南 。这篇指南是针对 Ubuntu 编写的，但是，下面所给的步骤应该也适用于大多数使用 systemd 作为默认服务管理器的 Linux 发行版。在进入主题前，让我们简单的理解：什么是 救援 rescue 模式 和 紧急 Emergency 模式，以及这两种模式的目的是什么。什么是救援模式？在 Linux 发行版中，救援模式等效于使用 SysV 作为默认的服务器管理器的 单用户 single user 模式。在救援模式中，将挂载所有的本地文件系统，将仅启动一些重要的服务。但是，不会启动一般的服务（例如，网络服务）。救援模式在不能正常引导系统的情况下是很有用的。此外，我们可以在救援模式下执行一些重要的救援操作，例如，重新设置 root 密码 。什么是紧急模式？与救援模式相比，在紧急模式中，不会启动任何的东西。不会启动服务、不会挂载挂载点、不会建立套接字、什么都不会启动。你将所拥有的只是一个 原始的 shell 。紧急模式适用于调试目的。首先，我们将看到如何在 Ubuntu 22.04 和 20.04 LTS 发行版中引导到救援模式或紧急模式。在 Ubuntu 22.04 和 20.04 LTS 中的过程是完全相同的！在 Ubuntu 22.04 / 20.04 LTS 中引导到救援模式我们可以使用两种方法来引导到救援模式。方法 1打开你的 Ubuntu 系统。在 BIOS 徽标出现后，按下 ESC 按键来显示 GRUB 菜单。在 GRUB 菜单中，选择第一项，并按下 e 按键来编辑它。按下 ↓ 按键，并找到以单词 linux 开头的一行代码，并在其结尾处添加下面的一行代码。为到达其结尾处，只需要按下 Ctrl + e 组合键，或使用你键盘上的 END 按键或 ←/→ 按键。systemd.unit=rescue.target 在添加上面的代码行后，按下 Ctrl + x 组合键或按下 F10 按键来引导到救援模式。数秒后，你将作为 root 用户来登录到救援模式（即单用户模式）。将会提示你按下回车键来进入维护。下图是 Ubuntu 22.04 / 20.04 LTS 系统的救援模式的样子：现在，在救援模式中做你想做的任何事。在救援模式中，在你执行任何操作前，你可能需要以 读/写模式来挂载根（/）文件系统。mount -n -o remount,rw / 在完成后，按下 Ctrl + d 组合键来引导到正常模式。或者，你可以输入下面的任意一个命令来引导到正常模式。systemctl default 或者，exit 如果你想重新启动系统，而不是引导到正常的模式，输入：systemctl reboot 方法 2在这种方法中，你不需要编辑 GRUB 启动菜单项目。打开系统电源，并从 GRUB 启动菜单中选择 Ubuntu 高级选项 Advanced options for Ubuntu 。接下来，你将看到一个带有内核版本的可用的 Ubuntu 版本的列表。在 Ubuntu 中的 GRUB 启动菜单中选择 恢复模式 Recovery mode 。数秒后，你将看到 Ubuntu 的 恢复 Recovery 菜单。从恢复菜单中，选择 进入 root 的 shell 提示符 Drop to root shell prompt 选项 ，并按下回车键。现在，你将进入维护。通过输入下面的命令来 以读/写模式的方式 来挂载根（/）文件系统：mount -n -o remount,rw / 在救援模式中做你想做的任何事。在完成后，输入 exit 来返回到恢复菜单。exit 最后，选择 救援正常启动 Resume normal boot 选项，并按下回车键。再次按下回车键来退出恢复模式，并继续引导到正常模式。如果你不想引导到正常模式，从救援模式中输入 reboot 并按下回车键来重新启动你的系统。在 Ubuntu 22.04 / 20.04 LTS 中引导到紧急模式当 GRUB 菜单出现时，按下 e 按键来编辑它。找到以单词 linux 开头的一行代码，并在其结尾处添加下面的一行代码：systemd.unit=emergency.target 在添加上面的代码行后，按下 Ctrl + x 组合键，或按下 F10 按键来引导到紧急模式。数秒后，你将作为 root 用户来进入维护。将会提示你按下回车键来进入紧急模式。下图是 Ubuntu 22.04 / 20.04 LTS 系统的紧急模式的样子：现在，在紧急模式中做你想做的任何事。在紧急模式中，在你执行任何操作前，你可能需要以读/写模式来挂载根（/）文件系统。mount -n -o remount,rw / 在完成后，按下 Ctrl + d 组合键来引导到正常模式。或者，你可以输入下面的任意一个命令来引导到正常模式。systemctl default 或者，exit 如果你想重新启动系统，而不是引导到正常模式，输入：systemctl reboot 在 Ubuntu 18.04 LTS 中引导到救援模式启动你的 Ubuntu 系统。当 GRUB 菜单出现时，选择第一项并按下按键 e 来编辑。（为到达其行尾处，只需要按下 Ctrl + e 组合键，或使用你键盘上的 END 按键或 ←/→ 按键）：如果你没有看到 GRUB 菜单，只需要在 BIOS 徽标出现后，按下 ESC 按键来显示 GRUB 菜单。找到以单词 linux 开头的一行代码，并在其结尾处添加下面的一行代码（为到达其行尾处，只需要按下 Ctrl + e 组合键，或使用你键盘上的 END按键或←/→` 按键）：systemd.unit=rescue.target 在添加上面的代码行后，只需要按下 Ctrl + x 组合键，或按下 F10 按键来引导到救援模式。数秒后，你将作为 root 用户进入维护（即单用户模式）。下图是 Ubuntu 18.04 LTS 服务器系统的救援模式的样子：接下来，输入下面的命令来挂载根（/）文件系统为读/写模式。mount -n -o remount,rw / 在 Ubuntu 18.04 LTS 中引导到紧急模式引导你的 Ubuntu 到紧急模式基本与上述方法相同。你所需要做的全部工作是，在编辑 GRUB 菜单时，将 systemd.unit=rescue.target 替换为 systemd.unit=emergency.target 。在你添加 systemd.unit=emergency.target 后，按下 Ctrl + x 组合键，或按下 F10 按键来引导到紧急模式。最后，你可以使用下面的命令来以读/写模式的方式来挂载根（/）文件系统：mount -n -o remount,rw / 在救援模式和紧急模式之间切换如果你正在救援模式中，你不必像我上述提到的那样来编辑 GRUB 的菜单启动项。相反，你只想要输入下面的命令来立刻切换到紧急模式：systemctl emergency 同样，为从紧急模式切换到救援模式，输入：systemctl rescue 总结现在，你知道了什么是救援模式和紧急模式，以及如何在 Ubuntu 22.04 、20.04 和 18.04 LTS 系统中启动到这些模式。正如我已经提到的，在这里提供的这些步骤应该也适用于大多数当前使用 systemd 作为默认服务管理器的 Linux 发行版。via: https://ostechnix.com/how-to-boot-into-rescue-mode-or-emergency-mode-in-ubuntu-18-04/作者：sk 选题：lkxed 译者：robsean 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
如果你曾经使用过 Linux 桌面，你一定见过这个屏幕。这就是所谓的 GRUB 屏幕。是的，它的字母全部都是大写的。在 “ Linux 黑话解释 Linux Jargon Buster ”系列的这一个章节中，我将告诉你 GRUB 是什么，以及它有什么用处。此外，我还会简要地介绍一下配置和定制的部分。GRUB 是什么？GRUB 是一个用于加载和管理系统启动的完整程序。它是 Linux 发行版中最常见的 引导程序 bootloader 。引导程序是计算机启动时运行的第一个软件。它加载 操作系统的内核，然后再由内核初始化操作系统的其他部分（包括 Shell、显示管理器、桌面环境 等等）。引导程序和引导管理器我不想现在就把你搞糊涂，但是我认为这个话题是不可避免的。 引导程序 boot loader 和 引导管理器 boot manager 之间有着一条模糊的界限。你已经知道了引导程序是什么。它会首先启动，然后将内核加载到内存中并执行它。引导管理器则允许你在不同的操作系统之间进行选择（如果你的电脑上不止一个操作系统的话）。引导管理器并不会直接加载系统。随着 Linux 内核 3.3 版本的推出，Linux 内核包括了一个内置的 EFI 引导程序。事实上，任何一个支持 EFI 的系统都包括一个 EFI 引导程序。在支持 EFI 的系统中，固件会读取 EFI 系统分区 EFI System Partition （ESP）中的 EFI 文件，从而获得启动信息。这里插入一张图片，图中显示了带有 ESP 分区的分区表：GRUB 既是一个引导程序，也是一个引导管理器。一会儿我再来谈 GRUB。让我们先看看其他类似 GRUB 的程序。小知识：GRUB 是 GRand Unified Bootloader（大一统引导程序） 的首字母缩写。GRUB 屏幕上的那些行是什么意思？你会在 GRUB 屏幕上看到几行字。这些行对于不同的设置、不同的发行版会有所不同。通常情况下，第一行是你的 Linux 发行版。如果你看到类似高级选项的东西，你可以进入其中，找到一些以 “linux-generic-x-y-z” 等开头的行。当你的 Linux 发行版更新内核版本时，它至少会保留一个旧版本。你可以选择启动到旧的 Linux 内核，以防你的系统遇到新更新的 Linux 内核的任何问题。在基于 Ubuntu 的发行版中，你也可以看到一个恢复选项。在高级选项下，通常有一个旧的内核版本和恢复选项在最后，你可能会看到一个条目，如系统设置或 UEFI 设置，以访问系统的 BIOS 设置。还有哪些类似 GRUB 的引导管理器？GRUB 是 Linux 中最流行的引导管理器。但它并不是唯一的一个。有一个高度可定制的引导管理器，名字叫做 rEFInd 引导管理器，它同样受到了一些 Linux 用户的喜爱。还有一个基于文本的引导管理器，名字叫做 systemd-boot。你可以猜到这是专为基于 systemd 的 Linux 发行版准备的。有一些发行版正在使用 systemd-boot，比如 Pop OS。访问或编辑 GRUB通常你看到的 GRUB 屏幕是它的菜单界面。如果你安装了一个以上的操作系统，它会允许你在其中选择一个来启动。如果你的 Linux 发行版安装了不止一个内核，你也可以选择加载不同的内核。根据不同的 Linux 发行版的配置，你的 GRUB 菜单上可能会有一些其他选项。你可以在 GRUB 菜单界面按 e 键来编辑菜单项。这样你就可以在内核加载前修改它的参数。例如，在某些情况下，禁用内核提供的图形驱动可以帮助你解决 Linux 系统在启动时卡住的问题。你也可以在 GRUB 菜单界面上按 c 键来进入 GRUB 的命令行菜单。GRUB 配置文件你在菜单界面里对 GRUB 所做的任何改变都是暂时的。如果你想对 GRUB 做一些永久性的改变，比如改变默认的超时时间，你可以在 Linux 系统启动后修改 GRUB 配置文件。默认的 GRUB 配置文件是 /etc/default/grub。还有一个 /etc/default/grub.d 目录，里面也存放一些配置。你可以直接编辑 /etc/default/grub 文件，但是我还是建议通过在这个目录中添加配置文件（.cfg 文件）进行额外的修改。你必须 更新 GRUB 才能使这些修改生效。使用 GRUB 定制器来定制 GRUB如果你不太习惯 在终端里使用文本编辑器编辑文件，你可以 使用一个叫做 GRUB 定制器的图形工具。它允许你改变启动顺序、默认超时时间等等。你还可以用它来把 GRUB 的背景设置成一张自定义的墙纸。GRUB 定制器可以在 Ubuntu 20.04 中从 Universe 仓库安装，在 Ubuntu 18.04 中 通过 PPA 安装。它可以 通过 AUR 在基于 Arch Linux 的发行版中使用。总结至此，本文几乎涉及到了所有与 GRUB 相关的简单内容。至于 EFI、引导加载和 GRUB 本身，它们都是详细而复杂的话题，因此不在本文的讨论范围之内。这篇文章旨在给你一个关于 GRUB 引导程序的总体概述。或许我以后会写一篇关于 GRUB 的详细指南，解释它底层的一些细节。目前，如果你想了解更多关于 GRUB 的信息，你可以在你的 Linux 终端里使用 info grub 命令访问到 GRUB 文档。我希望你现在对什么是 GRUB 有了一点点的了解。这里有一个 GIF 动图供你一乐。或许我没有回答你关于 GRUB 的所有疑问，但请随时在评论区告诉我。我可能会根据你的问题或建议来更新这篇文章。via: https://itsfoss.com/what-is-grub/作者：Abhishek Prakash 选题：lujun9972 译者：lkxed 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
在这篇文章中，你将学习在 Ubuntu 或任何其它 Linux 发行版上更新 grub 。你也将学习一个或两个关于更新这个 grub 过程如何工作的事情。如何更新 grubUbuntu 和很多其它的 Linux 发行版提供一个易使用的称为 update-grub 命令行实用程序。为更新 grub ，你所要的全部工作就是使用 sudo 在终端中运行这个命令。sudo update-grub你应该看到一个像这样的输出：[email protected]:~$ sudo update-grub [sudo] password for abhishek: Sourcing file `/etc/default/grub' Generating grub configuration file ... Found linux image: /boot/vmlinuz-5.0.0-37-generic Found initrd image: /boot/initrd.img-5.0.0-37-generic Found linux image: /boot/vmlinuz-5.0.0-36-generic Found initrd image: /boot/initrd.img-5.0.0-36-generic Found linux image: /boot/vmlinuz-5.0.0-31-generic Found initrd image: /boot/initrd.img-5.0.0-31-generic Found Ubuntu 19.10 (19.10) on /dev/sda4 Found MX 19 patito feo (19) on /dev/sdb1 Adding boot menu entry for EFI firmware configuration done你可能看到一个类似的称为 update-grub2 的命令。不需要在 update-grub 和 update-grub2 之间感到害怕或不知所措。这两个命令执行相同的动作。大约在 10 年前，当 grub2 刚刚被引进时，update-grub2 命令也被引进。现在，update-grub2 只是一个链接到 update-grub 的符号，它们都更新 grub2 配置（因为 grub2 是默认的）。不能找到 update-grub 命令？这里是在这种情况下该做什么它可能是，你的 Linux 发行版可能没有可用的 update-grub 命令。在这种情况下你该做什么？你如何在这样一个 Linux 发行版上更新 grub ？在这里不需要惊慌。update-grub 命令只是一个入口，用于运行 grub-mkconfig -o /boot/grub/grub.cfg 来生成 grub2 配置文件。这意味着你可以在任意 Linux 发行版上使用下面的命令更新 grub ：sudo grub-mkconfig -o /boot/grub/grub.cfg当然，记住 update-grub 命令比上面的命令容易很多，这是为什么它在一开始被创建的原因。update-grub 是如何工作的？当你安装一个 Linux 发行版时，它（通常）要求你安装 grub 启动引导程序。grub 的一部分安装在 MBR/ESP 分区上。grub 的剩余部分保留在 Linux 发行版的 /boot/grub 目录中。依据它的 man 页面，update-grub 通过查找 /boot 目录来工作。所有以 vmlinuz- 开头的文件将被作为内核来对待，并且它们将得到一个 grub 菜单项。它也将为与所找到内核版本相同的 ramdisk 镜像添加 initrd 行。它也使用 os-prober 为其它操作系统查找所有磁盘分区。如果找到其它操作系统，它添加它们到 grub 菜单。为什么你需要更新 grub ？在有很多场景下你需要更新 grub。假设你修改 grub 配置文件（/etc/default/grub）以 更改默认启动顺序 或减少默认启动时间。除非你更新 grub ，否则你的修改将不会生效。另一种情况是，你在同一个电脑系统上安装多个 Linux 发行版。例如，在我的 Intel NUC 上，我有两个磁盘。第一个磁盘有 Ubuntu 19.10 ，并且我在其上面安装了 Ubuntu 18.04 。第二个操作系统（Ubuntu 18.04）安装了其自己的 grub ，现在 grub 启动屏幕由 Ubuntu 18.04 grub 控制。在第二个磁盘上，我安装了 MX Linux ，但是这次我没有安装 grub。我希望现有的 grub（由 Ubuntu 18.04 控制）来处理所有的操作系统项目。现在，在这种情况中，在 Ubuntu 18.04 上的 grub 需要更新，以便它能够看到 MX Linux 。如上图所示，当我更新 grub 时，它在 18.04 上找到很多安装的 Linux 内核, 以及在不同的分区上 Ubntu 19.10 和 MX Linux 。如果你想让 MX Linux 控制 grub ，我可以使用 grub-install 命令来在 MX Linux 上安装 grub，然后在 MX Linux 上的 grub 将开始控制 grub 启动屏幕。你已经明白这点，对吧？使用一个像 Grub Customizer 的 GUI 工具是在 grub 中进行更改的一种简单的方法。最后…最初，我打算保持它为一篇短文作为一种快速提示。但是后来我想解释一些与之相关的东西，以便（相对）新的 Linux 用户能够学到更多，而不仅仅是一个简单命令。你喜欢它吗？你有一些问题或建议吗？请随意发表评论。via: https://itsfoss.com/update-grub/作者：Abhishek Prakash 选题：lujun9972 译者：robsean 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
前段时间，我写了一篇在安装 Windows 后在 Arch Linux 上如何重新安装 Grub的教程。几周前，我不得不在我的笔记本上从头开始重新安装 Arch Linux，同时我发现安装 Grub 并不像我想的那么简单。出于这个原因，由于在新安装 Arch Linux 时在 UEFI bios 中安装 Grub 并不容易，所以我要写这篇教程。定位 EFI 分区在 Arch Linux 上安装 Grub 的第一件重要事情是定位 EFI 分区。让我们运行以下命令以找到此分区：# fdisk -l我们需要检查标记为 EFI System 的分区，我这里是 /dev/sda2。之后，我们需要在例如 /boot/efi 上挂载这个分区：# mkdir /boot/efi # mount /dev/sdb2 /boot/efi另一件重要的事情是将此分区添加到 /etc/fstab 中。安装 Grub现在我们可以在我们的系统中安装 Grub：# grub-mkconfig -o /boot/grub/grub.cfg # grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB自动将 Windows 添加到 Grub 菜单中为了自动将 Windows 条目添加到 Grub 菜单，我们需要安装 os-prober：# pacman -Sy os-prober要添加它，让我们运行以下命令：# os-prober # grub-mkconfig -o /boot/grub/grub.cfg # grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB你可以在这里找到更多关于在 Arch Linux 上 Grub 的信息。via: http://fasterland.net/how-to-install-grub-on-arch-linux-uefi.html作者：Francesco Mondello 选题：lujun9972 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
​我们都碰到过启动相关的问题，并且大部分时候都是简单的 GRUB 上的问题。 有时候很多人会觉得、输入一段很长的命令或在论坛中搜索来找到解决方法太麻烦了。今天我要告诉你如何使用一个简单而轻巧的软件来解决大部分的启动相关的问题。这个工具就是著名的 Boot Repair Tool 。好了，话不多说，让我们开始吧。如何在 Linux 中安装和使用启动修复工具你需要一个你所安装的操作系统的现场版的 USB 棒或 DVD，这是安装这个应用并使用它的前提条件。 引导到操作系统17 并打开终端并输入以下命令sudo add-apt-repository -y ppa:yannubuntu/boot-repair sudo apt-get update sudo apt-get install -y boot-repair && boot-repair 在安装结束以后，你可以从应用菜单或或其它你在系统上启动应用的地方启动你的修复工具。你可以在菜单栏中看到 Boot Repair。​启动它，它就会开始进行一些扫描操作，我们只要等它自己结束就好了。 ​现在你会看到这个界面，这是基于之前扫描的建议修复。 在底部还可以有一个高级选项，你可以在高级选项里进行各方面的设置。 我建议没有经验的用户使用推荐维修，因为它很简单，在大多数情况下我们都可以这样做。选择推荐的更新后，它将开始修复。 等待进一步的处理。你现在会看到一个指令界面。 现在是轮到我们操作的时候了。打开终端，逐个复制并粘贴其中高亮的命令到终端中。命令完成后，你会看到一个上面提及的要求确认的界面。 使用箭头键或 Tab 键选择“Yes”，然后按回车键。 现在在 启动修复工具 界面中点击 “forward”。现在你会看到这个界面。 复制在那里提到的命令，并将其粘贴到终端中，然后按回车并让其执行此操作。 需要一段时间所以请耐心等待，它将下载GRUB、内核或任何修复您的引导所需的内容。现在你可能会看到一些选项用于配置安装 GRUB 的位置。 选择“yes”，然后按回车，你会看到上面的界面。使用空格键选择选项和按 TAB 以浏览选项。 选择并安装 GRUB 后，可以关闭终端。 现在在启动修复工具屏幕中选择 “forward” 选项。现在它会做一些扫描操作，并且会询问你一些需要确认的一些选项。 每个选项都选择是即可。它会显示一个成功的确认消息。 如果没有，并且显示失败的消息，则将生成链接。 转到该链接获取更多帮助。成功后，重启你的电脑。 当你重新启动时，你会看到 GRUB。 现在已成功维修您的电脑。 一切顺利。引导修复的高级技巧当我的电脑出现双引导启动画面时，我发现在修复时，它无法识别 安装在另一个分区上的 Windows 7。 这里有一个简单的提示来帮你解决这个问题。打开终端并安装 os-prober。 它很简单，可以在软件中心或通过终端找到。os-prober 可以帮助您识别安装在 PC 上的其他操作系统。os-prober 安装完成后，通过输入 os-prober 在终端运行它。 如果失败了那么试着用 root 账号运行它。 之后运行update-grub 命令。 这就是你可以用于从 GRUB 中启动 Windows 的所需要做的全部。总结​以上就是全部的内容。现在你已经成功地修复了你的 PC。via: http://www.linuxandubuntu.com/home/boot-repair-tool-repair-the-most-boot-related-problems作者：linuxandubuntu 译者：chenxinlong 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
学习 GRUB 引导加载程序是如何预备你的系统并启动操作系统内核的。自从上个月为我的文章《Linux 引导和启动过程简介》做研究开始，我对更深入了解 GRUB2 产生了兴趣。这篇文章提供了配置 GRUB2 的简要介绍。为了简便起见，我大多数情况下会使用 GRUB 指代 GRUB2。GRUBGRUB 来自 GRand Unified Bootloader 的缩写。它的功能是在启动时从 BIOS 接管掌控、加载自身、加载 Linux 内核到内存，然后再把执行权交给内核。一旦内核开始掌控，GRUB 就完成了它的任务，也就不再需要了。GRUB 支持多种 Linux 内核，并允许用户在启动时通过菜单在其中选择。我发现这是一种非常有用的工具，因为我有很多次遇到一个应用程序或者系统服务在特定内核版本下失败的问题。有好几次，引导到一个较旧的内核时就可以避免类似的问题。默认情况下，使用 yum 或 dnf 进行更新时会保存三个内核 - 最新的以及两个比较旧的。在被包管理器删除之前所保留的内核数目可以在 /etc/dnf/dnf.conf 或 /etc/yum.conf 文件中配置。我通常把 installonly_limit 的值修改为 9 以便保留 9 个内核。当我不得不恢复到低几个版本的内核时这非常有用。GRUB 菜单GRUB 菜单的功能是当默认的内核不是想要的时，允许用户从已经安装的内核中选择一个进行引导。通过上下箭头键允许你选中想要的内核，敲击回车键会使用选中的内核继续引导进程。GRUB 菜单也提供了超时机制，因此如果用户没有做任何选择，GRUB 就会在没有用户干预的情况下使用默认内核继续引导。敲击键盘上除了回车键之外的任何键会停止终端上显示的倒数计时器。立即敲击回车键会使用默认内核或者选中的内核继续引导进程。GRUB 菜单提供了一个 “ 救援 rescue ” 内核，用于故障排除或者由于某些原因导致的常规内核不能完成启动过程。不幸的是，这个救援内核不会引导到救援模式。文章后面会更详细介绍这方面的东西。grub.cfg 文件grub.cfg 文件是 GRUB 配置文件。它由 grub2-mkconfig 程序根据用户的配置使用一组主配置文件以及 grub 默认文件而生成。/boot/grub2/grub.cfg 文件在 Linux 安装时会初次生成，安装新内核时又会重新生成。grub.cfg 文件包括了类似 Bash 脚本的代码以及一个按照安装顺序排序的已安装内核列表。例如，如果你有 4 个已安装内核，最新的内核索引是 0，前一个内核索引是 1，最旧的内核索引是 3。如果你能访问 grub.cfg 文件，你应该去看看感受一下它看起来是什么样。grub.cfg 太大也就没有包含在这篇文章中。GRUB 配置文件grub.cfg 的主要配置文件都在 /etc/grub.d 目录。该目录中的每个文件都包含了最终会整合到 grub.cfg 文件中的 GRUB 代码。这些配置文件的命名模式以排序方式设计，这使得最终的 grub.cfg 文件可以按正确的顺序整合而成。每个文件都有注释表明该部分的开始和结束，这些注释也是最终的 grub.cfg 文件的一部分，从而可以看出每个部分是由哪个文件生成。分隔注释看起来像这样：### BEGIN /etc/grub.d/10_linux ### ### END /etc/grub.d/10_linux ### 不要修改这些文件，除非你是一个 GRUB 专家并明白更改会发生什么。无论如何，修改 grub.cfg 文件时你也总应该保留一个原始文件的备份。 40_custom 和 41_custom 这两个特别的文件用于生成用户对 GRUB 配置的修改。你仍然要注意对这些文件的更改的后果，并保存一份原始 grub.cfg 文件的备份。你也可以把你自己的文件添加到 /etc/grub.d 目录。这样做的一个可能的原因是为非 Linux 操作系统添加菜单行。要注意遵循命名规则，确保配置文件中额外的菜单选项刚好在 10_linux 条目之前或之后。GRUB 默认文件老版本 GRUB 的配置非常简单而明了，我只需要修改 /boot/grub/grub.conf 就可以了。对于新版本的 GRUB2，我虽然还可以通过更改 /boot/grub2/grub.cfg 来修改，但和老版本的 GRUB 相比，新版本相对更加复杂。另外，安装一个新内核时 grub.cfg 可能会被重写，因此任何修改都可能消失。当然，GNU.org 的 GRUB 手册确实有过直接创建和修改 /boot/grub2/grub.cfg 的讨论。一旦你明白了如何做，更改 GRUB2 配置就会变得非常简单。我为之前的文章研究 GRUB2 的时候才明白这个。秘方就在 /etc/default 目录里面，一个自然而然称为 grub 的文件，它可以通过简单的终端命令操作。/etc/default 目录包括了一些类似 Google Chrome、 useradd、 和 grub 程序的配置文件。/etc/default/grub 文件非常简单。这个 grub 默认文件已经列出了一些有效的键值对。你可以简单地更改现有键值或者添加其它文件中还没有的键。下面的列表 1 显示了一个没有更改过的 /etc/default/grub 文件。GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="rd.lvm.lv=fedora_fedora25vm/root rd.lvm.lv=fedora_fedora25vm/swap rd.lvm.lv=fedora_fedora25vm/usr rhgb quiet" GRUB_DISABLE_RECOVERY="true" 列表 1：Fedora 25 一个原始 grub 默认文件。GRUB 手册 5.1 章节包括了所有可以添加到该 grub 文件的键的信息。我只需要修改 grub 默认文件已经有的一些键值就够了。让我们看看这些键值以及一些在 grub 默认文件中没有出现的每个键的意义。GRUB_TIMEOUT 这个键的值决定了显示 GRUB 选择菜单的时间长度。GRUB 提供了同时保存多个安装内核并在启动时使用 GRUB 菜单在其中选择的功能。这个键的默认值是 5 秒，但我通常修改为 10 秒使得有更多时间查看选项并作出选择。GRUB_DISTRIBUTOR 这个键定义了一个从 /etc/system-release 文件中提取发行版本的 sed 表达式。这个信息用于生成出现在 GRUB 菜单中的每个内核发布版的文本名称，例如 “Fedora” 等。由于不同发行版之间 system-release 文件结构的差异，在你的系统中这个 sed 表达式可能有些不同。GRUB_DEFAULT 决定默认引导哪个内核。如果是 saved，这代表最新内核。这里的其它选项如果是数字则代表了 grub.cfg 中列表的索引。使用索引号 3，就会总是加载列表中的第四个内核，即使安装了一个新内核之后也是。因此使用索引数字的话，在安装一个新内核后会加载不同的内核。要确保引导特定内核版本的唯一方法是设置 GRUB_DEFAULT 的值为想要内核的名称，例如 4.8.13-300.fc25.x86_64。GRUB_SAVEDEFAULT 通常，grub 默认文件中不会指定这个选项。当选择不同内核进行引导时，正常操作下该内核只会启动一次。默认内核不会改变。当其设置为 true 并和 GRUB_DEFAULT=saved 一起使用时，这个选项会保存一个不同内核作为默认值。当选择不同内核进行引导时会发生这种情况。GRUB_DISABLE_SUBMENU 一些人可能会希望为 GRUB 菜单创建一个内核的层级菜单结构。这个键和 grub.cfg 中一些额外内核配置允许创建这样的层级结构。例如，主菜单中可能有 production 和 test 子菜单，每个子菜单中包括了一些合适的内核。设置它为 false 可以启用子菜单。GRUB_TERMINAL_OUTPUT 一些环境下可能需要或者必要将输出重定向到一个不同的显示控制台或者终端。默认情况下是把输出发送到默认终端，通常 console 等价于 Intel 系列个人电脑的标准输出。另一个有用的选择是在使用串行终端或者 Integrated Lights Out (ILO) 终端连接的数据中心或者实验室环境中指定 serial。GRUB_TERMINAL_INPUT 和 GRUB_TERMINAL_OUTPUT 类似，可能需要或者必要重定向输入为串行终端或者 ILO 设备、而不是标准键盘输入。GRUB_CMDLINE_LINUX 这个键包括了在启动时会传递给内核的命令行参数。注意这些参数会被添加到 grub.cfg 所有已安装内核的内核行。这意味着所有已安装的内核在启动时都会有相同的参数。我通常删除 rhgb 和 quiet 参数以便我可以看到引导和启动时内核和 systemd 输出的所有内核信息消息。GRUB_DISABLE_RECOVERY 当这个键的值被设置为 false，GRUB 菜单中就会为每个已安装的内核创建一个恢复条目。当设置为 true 时就不会创建任何恢复条目。但不管这个设置怎样，最后的内核条目总是一个 rescue 选项。不过在 rescue 选项中我遇到了一个问题，下面我会详细介绍。还有一些你可能觉得有用但我没有在这里介绍的键。它们的描述可以在 GRUB 手册 2 的 5.1 章节找到。生成 grub.cfg完成所需的配置之后，就需要生成 /boot/grub2/grub.cfg 文件。这通过下面的命令完成。grub2-mkconfig > /boot/grub2/grub.cfg 这个命令按照顺序使用位于 /etc/grub.d 的配置文件构建 grub.cfg 文件，然后使用 grub 默认文件的内容修改输出以便获得最终所需的配置。grub2-mkconfig 命令会尝试定位所有已安装的内核并在 grub.cfg 文件的 10_Linux 部分新建条目。它还创建一个 rescue 条目提供一个用于从 Linux 不能启动的严重问题中恢复的方法。强烈建议你不要手动编辑 grub.cfg 文件，因为任何对该文件的直接修改都会在下一次安装新内核或者手动运行 grub2-mkconfig 时被重写。问题我遇到一个如果没有意识到就可能导致严重后果的 GRUB2 问题。这个救援内核没有启动，反而启动了另外一个内核。我发现那是列表中索引为 1 的内核，也就是列表中的第二个内核。额外的测试发现不管使用原始的还是我生成的 grub.cfg 配置文件都会发生这个问题。我在虚拟机和真实硬件上都尝试过而且都发生了这个问题。我只测试了 Fedora 25，因此其它 Fedora 发行版本可能没有这个问题。注意，从救援内核生成的 “recovery” 内核条目不能引导到维护模式。我推荐将 grub 默认文件中 GRUB_DISABLE_RECOVERY 的值更改为 “false”，然后生成你自己的 grub.cfg。这会在 GRUB 菜单中为每个已安装的内核生成可用的恢复条目。这些恢复配置能像期望那样工作，从而从那些需要输入密码登录的内核条目中引导到运行级别 1，也就是进入（不需要密码的）单用户维护模式。你也可以按 Ctrl-D 继续正常的引导进入默认运行级别。总结GRUB 是引导 Linux 计算机到可用状态过程的一系列事件中，发生在 BIOS 之后的第一步。理解如何配置 GRUB 对于恢复或者处理多种类型的问题非常重要。这么多年来我多次不得不引导到恢复或者救援模式以便解决多种类型的问题。其中的一些问题确实是类似 /etc/fstab 或其它配置文件中不恰当条目导致的引导问题，也有一些是由于应用程序或者系统软件和最新的内核不兼容的问题。硬件兼容性问题也可能妨碍特定的内核启动。我希望这些信息能对你开启 GRUB 配置之旅有所帮助。（ 题图 ： Internet Archive Book Images. Opensource.com 修改。 CC BY-SA 4.0）作者简介：David Both - David Both 是一个居住在 Raleigh，北卡罗来纳州的 Linux 和开源倡导者。他在 IT 界已经有超过 40 年，并在他工作的 IBM 执教 OS/2 20 多年。在 IBM 的时候，他在 1981 年开设了第一个最初 IBM 个人电脑的培训课程。他在红帽教授过 RHCE 课程并在 MCI Worldcom、 Cisco、 和北卡罗来纳州工作过。他已经在 Linux 和开源软件方面工作将近 20 年。via: https://opensource.com/article/17/3/introduction-grub2-configuration-linux作者：David Both 译者：ictlyh 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
此页面是免费浏览的，没有烦人的外部广告；然而，我的确花了时间准备，网站托管也花了钱。如果您发现此页面帮到了您，请考虑进行小额捐款，以帮助保持网站的运行。谢谢！ 原著于 2013/10/19；最后修改于 2015/3/16引言几年来，一种新的固件技术悄然出现，而大多数普通用户对此并无所知。该技术被称为 可扩展固件接口 （ Extensible Firmware Interface ） （EFI）， 或更新一些的统一可扩展固件接口（Unified EFI，UEFI，本质上是 EFI 2.x），它已经开始替代古老的 基本输入/输出系统 （ Basic Input/Output System ） （BIOS）固件技术，有经验的计算机用户或多或少都有些熟悉 BIOS。本页面是给 Linux 用户使用 EFI 技术的一个快速介绍，其中包括有关开始将 Linux 安装到此类计算机上的建议。不幸的是，EFI 是一个庞杂的话题；EFI 软件本身是复杂的，许多实现有系统特定的怪异行为甚至是缺陷。因此，我无法在一个页面上描述在 EFI 计算机上安装和使用 Linux 的一切知识。我希望你能将本页面作为一个有用的起点，不管怎么说，每个部分以及末尾“参考文献”部分的链接可以指引你找到更多的文档。你的计算机是否使用 EFI 技术？EFI 是一种固件，意味着它是内置于计算机中处理低级任务的软件。最重要的是，固件控制着计算机的引导过程，反过来说这代表着基于 EFI 的计算机与基于 BIOS 的计算机的引导过程不同。（有关此规律的例外之处稍后再说。）这种差异可能使操作系统安装介质的设计超级复杂化，但是一旦安装好并运行之后，它对计算机的日常操作几乎没有影响。请注意，大多数制造商使用术语 “BIOS” 来表示他们的 EFI。我认为这种用法很混乱，所以我避免了；在我看来，EFI 和 BIOS 是两种不同类型的固件。注意：苹果公司的 Mac 使用的 EFI 在许多方面是不同寻常的。尽管本页面的大部分内容同样适用于 Mac，但有些细节上的出入，特别是在设置 EFI 引导加载程序的时候。这个任务最好在 OS X 上进行，使用 Mac 的 bless utility工具，我不在此做过多描述。自从 2006 年第一次推出以来，EFI 已被用于基于英特尔的 Mac 上。从 2012 年底开始，大多数安装 Windows 8 或更高版本系统的计算机就已经默认使用 UEFI 启动，实际上大多数 PC 从 2011 年中期就开始使用 UEFI，虽然默认情况下它们可能无法以 EFI 模式启动。2011 年前销出的 PC 也有一些支持 EFI，尽管它们大都默认使用 BIOS 模式启动。如果你不确定你的计算机是否支持 EFI，则应查看固件设置实用程序和参考用户手册关于 EFI、UEFI 以及 legacy booting 的部分。（可以通过搜索用户手册的 PDF 文件来快速了解。）如果你没有找到类似的参考，你的计算机可能使用老式的（“legacy”） BIOS 引导；但如果你找到了这些术语的参考，几乎可以肯定它使用了 EFI 技术。你还可以尝试只有 EFI 模式的引导加载器的安装介质。使用 rEFInd 制作的 USB 闪存驱动器或 CD-R 镜像是用来测试不错的选择。在继续之前，你应当了解大多数 x86 和 x86-64 架构的计算机上的 EFI 都包含一个叫做 兼容支持模块 Compatibility Support Module （CSM）的组件，这使得 EFI 能够使用旧的 BIOS 风格的引导机制来引导操作系统。这会非常方便，因为它向后兼容；但是这样也导致一些意外情况的发生，因为计算机不论以 EFI 模式引导还是以 BIOS （也称为 CSM 或 legacy）模式引导，在控制时没有标准的使用规范和用户界面。特别地，你的 Linux 安装介质非常容易意外的以 BIOS/CSM/legacy 模式启动，这会导致 Linux 以 BIOS/CSM/legacy 模式安装。如果 Linux 是唯一的操作系统，也可以正常工作，但是如果与在 EFI 模式下的 Windows 组成双启动的话，就会非常复杂。（反过来问题也可能发生。）以下部分将帮助你以正确模式引导安装程序。如果你在阅读这篇文章之前就已经以 BIOS 模式安装了 Linux，并且希望切换引导模式，请阅读后续章节，“哎呀：将传统模式下安装的引导转为 EFI 模式下的引导”。UEFI 的一个附加功能值得一提： 安全启动 Secure Boot 。此特性旨在最大限度的降低计算机受到 boot kit 病毒感染的风险，这是一种感染计算机引导加载程序的恶意软件。Boot kits 很难检测和删除，阻止它们的运行刻不容缓。微软公司要求所有带有支持 Windows 8 标志的台式机和笔记本电脑启用 安全启动。这一配置使 Linux 的安装变得复杂，尽管有些发行版可以较好的处理这个问题。不要将安全启动和 EFI 或 UEFI 混淆；支持 EFI 的计算机不一定支持 安全启动，而且支持 EFI 的 x86-64 的计算机也可以禁用 安全启动。微软同意用户在 Windows 8 认证的 x86 和 x86-64 计算机上禁用安全启动功能；然而对装有 Windows 8 的 ARM 计算机而言却相反，它们必须不允许用户禁用 安全启动。幸运的是，基于 ARM 的 Windows 8 计算机目前很少见。我建议避免使用它们。你的发行版是否支持 EFI 技术？大多数 Linux 发行版已经支持 EFI 好多年了。然而，不同的发行版对 EFI 的支持程度不同。大多数主流发行版（Fedora，OpenSUSE，Ubuntu 等）都能很好的支持 EFI，包括对安全启动的支持。另外一些“自行打造”的发行版，比如 Gentoo，对 EFI 的支持较弱，但它们的性质使其很容易添加 EFI 支持。事实上，可以向任意 Linux 发行版添加 EFI 支持：你需要安装 Linux（即使在 BIOS 模式下），然后在计算机上安装 EFI 引导加载程序。有关如何执行此操作的信息，请参阅“哎呀：将传统模式下安装的引导转为 EFI 模式下的引导”部分。你应当查看发行版的功能列表，来确定它是否支持 EFI。你还应当注意你的发行版对安全启动的支持情况，特别是如果你打算和 Windows 8 组成双启动。请注意，即使正式支持安全启动的发行版也可能要求禁用此功能，因为 Linux 对安全启动的支持通常很差劲，或者导致意外情况的发生。准备安装 Linux下面几个准备步骤有助于在 EFI 计算机上 Linux 的安装，使其更加顺利：1、 升级固件有些 EFI 是有问题的，不过硬件制造商偶尔会发布其固件的更新。因此我建议你将固件升级到最新可用的版本。如果你从论坛的帖子知道自己计算机的 EFI 有问题，你应当在安装 Linux 之前更新它，因为如果安装 Linux 之后更新固件，会有些问题需要额外的操作才能解决。另一方面，升级固件是有一定风险的，所以如果制造商提供了 EFI 支持，最好的办法就是按它们提供的方式进行升级。2、 了解如何使用固件通常你可以通过在引导过程之初按 Del 键或功能键进入固件设置实用程序。按下开机键后尽快查看相关的提示信息，或者尝试每个功能键。类似的，ESC 键或功能键通常可以进入固件的内置引导管理器，可以选择要进入的操作系统或外部设备。一些制造商把这些设置隐藏的很深。在某些情况下，如此页面所述，你可以在 Windows 8 内做到这些。3、调整以下固件设置快速启动 — 此功能可以通过在硬件初始化时使用快捷方式来加快引导过程。这很好用，但有时候会使 USB 设备不能初始化，导致计算机无法从 USB 闪存驱动器或类似的设备启动。因此禁用快速启动可能有一定的帮助，甚至是必须的；你可以让它保持激活，而只在 Linux 安装程序启动遇到问题时将其停用。请注意，此功能有时可能会以其它名字出现。在某些情况下，你必须启用 USB 支持，而不是禁用快速启动功能。安全启动 — Fedora，OpenSUSE，Ubuntu 以及其它的发行版官方就支持安全启动；但是如果在启动引导加载程序或内核时遇到问题，可能需要禁用此功能。不幸的是，没办法具体描述怎么禁用，因为不同计算机的设置方法也不同。请参阅我的安全启动页面获取更多关于此话题的信息。注意： 一些教程说安装 Linux 时需要启用 BIOS/CSM/legacy 支持。通常情况下，这样做是错的。启用这些支持可以解决启动安装程序涉及的问题，但也会带来新的问题。以这种方式安装的教程通常可以通过“引导修复”来解决这些问题，但最好从一开始就做对。本页面提供了帮助你以 EFI 模式启动 Linux 安装程序的提示，从而避免以后的问题。CSM/legacy 选项 — 如果你想以 EFI 模式安装，请关闭这些选项。一些教程推荐启用这些选项，有时这是必须的 —— 比如，有些附加视频卡需要在固件中启用 BIOS 模式。尽管如此，大多数情况下启用 CSM/legacy 支持只会无意中增加以 BIOS 模式启动 Linux 的风险，但你并不想这样。请注意，安全启动和 CSM/legacy 选项有时会交织在一起，因此更改任一选项之后务必检查另一个。4、 禁用 Windows 的快速启动功能这个页面描述了如何禁用此功能，不禁用的话会导致文件系统损坏。请注意此功能与固件的快速启动不同。5、 检查分区表使用 GPT fdisk、parted 或其它任意分区工具检查磁盘分区。理想情况下，你应该创建一个包含每个分区确切起点和终点（以扇区为单位）的纸面记录。这会是很有用的参考，特别是在安装时进行手动分区的时候。如果已经安装了 Windows，确定可以识别你的 EFI 系统分区（ESP），它是一个 FAT 分区，设置了“启动标记”（在 parted 或 Gparted 中）或在 gdisk 中的类型码为 EF00。安装 Linux大部分 Linux 发行版都提供了足够的安装说明；然而我注意到了在 EFI 模式安装中的几个常见的绊脚石：确保使用正确位深的发行版 — EFI 启动加载器和 EFI 自身的位深相同。现代计算机通常是 64 位，尽管最初几代基于 Intel 的 Mac、一些现代的平板电脑和变形本、以及一些鲜为人知的电脑使用 32 位 EFI。虽然可以将 32 位 EFI 引导加载程序添加至 32 位发行版，但我还没有遇到过正式支持 32 位 EFI 的 Linux 发行版。（我的 《在 Linux 上管理 EFI 引导加载程序》 一文概述了引导加载程序，而且理解了这些原则你就可以修改 32 位发行版的安装程序，尽管这不是一个初学者该做的。）在 64 位 EFI 的计算机上安装 32 位发行版最让人头疼，我不准备在这里描述这一过程；在具有 64 位 EFI 的计算机上，你应当使用 64 位的发行版。正确准备引导介质 — 将 .iso 镜像传输到 USB 闪存驱动器的第三方工具，比如 unetbootin，在创建正确的 EFI 模式引导项时经常失败。我建议按照发行版维护者的建议来创建 USB 闪存驱动器。如果没有类似的建议，使用 Linux 的 dd 工具，通过执行 dd if=image.iso of=/dev/sdc 在识别为 /dev/sdc 的 USB 闪存驱动器上创建一个镜像。至于 Windows，有 WinDD 和 dd for windows，但我从没测试过它们。请注意，使用不兼容 EFI 的工具创建安装介质是错误的，这会导致人们进入在 BIOS 模式下安装然后再纠正它们的误区，所以不要忽视这一点！备份 ESP 分区 — 如果计算机已经存在 Windows 或者其它的操作系统，我建议在安装 Linux 之前备份你的 ESP 分区。尽管 Linux 不应该 损坏 ESP 分区已有的文件，但似乎这时不时发生。发生这种事情时备份会有很大用处。只需简单的文件级的备份（使用 cp，tar，或者 zip 类似的工具）就足够了。以 EFI 模式启动 — 以 BIOS/CSM/legacy 模式引导 Linux 安装程序的意外非常容易发生，特别是当固件启用 CSM/legacy 选项时。下面一些提示可以帮助你避免此问题：进入 Linux shell 环境执行 ls /sys/firmware/efi 验证当前是否处于 EFI 引导模式。如果你看到一系列文件和目录，表明你已经以 EFI 模式启动，而且可以忽略以下多余的提示；如果没有，表明你是以 BIOS 模式启动的，应当重新检查你的设置。使用固件内置的引导管理器（你应该已经知道在哪；请参阅“了解如何使用固件”）使之以 EFI 模式启动。一般你会看到 CD-R 或 USB 闪存驱动器两个选项，其中一个选项包括 EFI 或 UEFI 字样的描述，另一个不包括。使用 EFI/UEFI 选项来启动介质。禁用安全启动 - 即使你使用的发行版官方支持安全启动，有时它们也不能生效。在这种情况下，计算机会静默的转到下一个引导加载程序，它可能是启动介质的 BIOS 模式的引导加载程序，导致你以 BIOS 模式启动。请参阅我的安全启动的相关文章以得到禁用安全启动的相关提示。如果 Linux 安装程序总是无法以 EFI 模式启动，试试用我的 rEFInd 引导管理器 制作的 USB 闪存驱动器或 CD-R。如果 rEFInd 启动成功，那它保证是以 EFI 模式运行的，而且在基于 UEFI 的 PC 上，它只显示 EFI 模式的引导项，因此若您启动到 Linux 安装程序，则应处于 EFI 模式。（但是在 Mac 上，除了 EFI 模式选项之外，rEFInd 还显示 BIOS 模式的引导项。）准备 ESP 分区 — 除了 Mac，EFI 使用 ESP 分区来保存引导加载程序。如果你的计算机已经预装了 Windows，那么 ESP 分区就已存在，可以在 Linux 上直接使用。如果不是这样，那么我建议创建一个大小为 550 MB 的 ESP 分区。（如果你已有的 ESP 分区比这小，别担心，直接用就行。）在此分区上创建一个 FAT32 文件系统。如果你使用 Gparted 或者 parted 准备 ESP 分区，记得给它一个“启动标记”。如果你使用 GPT fdisk（gdisk，cgdisk 或 sgdisk）准备 ESP 分区，记得给它一个名为 EF00 的类型码。有些安装程序会创建一个较小的 ESP 分区，并且设置为 FAT16 文件系统。尽管这样能正常工作，但如果你之后需要重装 Windows，安装程序会无法识别 FAT16 文件系统的 ESP 分区，所以你需要将其备份后转为 FAT32 文件系统。使用 ESP 分区 — 不同发行版的安装程序以不同的方式辨识 ESP 分区。比如，Debian 和 Ubuntu 的某些版本把 ESP 分区称为“EFI boot partition”，而且不会明确显示它的挂载点（尽管它会在后台挂载）；但是有些发行版，像 Arch 或 Gentoo，需要你去手动挂载。尽管将 ESP 分区挂载到 /boot 进行相应配置后可以正常工作，特别是当你想使用 gummiboot 或 ELILO（译者注：gummiboot 和 ELILO 都是 EFI 引导工具）时，但是在 Linux 中最标准的 ESP 分区挂载点是 /boot/efi。某些发行版的 /boot 不能用 FAT 分区。因此，当你设置 ESP 分区挂载点时，请将其设置为 /boot/efi。除非 ESP 分区没有，否则不要为其新建文件系统 — 如果已经安装 Windows 或其它操作系统，它们的引导文件都在 ESP 分区里，新建文件系统会销毁这些文件。设置引导程序的位置 — 某些发行版会询问将引导程序（GRUB）装到何处。如果 ESP 分区按上述内容正确标记，不必理会此问题，但有些发行版仍会询问。请尝试使用 ESP 分区。其它分区 — 除了 ESP 分区，不再需要其它的特殊分区；你可以设置 根（/）分区，swap 分区，/home 分区，或者其它分区，就像你在 BIOS 模式下安装时一样。请注意 EFI 模式下不需要设置BIOS 启动分区，所以如果安装程序提示你需要它，意味着你可能意外的进入了 BIOS 模式。另一方面，如果你创建了 BIOS 启动分区，会更灵活，因为你可以安装 BIOS 模式下的 GRUB，然后以任意模式（EFI 模式 或 BIOS 模式）引导。解决无显示问题 — 2013 年，许多人在 EFI 模式下经常遇到（之后出现的频率逐渐降低）无显示的问题。有时可以在命令行下通过给内核添加 nomodeset 参数解决这一问题。在 GRUB 界面按 e 键会打开一个简易文本编辑器。大多数情况下你需要搜索有关此问题的更多信息，因为此问题更多是由特定硬件引起的。在某些情况下，你可能不得不以 BIOS 模式安装 Linux。但你可以手动安装 EFI 引导程序让 Linux 以 EFI 模式启动。请参阅《 在 Linux 上管理 EFI 引导加载程序》 页面获取更多有关它们以及如何安装的可用信息。解决安装后的问题如果 Linux 无法在 EFI 模式下工作，但在 BIOS 模式下成功了，那么你可以完全放弃 EFI 模式。在只有 Linux 的计算机上这非常简单；安装 BIOS 引导程序即可（如果你是在 BIOS 模式下安装的，引导程序也应随之装好）。如果是和 EFI 下的 Windows 组成双系统，最简单的方法是安装我的 rEFInd 引导管理器。在 Windows 上安装它，然后编辑 refind.conf 文件：取消注释 scanfor 一行，并确保拥有 hdbios 选项。这样 rEFInd 在引导时会重定向到 BIOS 模式的引导项。如果重启后计算机直接进入了 Windows，很可能是 Linux 的引导程序或管理器安装不正确。（但是应当首先尝试禁用安全启动；之前提到过，它经常引发各种问题。）下面是关于此问题的几种可能的解决方案：使用 efibootmgr — 你可以以 EFI 模式引导一个 Linux 急救盘，使用 efibootmgr 实用工具尝试重新注册你的 Linux 引导程序，如这里所述。使用 Windows 上的 bcdedit — 在 Windows 管理员命令提示符窗口中，输入 bcdedit /set {bootmgr}path \EFI\fedora\grubx64.efi 会用 ESP 分区的 EFI/fedora/grubx64.efi 文件作为默认的引导加载程序。根据需要更改此路径，指向你想设置的引导文件。如果你启用了安全启动，需要设置 shim.efi，shimx64.efi 或者 PreLoader.efi（不管有哪个）为引导而不是 grubx64.efi。安装 rEFInd — 有时候 rEFInd 可以解决这个问题。我推荐使用 CD-R 或者 USB 闪存驱动器进行测试。如果 Linux 可以启动，就安装 Debian 软件包、RPM 程序，或者 .zip 文件包。（请注意，你需要在一个高亮的 Linux vmlinuz* 选项按两次 F2 或 Insert 修改启动选项。如果你的启动分区是单独的，这就更有必要了，因为这种情况下，rEFInd 无法找到根（/）分区，也就无法传递参数给内核。）使用修复引导程序 — Ubuntu 的引导修复实用工具可以自动修复一些问题；然而，我建议只在 Ubuntu 和 密切相关的发行版上使用，比如 Mint。有时候，有必要通过高级选项备份并替换 Windows 的引导。劫持 Windows 引导程序 — 有些不完整的 EFI 引导只能引导 Windows，就是 ESP 分区上的 EFI/Microsoft/Boot/bootmgfw.efi 文件。因此，你可能需要将引导程序改名（我建议将其移动到上级目录 EFI/Microsoft/bootmgfw.efi），然后将首选引导程序复制到这里。（大多数发行版会在 EFI 的子目录放置 GRUB 的副本，例如 Ubuntu 的 EFI/ubuntu，Fedora 的 EFI/fedora。）请注意此方法是个丑陋的解决方法，有用户反映 Windows 会替换引导程序，所以这个办法不是 100% 有效。然而，这是在不完整的 EFI 上生效的唯一办法。在尝试之前，我建议你升级固件并重新注册自己的引导程序，Linux 上用 efibootmgr，Windows 上用 bcdedit。有关引导程序的其它类型的问题 - 如果 GRUB（或者你的发行版默认的其它引导程序或引导管理器）没有引导操作系统，你必须修复这个问题。因为 GRUB 2 引导 Windows 时非常挑剔，所以 Windows 经常启动失败。在某些情况下，安全启动会加剧这个问题。请参阅我的关于 GRUB 2 的页面获取一个引导 Windows 的 GRUB 2 示例。还会有很多原因导致 Linux 引导出现问题，类似于 BIOS 模式下的情况，所以我没有全部写出来。尽管 GRUB 2 使用很普遍，但我对它的评价却不高 - 它很复杂，而且难以配置和使用。因此，如果你在使用 GRUB 的时候遇到了问题，我的第一反应就是用别的东西代替。我的用于 Linux 的 EFI 引导程序页面有其它的选择。其中包括我的 rEFInd 引导管理器，它除了能够让许多发行版上的 GRUB 2 工作，也更容易安装和维护 - 但是它还不能完全代替 GRUB 2。除此之外，EFI 引导的问题可能很奇怪，所以你需要去论坛发帖求助。尽量将问题描述完整。Boot Info Script 可帮助你提供有用的信息 - 运行此脚本，将生成的名为 RESULTS.txt 的文件粘贴到论坛的帖子上。一定要将文本粘贴到 [code] 和 [/code] 之间；不然会遭人埋怨。或者将 RESULTS.txt 文件上传到 pastebin 网站上，比如 pastebin.com，然后将网站给你的 URL 地址发布到论坛。哎呀：将传统模式下安装的系统转为 EFI 模式下引导警告：这些指南主要用于基于 UEFI 的 PC。如果你的 Mac 已经安装了 BIOS 模式下的 Linux，但想以 EFI 模式启动 Linux，可以在 OS X 中安装引导程序。rEFInd（或者旧式的 rEFIt）是 Mac 上的常用选择，但 GRUB 可以做的更多。论坛上有很多人看了错误的教程，在已经存在 EFI 模式的 Windows 的情况下，安装了 BIOS 引导的 Linux，这一问题在 2015 年初很普遍。这样配置效果很不好，因为大多数 EFI 很难在两种模式之间切换，而且 GRUB 也无法胜任这项工作。你可能会遇到不完善的 EFI 无法启动外部介质的情况，也可能遇到 EFI 模式下的显示问题，或者其它问题。如前所述，在“解决安装后的问题”部分，解决办法之一就是在 Windows 上安装 rEFInd，将其配置为支持 BIOS 模式引导。然后可以引导 rEFInd 并链式引导到你的 BIOS 模式的 GRUB。在 Linux 上遇到 EFI 特定的问题时，例如无法使用显卡，我建议你使用这个办法修复。如果你没有这样的 EFI 特定的问题，在 Windows 中安装 rEFInd 和合适的 EFI 文件系统驱动可以让 Linux 直接以 EFI 模式启动。这个解决方案很完美，它和我下面描述的内容等同。大多数情况下，最好将 Linux 配置为以 EFI 模式启动。有很多办法可以做到，但最好的是使用 Linux 的 EFI 引导模式（或者，可以想到，Windows，或者一个 EFI shell）注册到你首选的引导管理器。实现这一目标的方法如下：下载适用于 USB 闪存驱动器或 CD-R 的 rEFInd 引导管理器。从下载的镜像文件生成安装介质。可以在任何计算机上准备，不管是 EFI 还是 BIOS 的计算机都可以（或者在其它平台上使用其它方法）。如果你还没有这样做，请禁用安全启动。因为 rEFInd CD-R 和 USB 镜像不支持安全启动，所以这很必要，你可以在以后重新启用它。在目标计算机上启动 rEFInd。如前所述，你可能需要调整固件设置，并使用内置引导管理器选择要引导的介质。你选择的那一项也许在其描述中包含 UEFI 这样的字符串。在 rEFInd 上测试引导项。你应该至少看到一个启动 Linux 内核的选项（名字含有 vmlinuz 这样的字符串）。有两种方法可以启动它：* 如果你*没有*独立的 `/boot` 分区，只需简单的选择内核并按回车键。Linux 就会启动。 * 如果你*确定有*一个独立的 `/boot` 分区，按两次 `Insert` 或 `F2` 键。这样会打开一个行编辑器，你可以用它来编辑内核选项。增加一个 `root=` 格式以标识根（/）文件系统，如果根（/）分区在 `/dev/sda5` 上，就添加 `root=/dev/sda5`。如果不知道根文件系统在哪里，那你需要重启并尽可能想到办法。在一些罕见的情况下，你可能需要添加其它内核选项来代替或补充 `root=` 选项。比如配置了 LVM（LCTT 译注：Logical Volume Manager，逻辑卷管理）的 Gentoo 就需要 `dolvm` 选项。Linux 一旦启动，安装你想要的引导程序。rEFInd 的安装很简单，可以通过 RPM、Debian 软件包、PPA，或从rEFInd 下载页面下载的二进制 .zip 文件进行安装。在 Ubuntu 和相关的发行版上，引导修改程序可以相对简单地修复你的 GRUB 设置，但你要对它有信心可以正常工作。（它通常工作良好，但有时候会把事情搞得一团糟。）另外一些选项都在我的 《在 Linux 上管理 EFI 引导加载程序》 页面上。如果你想在安全启动激活的情况下引导，只需重启并启用它。但是，请注意，可能需要额外的安装步骤才能将引导程序设置为使用安全启动。有关详细信息，请参阅我关于这个主题的页面或你的引导程序有关安全启动的文档资料。重启时，你可以看到刚才安装的引导程序。如果计算机进入了 BIOS 模式下的 GRUB，你应当进入固件禁用 BIOS/CSM/legacy 支持，或调整引导顺序。如果计算机直接进入了 Windows，那么你应当阅读前一部分，“解决安装后的问题”。你可能想或需要调整你的配置。通常是为了看到额外的引导选项，或者隐藏某些选项。请参阅引导程序的文档资料，以了解如何进行这些更改。参考和附加信息信息网页我的 《在 Linux 上管理 EFI 引导加载程序》 页面含有可用的 EFI 引导程序和引导管理器。OS X's bless tool 的手册页 页面在设置 OS X 平台上的引导程序或引导管理器时可能会很有用。EFI 启动过程 描述了 EFI 启动时的大致框架。Arch Linux UEFI wiki page 有大量关于 UEFI 和 Linux 的详细信息。亚当·威廉姆森写的一篇不错的 《什么是 EFI，它是怎么工作的》。这个页面 描述了如何从 Windows 8 调整 EFI 的固件设置。马修·J·加勒特是 Shim 引导程序的开发者，此程序支持安全启动，他维护的博客经常更新有关 EFI 的问题。如果你对 EFI 软件的开发感兴趣，我的 《EFI 编程》 页面可以为你起步助力。附加程序rEFInd 官网gummiboot 官网ELILO 官网GRUB 官网GPT fdisk 分区软件官网Ubuntu 的 引导修复实用工具可帮助解决一些引启动问题交流Sourceforge 上的 rEFInd 交流论坛是 rEFInd 用户互相交流或与我联系的一种方法。Pastebin 网站，比如 http://pastebin.com， 是在 Web 论坛上与其他用户交换大量文本的一种便捷的方法。（题图：Pixabay，CC0）via: http://www.rodsbooks.com/linux-uefi/作者：Roderick W. Smith 译者：fuowang 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出