Rumah > Tutorial sistem > LINUX > teks badan

Bagaimana untuk mengkonfigurasi dan menyelesaikan masalah GRUB

WBOY
Lepaskan: 2024-01-04 11:00:35
ke hadapan
919 orang telah melayarinya

Artikel ini akan memperkenalkan anda kepada pengetahuan GRUB dan menerangkan sebab anda memerlukan pemuat but dan cara ia menambahkan fungsi pada sistem.

Proses but Linux bermula dari apabila anda menekan butang kuasa komputer anda sehingga anda mempunyai sistem yang berfungsi sepenuhnya Keseluruhan proses mengikut langkah-langkah utama ini:

  • 1. Proses yang dipanggil POST (Ujian Kendiri Kuasa) akan melakukan pemeriksaan menyeluruh pada komponen perkakasan komputer anda.
  • 2. Apabila POST selesai, ia memindahkan kawalan kepada pemuat but, yang kemudiannya memuatkan kernel Linux (dan initramfs) ke dalam memori dan melaksanakannya.
  • 3 Kernel mula-mula menyemak dan mengakses perkakasan, kemudian menjalankan proses pemula (terutamanya dikenali dengan nama biasa init), kemudian proses pemulaan memulakan beberapa perkhidmatan, dan akhirnya melengkapkan proses permulaan sistem.

Dalam syarahan ketujuh siri ("SysVinit, Upstart, dan Systemd"), kami memperkenalkan beberapa sistem pengurusan perkhidmatan dan alatan yang digunakan oleh pengedaran Linux moden. Anda mungkin ingin menyemak pelajaran itu sebelum meneruskan.

Pengenalan pemuat but GRUB

Pada sistem moden, anda akan menemui dua versi utama GRUB (satu ialah versi v1 kadangkala dipanggil GRUB Legacy, dan satu lagi ialah versi v2), walaupun kebanyakan versi terkini Semua sistem pengedaran menggunakan versi v2 secara lalai. Hari ini, hanya Red Hat Enterprise Linux 6 dan terbitannya masih menggunakan versi v1.

Jadi, dalam panduan ini, kami akan menumpukan pada ciri-ciri versi v2.

Tidak kira versi GRUB, pemuat but membenarkan pengguna untuk:

  1. Ubah suai tingkah laku sistem dengan menyatakan penggunaan kernel yang berbeza
  2. Pilih satu untuk but daripada berbilang sistem pengendalian;
  3. Tambah atau edit blok konfigurasi untuk menukar pilihan permulaan dan banyak lagi.

Hari ini, projek GNU mengekalkan GRUB dan menyediakan dokumentasi yang kaya di tapak web mereka. Semasa anda membaca panduan ini, kami amat mengesyorkan agar anda melihat dokumentasi rasmi GNU.

Apabila sistem but, anda akan melihat skrin GRUB berikut pada konsol utama. Pada mulanya, anda boleh mengikut gesaan untuk memilih kernel antara berbilang versi kernel (secara lalai, sistem akan but dengan kernel terkini), dan anda boleh memasuki mod baris arahan GRUB (menggunakan kekunci c), atau edit item Pelancaran (tekan kekunci e).

如何配置并排除 GRUB故障

skrin percikan GRUB

Salah satu sebab anda mungkin mempertimbangkan untuk but dengan versi kernel yang lebih lama adalah jika peranti perkakasan yang sebelum ini berfungsi dengan baik "bertindak" selepas naik taraf (contohnya, anda boleh merujuk pautan ini dalam forum AskUbuntu) .

Fail konfigurasi GRUB v2 akan dibaca daripada fail /boot/grub/grub.cfg atau /boot/grub2/grub.cfg semasa permulaan, manakala fail konfigurasi yang digunakan oleh GRUB v1 berasal daripada / boot/grub/grub.conf atau /boot/grub/menu.lst. Fail ini tidak boleh diedit secara manual secara langsung, tetapi hendaklah dikemas kini melalui kandungan /etc/default/grub dan fail dalam direktori /etc/grub.d.

Pada CentOS 7, apabila sistem pada mulanya melengkapkan pemasangan, fail konfigurasi berikut akan dijana:

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"
Salin selepas log masuk

Selain dokumentasi dalam talian, anda juga boleh merujuk manual GNU GRUB menggunakan arahan berikut:

# info grub
Salin selepas log masuk

Jika anda amat berminat dengan pilihan yang tersedia dalam fail /etc/default/grub, anda boleh terus merujuk dokumentasi bantuan di bahagian konfigurasi:

# info -f grub -n 'Simple configuration'
Salin selepas log masuk

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

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

在 CentOS 和 openSUSE 系统上
# awk -F/' '$1=="menuentry " {print $2}' /boot/grub2/grub.cfg
Salin selepas log masuk
在 Ubuntu 系统上
# awk -F/' '$1=="menuentry " {print $2}' /boot/grub/grub.cfg
Salin selepas log masuk

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

GRUB_DEFAULT=3
Salin selepas log masuk

如何配置并排除 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"
Salin selepas log masuk

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

不久之前,就在我身上发生过这样的事情,当时我在自己已用了 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"
Salin selepas log masuk

编辑完 /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)/
Salin selepas log masuk

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

如何配置并排除 GRUB故障

查找 Grub 配置

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

set prefix=(hd0,msdos1)/grub2
set root=(hd0,msdos1)
insmod normal
normal
Salin selepas log masuk

如何配置并排除 GRUB故障

查找并启动 Grub 菜单

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

# grub2-install /dev/sdX
Salin selepas log masuk

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

总结

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

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

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


Atas ialah kandungan terperinci Bagaimana untuk mengkonfigurasi dan menyelesaikan masalah GRUB. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:linuxprobe.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!