Linux grub是什么意思

发布时间 - 2023-04-17 00:00:00    点击率:
Linux grub是“GRand Unified Bootloader”的缩写,它的功能是在启动时从BIOS接管掌控、加载自身、加载Linux内核到内存,然后再把执行权交给内核;一旦内核开始掌控,GRUB就完成了它的任务,也就不再需要了。

本教程操作环境:linux5.9.8系统、Dell G3电脑。

Linux 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 条目之前或之后。

相关推荐:《Linux视频教程》


# linux  # bash  # 配置文件  # 也就  # 回车键  # 加载  # 是在  # 启动时  # 要注意  # 再把  # 自己的  # 的是 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言  如何生成腾讯云建站专用兑换码?  如何在VPS电脑上快速搭建网站?  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  如何快速搭建安全的FTP站点?  历史网站制作软件,华为如何找回被删除的网站?  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  如何在 Pandas 中基于一列条件计算另一列的分组均值  Laravel如何集成Inertia.js与Vue/React?(安装配置)  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  如何快速搭建高效简练网站?  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  如何在阿里云虚拟主机上快速搭建个人网站?  Laravel如何自定义错误页面(404, 500)?(代码示例)  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  网站建设要注意的标准 促进网站用户好感度!  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  如何用JavaScript实现文本编辑器_光标和选区怎么处理  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  如何在橙子建站中快速调整背景颜色?  laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法  javascript基本数据类型及类型检测常用方法小结  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  javascript如何操作浏览器历史记录_怎样实现无刷新导航  如何用已有域名快速搭建网站?  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  Laravel如何使用Blade模板引擎?(完整语法和示例)  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  如何在IIS中新建站点并解决端口绑定冲突?  如何续费美橙建站之星域名及服务?  JS弹性运动实现方法分析  JavaScript中的标签模板是什么_它如何扩展字符串功能  JavaScript如何实现类型判断_typeof和instanceof有什么区别  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  Bootstrap CSS布局之列表  C++用Dijkstra(迪杰斯特拉)算法求最短路径  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  Laravel项目怎么部署到Linux_Laravel Nginx配置详解