LinuxGod

LinuxGod.net
Linux大神网——精选每一篇高品质的技术干货
  1. 首页
  2. 开源快讯
  3. 正文

LFCS系列第十三讲:配置并排除Grub引导加载程序

2023年10月31日 344点热度

因为LFCS考试需求的变动已于2016年2月2日生效,因而我们向LFCS系列添加了一些必要的话题。为了打算认证考试,我们也强烈推荐你去瞧瞧LFCE系列。

LFCS系列第十三讲:配置并排除Grub引导加载程序故障。

本文将会向你介绍GRUB的知识,并会说明你为何须要一个引导加载程序,以及它是怎样给系统降低功能的。

Linux引导过程是从你按下你的笔记本电源键开始,直至你拥有一个全功能的系统为止,整个过程遵守着这样的主要步骤:

在该系列的第七讲(“SysVinit、Upstart和Systemd”)中,我们介绍了现代Linux发行版使用的一些服务管理系统和工具。在继续学习之前,你可能想要回顾一下那一讲的知识。

GRUB引导装载程序介绍

在现代系统中,你会发觉有两种主要的GRUB版本(一种是有时被称为GRUBLegacy的v1版本,另一种则是v2版本),虽然多数最新版本的发行版系统都默认使用了v2版本。现在,只有红帽企业版Linux6及其衍生系统仍在使用v1版本。

为此,在本手册中中国linux,我们将注重关注v2版本的功能。

不管GRUB的版本是哪些,一个引导加载程序都容许用户:

通过指定使用不同的内核来更改系统的行为;从多个操作系统中选择一个启动;添加或编辑配置区块来改变启动选项等。

现在,GNU项目负责维护GRUB,并在它们的网站上提供了丰富的文档。当你在阅读这篇手册时,我们强烈建议你看下GNU官方文档。

当系统引导时,你会在主控制台见到如下的GRUB画面。最开始,你可以按照提示在多个内核版本中选择一个内核(默认情况下,系统将会使用最新的内核启动),而且可以步入GRUB命令行模式(使用c键),或则编辑启动项(按下e键)。

GRUB启动画面

你会考虑使用一蒙自版内核启动的诱因之一是之前工作正常的某个硬件设备在一次升级后出现了“怪毛病(actingup)”(譬如,你可以参考AskUbuntu峰会中的这条链接)。

在启动时会从/boot/grub/grub.cfg或/boot/grub2/grub.cfg文件中读取GRUBv2的配置文件grub2命令行启动linux,而GRUBv1使用的配置文件则来自/boot/grub/grub.conf或/boot/grub/menu.lst。那些文件不应当直接自动编辑,而应通过/etc/default/grub的内容和/etc/grub.d目录中的文件来更新。

在CentOS7上,当系统最初完成安装后,会生成如下的配置文件:

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"

不仅在线文档外,你也可以使用下边的命令查阅GNUGRUB指南:

# info grub

假如你对/etc/default/grub文件中的可用选项非常感兴趣的话,你可以直接查阅配置一节的帮助文档:

# info -f grub -n 'Simple configuration'

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

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

在CentOS和openSUSE系统上

# awk -F' '$1=="menuentry " {print $2}' /boot/grub2/grub.cfg

在Ubuntu系统上

# awk -F' '$1=="menuentry " {print $2}' /boot/grub/grub.cfg

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

GRUB_DEFAULT=3

grub2命令行启动linux_grub启动命令_grub命令行启动

使用旧版内核启动系统

最后一个须要非常关注的GRUB配置变量是GRUB_CMDLINE_LINUX,它是拿来给内核传递选项的。我们可以在内核变量文件和man7bootparam中找到就能通过GRUB传递给内核的选项的详尽文档。

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

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"

为何你希望更改默认的内核参数或则传递额外的选项呢?简单来说,在好多情况下,你须要告诉内核个别由内核自身难以判定的硬件参数,或则是覆盖一些内核测量的值。

不久之前,就在我头上发生过这样的事情,当时我在自己已用了10年的老电脑上尝试了衍生自Slackware的VectorLinux。完成安装后,内核并没有检查出我的主板的正确配置,所以我不得不通过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"

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

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

修补LinuxGRUB问题

假如你安装了第二个操作系统,或则因为人为失误而造成你的GRUB配置文件受损了,仍然有一些方式可以让你恢复并才能再度启动系统。

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

grub命令行启动_grub2命令行启动linux_grub启动命令

修补Linux的Grub配置问题

我们将会侧重关注ls命令,它会列举已安装的设备和文件系统,但是我们将会瞧瞧它查找到的东西。在下边的图片中,我们可以见到有4块硬碟(hd0到hd3)。

其实只有hd0早已分区了(msdos1和msdos2可以证明,这儿的1和2是分区号,msdos则是分区方案)。

如今我们来瞧瞧能够在第一个分区hd0(msdos1)上找到GRUB。这些方式容许我们启动Linux,但是使用中级工具修补配置文件,或则假如有必要的话,干脆重新安装GRUB:

# ls (hd0,msdos1)/

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

查找Grub配置

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

set prefix=(hd0,msdos1)/grub2
set root=(hd0,msdos1)
insmod normal
normal

查找并启动Grub菜单

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

# grub2-install /dev/sdX

其它愈加复杂的情境及其修补建议都记录在UbuntuGRUB2故障排除手册中。该手册中探讨的概念对于其它发行版也是有效的。

总结

本文向你介绍了GRUB,并指导你可以在何处找到线上和线下的文档,同时说明了怎样面对因为引导加载相关的问题而造成系统未能正常启动的情况。

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

你有哪些问题或建议吗?请不要迟疑,使用下边的评论框告诉我们吧。我们期盼着来自你的回复!

via:

作者:GabrielCánepa译者:ChrisLeeGit校对:wxy

本文由LCTT原创翻译,Linux中国荣誉推出

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 内核 分区 启动 操作 文档
最后更新:2023年10月31日

Linux大神网

每日更新,欢迎收藏♥ 不积跬步无以至千里,加油,共勉。

点赞
< 上一篇
下一篇 >

Linux大神网

每日更新,欢迎收藏♥
不积跬步无以至千里,加油,共勉。

最新 热点 随机
最新 热点 随机
Linux下统计C语言程序执行时间的几种常用方法 Grafana常见的配置选项及常见配置文件介绍-苏州安嘉 开机流程:(BasicInputOutputSystem)基本输入输出系统 (知识点)LinuxGCC的使用方法及汇总 bash和rc有什么区别?文件描述文件问题 (Linux基础知识)定期自动运行程序Linux的基本操作 嵌入式Linux驱动学习笔记01-Ubuntu系统入门教程01 虚拟机模拟分布式结构的安装步骤和安装方法 Linux实现开机自定义的系统服务开机程序主要有两种方法 snap软件包的应用程序之间的依赖问题是什么? (Linux基础知识)Linux自主招生常见问题及解决办法 unix网络编程百度云 Python:为什么要学Python? Linux基础知识:启动脚本文件系统的应用程序分析方法 DockerDesktop与Ubuntu20.04WSL集成时出现异常怎么办? Linux中的cd内置命令和外部命令是怎样的? 如何安装AndroidSDK?studio告诉你怎么安装的方法 Linux系统中的pwd命令的基本使用方法和常见选项 关于Linux内核的驱动源码详解-回答 《UNIX网络编程(第三版)》 库:多线程启动定时器的操作封装数据共享
如何使用Linux操作系统用户通过验证插件映射MySQL内的账号LFCS系列第十三讲:配置并排除Grub引导加载程序linux mint安装chrome 关于LinuxMint的一些常见问题及解决办法虚拟机centos上安装vsftp软件的步骤记录如下!linux内核是用什么写的Linux常用的编译工具?集思广益错误或其他配置方案会进行更新linux版本信息 wouldtheinstallation系列和XWindow系列系列系列lrzsz服务器使用命令在线安装使用rz命令本地linux服务器80端口无法访问问题解决可以依次从上往下排查虚拟存储器的操作系统课程,你了解多少?Linux操作系统内核的启动过程及使用者有所启迪HDFS分布式文件系统的设计目标是什么?生态系统上海会计培训-如何获取日期字符串的时间戳?Android应用程序框架篇(2017年9月1日)Linux系统的优化调优策略:优化的分区策略Linux/Unix社区的版块不热闹,高手太忙,偶把自己这几年的Linux学习过程讲讲教程讨论Excel中日期和Unix时间戳之间的转换发车!Linux进程的内存分布长什么样?从服务器获取数据中的时间戳格式的java方法指定端口被哪个进程占用的情况怎么办?探讨!
数字媒体信息发布系统,尚观发布软件是一款专业的 如何吸引厂商开发更多更丰富的Linux软件问题 Linux内核在底层是如何工作的? DS-6400HD-T系列高清视音频 25K月薪!学会一门语言就能轻松达成 轻松掌握:如何查询Linux内核版本? (Linux基础知识)cp命令的所有参数和作用 各种主流Linux发行版基于RedHat的系统和安装、卸载软件办法 redhat linux 安装 快速上手RedHatLinux:全面安装指南 6种驱动开发时与设备注册、设备树相关的调试方法 如何优雅的在Windows中使用Linux系统中搭建Shell环境 Linux中如何强制用户在下次登录时更改密码策略? 大专计算机有哪些课程,专业的1对1答疑! Linux的软件安装方式进行汇总和安装的方式汇总 Linux发行版的学习方法与学习中应该注意的一些事 linuxshell数据重定向(输入重与输出)详细分析 库是什么?库的分类、分类库、动态库 Linux中国荣誉研究生申请之cron定时器 Python实现列表索引批量删除的5种方法,文中通过示例代码介绍 如何在Ubuntu上为Android系统编写的Linux内核驱动程序?
标签聚合
文件目录 内核 linux系统 虚拟机 linux服务器 命令 操作 文件 软件 应用
书籍
课程
技术群
技术干货大合集↓
  • 2023年11月 / 84篇
  • 2023年10月 / 94篇
  • 2023年9月 / 90篇
  • 2023年8月 / 93篇
  • 2023年7月 / 94篇
  • 2023年6月 / 90篇
  • 2023年5月 / 93篇
  • 2023年4月 / 90篇
  • 2023年3月 / 129篇
  • 2023年2月 / 84篇
  • 2023年1月 / 161篇
  • 2022年12月 / 187篇
  • 2022年11月 / 76篇
友情链接:

Linux书籍 | Linux命令 | Linux系统 | RHCE红帽认证 | Linux软件 | Linux教程 | CentOS系统 | Linux内核 | Linux服务器 | Linux大神 | IT资源

COPYRIGHT © 2024 linuxgod.net ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang