设为首页 | 加入收藏 | OA登陆 | 返回旧网站
中文版 | ENGLISH

NEWS

Android

(022)84236606
当前位置:主页 > Android >
Linux GRUB2设置简介
发布时间:2017-07-08 21:05 来源:http://www.techolics.com

Linux GRUB2设置简介

进修 GRUB 引导加载措施是怎样准备你的体系并启动操纵体系内核的。

自从上个月为我的文章《Linux 引导和启动进程简介》做研究开始,我对更深入相识 GRUB2 发生了乐趣。这篇文章提供了设置 GRUB2 的扼要先容。为了轻盈起见,我大大都环境下会行使 GRUB 指代 GRUB2。

GRUB

GRUB 来自 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