Heim > System-Tutorial > LINUX > Hauptteil

So konfigurieren Sie GRUB und beheben Fehler

WBOY
Freigeben: 2024-01-04 11:00:35
nach vorne
871 Leute haben es durchsucht

Dieser Artikel führt Sie in die Kenntnisse von GRUB ein und erklärt, warum Sie einen Bootloader benötigen und wie dieser dem System Funktionalität hinzufügt.

Der Linux-Startvorgang beginnt, wenn Sie den Netzschalter Ihres Computers drücken, bis Sie ein voll funktionsfähiges System haben. Der gesamte Vorgang folgt diesen Hauptschritten:

  • 1. Ein Prozess namens POST (Power-On Self-Test) führt eine umfassende Überprüfung Ihrer Computer-Hardwarekomponenten durch.
  • 2. Wenn POST abgeschlossen ist, überträgt es die Kontrolle an den Bootloader, der dann den Linux-Kernel (und initramfs) in den Speicher lädt und ausführt.
  • 3. Der Kernel überprüft zuerst die Hardware und greift darauf zu, führt dann den Initialisierungsprozess aus (hauptsächlich bekannt unter dem gebräuchlichen Namen init), dann startet der Initialisierungsprozess einige Dienste und schließt schließlich den Systemstartvorgang ab.

In der siebten Vorlesung der Reihe („SysVinit, Upstart und Systemd“) stellten wir einige der Service-Management-Systeme und -Tools vor, die von modernen Linux-Distributionen verwendet werden. Vielleicht möchten Sie diese Lektion noch einmal durchgehen, bevor Sie fortfahren.

Einführung in den GRUB-Bootloader

Auf modernen Systemen finden Sie zwei Hauptversionen von GRUB (eine ist die v1-Version, manchmal auch GRUB Legacy genannt, und die andere ist die v2-Version), obwohl die meisten der neuesten Versionen aller Distributionssysteme die verwenden v2-Version standardmäßig. Heute verwenden nur noch Red Hat Enterprise Linux 6 und seine Derivate die v1-Version.

In diesem Leitfaden konzentrieren wir uns daher auf die Funktionen der v2-Version.

Unabhängig von der Version von GRUB ermöglicht ein Bootloader dem Benutzer Folgendes:

  1. Ändern Sie das Verhalten des Systems, indem Sie die Verwendung verschiedener Kernel festlegen
  2. Wählen Sie eines aus, um von mehreren Betriebssystemen zu starten;
  3. Fügen Sie Konfigurationsblöcke hinzu oder bearbeiten Sie sie, um Startoptionen und mehr zu ändern.
Heute verwaltet das

GNU-Projekt GRUB und stellt auf seiner Website umfangreiche Dokumentation zur Verfügung. Während Sie diesen Leitfaden lesen, empfehlen wir Ihnen dringend, einen Blick auf die offizielle GNU-Dokumentation zu werfen.

Wenn das System startet, sehen Sie den folgenden

GRUB-Bildschirm auf der Hauptkonsole. Zunächst können Sie den Anweisungen folgen, um einen Kernel aus mehreren Kernelversionen auszuwählen (standardmäßig startet das System mit dem neuesten Kernel), und Sie können den GRUB-Befehlszeilenmodus aufrufen (mit der c-Taste) oder Startelement bearbeiten (Taste e drücken).

如何配置并排除 GRUB故障

GRUB-Begrüßungsbildschirm

Einer der Gründe, warum Sie das Booten mit einer älteren Version des Kernels in Betracht ziehen könnten, ist, wenn ein Hardwaregerät, das zuvor einwandfrei funktionierte, nach einem Upgrade „nicht mehr funktioniert“ (Sie können beispielsweise auf diesen Link im AskUbuntu-Forum verweisen).

Die Konfigurationsdatei von

GRUB v2 wird beim Start aus der Datei /boot/grub/grub.cfg oder /boot/grub2/grub.cfg gelesen, während die von GRUB v1 verwendete Konfigurationsdatei aus stammt / boot/grub/grub.conf oder /boot/grub/menu.lst. Diese Dateien sollten nicht direkt manuell bearbeitet werden, sondern über den Inhalt von /etc/default/grub und den Dateien im Verzeichnis /etc/grub.d aktualisiert werden.

Unter

CentOS 7 wird die folgende Konfigurationsdatei generiert, wenn das System die Installation zum ersten Mal abschließt:

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="vconsole.keymap=la-latin1 rd.lvm.lv=centos_centos7-2/swap crashkernel=auto  vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos_centos7-2/root rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
Nach dem Login kopieren
Zusätzlich zur Online-Dokumentation können Sie auch das GNU GRUB-Handbuch mit dem folgenden Befehl konsultieren:

# info grub
Nach dem Login kopieren
Wenn Sie besonders an den in der Datei

/etc/default/grub verfügbaren Optionen interessiert sind, können Sie direkt die Hilfedokumentation im Konfigurationsabschnitt konsultieren:

# info -f grub -n 'Simple configuration'
Nach dem Login kopieren

使用上述命令,你会发现 GRUB_TIMEOUT 用于设置启动画面出现和系统自动开始启动(除非被用户中断)之间的时间。当该变量值为 -1 时,除非用户主动做出选择,否则不会开始启动。

当同一台机器上安装了多个操作系统或内核后,GRUB_DEFAULT 就需要用一个整数来指定 GRUB 启动画面默认选择启动的操作系统或内核条目。我们既可以通过上述启动画面查看启动条目列表,也可以使用下面的命令:

在 CentOS 和 openSUSE 系统上
# awk -F/' '$1=="menuentry " {print $2}' /boot/grub2/grub.cfg
Nach dem Login kopieren
在 Ubuntu 系统上
# awk -F/' '$1=="menuentry " {print $2}' /boot/grub/grub.cfg
Nach dem Login kopieren

如下图所示的例子中,如果我们想要使用版本为 3.10.0-123.el7.x86_64 的内核(第四个条目),我们需要将 GRUB_DEFAULT 设置为 3(条目从零开始编号),如下所示:

GRUB_DEFAULT=3
Nach dem Login kopieren

如何配置并排除 GRUB故障

使用旧版内核启动系统

最后一个需要特别关注的 GRUB 配置变量是 GRUB_CMDLINE_LINUX,它是用来给内核传递选项的。我们可以在 内核变量文件 和 man 7 bootparam 中找到能够通过 GRUB 传递给内核的选项的详细文档。

我的 CentOS 7 服务器上当前的选项是:

GRUB_CMDLINE_LINUX="vconsole.keymap=la-latin1 rd.lvm.lv=centos_centos7-2/swap crashkernel=auto  vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos_centos7-2/root rhgb quiet"
Nach dem Login kopieren

为什么你希望修改默认的内核参数或者传递额外的选项呢?简单来说,在很多情况下,你需要告诉内核某些由内核自身无法判断的硬件参数,或者是覆盖一些内核检测的值。

不久之前,就在我身上发生过这样的事情,当时我在自己已用了 10 年的老笔记本上尝试了衍生自 SlackwareVector Linux。完成安装后,内核并没有检测出我的显卡的正确配置,所以我不得不通过 GRUB 传递修改过的内核选项来让它工作。

另外一个例子是当你需要将系统切换到单用户模式以执行维护工作时。为此,你可以直接在 GRUB_CMDLINE_LINUX 变量中直接追加 single 并重启即可:

GRUB_CMDLINE_LINUX="vconsole.keymap=la-latin1 rd.lvm.lv=centos_centos7-2/swap crashkernel=auto  vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos_centos7-2/root rhgb quiet single"
Nach dem Login kopieren

编辑完 /etc/default/grub 之后,你需要运行 update-grub (在 Ubuntu 上)或者 grub2-mkconfig -o /boot/grub2/grub.cfg (在 CentOS 和 openSUSE 上)命令来更新 grub.cfg 文件(否则,改动会在系统启动时丢失)。

这条命令会处理早先提到的那些启动配置文件来更新 grub.cfg 文件。这种方法可以确保改动持久化,而在启动时刻通过 GRUB 传递的选项仅在当前会话期间有效。

修复 Linux GRUB 问题

如果你安装了第二个操作系统,或者由于人为失误而导致你的 GRUB 配置文件损坏了,依然有一些方法可以让你恢复并能够再次启动系统。

在启动画面中按下 c 键进入 GRUB 命令行模式(记住,你也可以按下 e 键编辑默认启动选项),并可以在 GRUB 提示中输入 help 命令获得可用命令:

如何配置并排除 GRUB故障

修复 Linux 的 Grub 配置问题

我们将会着重关注 ls 命令,它会列出已安装的设备和文件系统,并且我们将会看看它查找到的东西。在下面的图片中,我们可以看到有 4 块硬盘(hd0hd3)。

貌似只有 hd0 已经分区了(msdos1 和 msdos2 可以证明,这里的 1 和 2 是分区号,msdos 则是分区方案)。

现在我们来看看能否在第一个分区 hd0msdos1)上找到 GRUB。这种方法允许我们启动 Linux,并且使用高级工具修复配置文件,或者如果有必要的话,干脆重新安装 GRUB:

# ls (hd0,msdos1)/
Nach dem Login kopieren

从高亮区域可以发现,grub2 目录就在这个分区:

如何配置并排除 GRUB故障

查找 Grub 配置

一旦我们确信了 GRUB 位于 (hd0, msdos1),那就让我们告诉 GRUB 该去哪儿查找它的配置文件并指示它去尝试启动它的菜单:

set prefix=(hd0,msdos1)/grub2
set root=(hd0,msdos1)
insmod normal
normal
Nach dem Login kopieren

如何配置并排除 GRUB故障

查找并启动 Grub 菜单

然后,在 GRUB 菜单中,选择一个条目并按下回车键以使用它启动。一旦系统成功启动后,你就可以运行 grub2-install /dev/sdX 命令修复问题了(将 sdX 改成你想要安装 GRUB 的设备)。然后启动信息将会更新,并且所有相关文件都会得到恢复。

# grub2-install /dev/sdX
Nach dem Login kopieren

其它更加复杂的情景及其修复建议都记录在 Ubuntu GRUB2 故障排除指南 中。该指南中阐述的概念对于其它发行版也是有效的。

总结

本文向你介绍了 GRUB,并指导你可以在何处找到线上和线下的文档,同时说明了如何面对由于引导加载相关的问题而导致系统无法正常启动的情况。

幸运的是,GRUB 是文档支持非常丰富的工具之一,你可以使用我们在文中分享的资源非常轻松地获取已安装的文档或在线文档。

你有什么问题或建议吗?请不要犹豫,使用下面的评论框告诉我们吧。我们期待着来自你的回复!


Das obige ist der detaillierte Inhalt vonSo konfigurieren Sie GRUB und beheben Fehler. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:linuxprobe.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!