Ubuntu系统的开机全流程介绍及grub美化
前言
之前一直对grub、boot loader等概念不甚了解,趁着今天国庆假期,梳理以下,并且顺便美化一下我的Grub界面。
以下介绍的详细参考见于The Linux Booting Process - 6 Steps Described in Detail。
Ubuntu开机经历的步骤
开启电源键后直到OS开机正常启动需要经历以下步骤:
BIOS
BIOS 查找、加载和执行 boot loader ,
Boot Loader
boot loader 是一段程序,用来选择并加载 Kernel(即内核)。boot loader 所在的区域叫做 Master Boot Record(MBR),中文翻译为主引导记录,是一块物理介质区域。
Linux系统中的 boot loader 统一都叫做grub。
Kernel
Kernel运行起来之后就会有一系列的初始化程序和 Run level的程序被运行,这个时候我们的操作系统就跑起来了。
配置 Grub 的个性化主题
一共有四个比较集中的地方可以看到grub相关的配置:
/usr/share/grub/default/grub/etc/default/grub/etc/grub.d/boot/grub/grub.cfg
逐一介绍如下:
/usr/share/grub/default/grub
参考下面的回答,所有 /usr/share 目录下的文件都是 example configuration files,即都是示例的配置文件,相当于一个备份区吧,如果你的个性化配置文件出了什么问题想恢复到原来的默认配置,那么这些文件都可以复制到/etc文件夹下。/etc目录下的文件都是系统所需要用到的。
/etc/default/grub
/etc/default/grubis where you can set simple options for many GRUB settings. It is parsed as a shell script.
这个文件是用来进行简单的 GRUB 配置的,该文件可以理解为是一个shell脚本。编辑该文件就可以改变 GRUB 的设置。修改完需要执行grub-update使新配置生效。grub-update的实际作用就是将相应的修改写入到/boot/grub/grub.cfg文件中,所以作为用户而言,改动该文件即可,无需直接修改/boot/grub/grub.cfg进行个性化配置。
/etc/grub.d
/etc/grub.dcontains shell scripts which generate GRUB configuration (based on settings on/etc/default/grub).update-grub(akagrub-mkconfig) runs these scripts to generate actual GRUB configuration.
/etc/grub.d目录下包含了很多用来配置 GRUB 的shell脚本(这些配置是在/etc/default/grub配置的基础上进行的更复杂的配置)。执行grub-update使新配置生效。
/boot/grub/grub.cfg
/boot/grub/grub.cfgis where the generated configuration is saved for GRUB to use.
被修改的前两个文件执行grub-update后所生成的文件就是/boot/grub/grub.cfg文件,是 GRUB 实际使用到的配置文件。
下载主题
在Grub-theme-vimix - Gnome-look.org上下载完主题压缩包后,参照下图:

一步步安装即可。特别的一点是这个主题的制作者还写了一个安装脚本替代使用者执行上述步骤,只不过与该步骤有细微的差别:把主题选在了/usr/share/grub/themes文件夹下;多了一个对/etc/default/grub文件的备份。
配置好后的效果为

相关参考可见于:
- Linux Grub引导界面(启动界面)美化 - 知乎
- Grub2 开机系统选择界面美化 - 主题修改_肖朋伟-CSDN博客_grub美化
- Grub2主题修改和美化--------Linux&Windows_Cat-CSDN博客_grub主题
更详细的解释参考来源
- boot - Difference /usr/share/grub/default/grub and /etc/default/grub? - Ask Ubuntu
- Why so many files relating to grub (/etc/grub.d/, /etc/default/grub, /boot/grub2/grub.cfg)? What is the purpose of each? - Ask Ubuntu
- Grub2/Setup - Community Help Wiki
- GRUB2的配置方法【涉及/etc/default/grub,/etc/grub.d/*】_duanlove(技术路途)专栏-CSDN博客
还能在这些地方找到我
Ubuntu系统的开机全流程介绍及grub美化的更多相关文章
- Linux系统入门---开机启动流程
目录 Linux系统入门---开机启动流程 一.centos6 二.systemd管理进程 1.查看级别 三.centos7实践案例: 1.案例1:centos7系统,单用户修改root密码 案例2: ...
- (转)CentOS 7系统详细开机启动流程和关机流程
CentOS 7系统详细开机启动流程和关机流程 原文:http://blog.csdn.net/yuesichiu/article/details/51350654 名称 bootup - 系统启动流 ...
- linux系统下开机启动流程
在了解开机启动流程之前,还是得先了解一些磁盘的基本知识.磁盘主要由盘片,机械手臂,磁头,主轴马达构成.盘片就是存储数据的物理单位了.然后盘片上我们可以分成扇区(sector)和柱面(cylinder) ...
- github Pull Request合入全流程介绍
图解全流程 详细步骤 1. fork仓库 2. clone fork仓库到本地 3. 关联upstream原仓库 在fork本地仓库输入下面命令进行关联: git remote add upstrea ...
- ubuntu系统中crontab的使用介绍
1.创建crontab任务 用户hancool
- 基于Jenkins的开发测试全流程持续集成实践
今年一直在公司实践CI,本文将近半年来的一些实践总结一下,可能不太完善或优美,但的确初步解决了我目前所在项目组的一些痛点.当然这仅是一家之言也不够完整,后续还会深入实践和引入Kubernetes进行容 ...
- Ubuntu系统下静态DNS配置详解
1.DNS服务的简介: DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器.DNS中保存了一张域 ...
- 【CKB.DEV 茶话会】第二期:聊聊 CKB 钱包和 Nervos DAO 全流程
CKB.DEV 茶话会第二期:聊聊 CKB 钱包和 Nervos DAO 全流程 为了鼓励更多优秀的开发者和研究人员参与到 CKB 的开发和生态建设中去,我们希望组织一系列 CKB Developer ...
- Ubuntu系统---EasyECD安装记录
说明:因解决Ubuntu花屏和频繁死机的问题(后来证实本人的电脑显卡驱动有问题),手残毁坏了系统,需重装.之前从未装过系统,经过三天,反复折腾装了近十次的系统,现总结如下. 第一步:Windows 系 ...
随机推荐
- 消除不受信任的HTML (来防止XSS攻击)
问题 在做网站的时候,经常会提供用户评论的功能.有些不怀好意的用户,会搞一些脚本到评论内容中,而这些脚本可能会破坏整个页面的行为,更严重的是获取一些机要信息,此时需要清理该HTML,以避免跨站脚本cr ...
- windows通过pfx文件生成key、crt文件
nginx代理的时候,需要填写证书的crt跟rsa文件路径,通过iis导出的证书是pfx文件(不知道nginx能不能直接用pfx文件,没有查看过相关资料),所以要通过pfx文件生成crt.rsa文件. ...
- EFCore 开始
1. 数据准备 新建类库项目--实体 NuGet安装: Microsoft.EntityFrameworkCore 新建类库项目--DbContext NuGet安装: Microsoft.Entit ...
- 前端使用a标签启动本地.exe程序
目录 1,需求 2,效果图 3,实现原理 4,代码 5,注意事项 1,需求 最近有一个需求,在web页面上有一个按钮,点击按钮,调起本地的.exe程序客户端,我在网上找了很多,感觉都不完整,所以自己总 ...
- Java HashMap工作原理:不仅仅是HashMap
前言: 几乎所有java程序员都用过hashMap,但会用不一定会说. 近年来hashMap是非常常见的面试题,如何为自己的回答加分?需要从理解开始. "你用过hashMap吗?" ...
- 洛谷P3104 Counting Friends G 题解
题目 [USACO14MAR]Counting Friends G 题解 这道题我们可以将 \((n+1)\) 个边依次去掉,然后分别判断去掉后是否能满足.注意到一点, \(n\) 个奶牛的朋友之和必 ...
- uboot常用命令及其使用
环境变量设置 setenv 设置一个环境变量 # 格式:setenv key vlaue setenv bootdelay 5 # 设置uboot启动延时5s 删除一个环境变量 uboot对于一个没有 ...
- SpringBoot详解(一)——
https://www.cnblogs.com/lifullmoon/p/14957771.html https://www.cnblogs.com/lifullmoon/p/14957751.htm ...
- Spring Dependency Injection浅析
Dependency Injection 依赖注入,在Spring框架负责创建Bean对象时,动态的将依赖对象注入到Bean组件. 1.在UserService中提供一个get/set的name方法, ...
- ubuntu 20.04 发邮件配置
安装sendmail后,发邮件一直没有成功,因此卸载sendmail后,安装heirloom-mailx. # unbuntu 18.04和20.04移除了heirloom-mailx,需要另外配置软 ...