GRUB配置与应用,启动故障分析解决
一、GRUB启动位置
GRUB是现今大多数Linux系统采用的自举程序,这里先来看一下Linux的程序顺序:
| 执行顺序 | 动作 | |
| 固件Firmware(CMOS/BIOS) | → | POST(Pwer On Self Test)加电自检 |
| ↓ | ||
| 自举程序Bootloader(GRUB) | → | 在MBR(Master Boot Loader)读取Bootloader,载入内核 |
| ↓ | ||
| 载入内核 | → | 驱动硬件 (内核中较大部份是硬件驱动,可通过启动过程查看。) |
| ↓ | ||
| 启动init进程 | → | init进程(PID恒为1的初始化进程,是所有进程的父进程。) |
| ↓ | ||
| 读取执行配置文件/etc/inittab |
从以上启动顺可以看出,自举程序是在POST动作之后执行的。
二、GRUB配置文件
GRUB配置文件位于/etc/grub/grub.conf处,或者/etc/grub.conf(软链接):

/etc/grub.conf的配置文件内容详细说明,更详细的可点击这里:
| 项目 | 说明 |
| default | 定义缺省启动的操作系统,值为0时,表示启动第一个title处的系统,依此类推。 |
| timeout | 定义缺省等待的时间,单位为秒。 |
| splashimage | grub启动界面的图片,640*480分辨率,色深为14的图片,(hd0,0)表示第1块硬盘的第1个分区。 |
| hiddenmenu | 隐藏菜单。 |
| title | 定义启动菜单项的名称。 |
| root | 定义GRUB的根目录设备即内核所在分区。 |
| kernel | 定义内核所在位置,ro表示载入的时候内核是只读,。 |
| initrd | 定义加载镜像文件。 |

三、单用户模式(Single User Mode)
Linux系统的单用户模式相当于Window的安全模式,其作用是当忘记ROOT密码、异常断电或者重启可能造成的数据不同步或磁盘扇区错乱等都需要要进入到单用户模式进行修复工作,单用户模式只有root用户可以登陆系统,而root用户登陆系统是不需要密码的。
如何进入单用户模式,先看一下在GRUB操作界面下的几个命令:
e:编辑当前的启动菜单项
c:进入GRUB的命令行方式
b:启动当前菜单项
d:删除当前行
esc:返回GRUB启动菜单界面,取消对当前菜单项所做的任务修改

按e键编辑当前启动菜单项,进入所选菜单项后选择kernel所在内行,再按e键可进入grub命令行,然后在kernel行的命令行末尾处加上相应在的运行级别(1或s为单用户运行级别),回车后在kernel所在行按b键即可以单用户模式启动。

四、设置GRUB密码
通过以上操作,似乎任何人只要在服务器前都可以更改root用户密码,这是极其不安全的,为了安全起见,可以为GRUB本身加上密码。
设置GRUB密码有两种方式:
1、使用GRUB自带的grub-md5-crypt命令

2、在GRUB交互命令行界面中使用md5crypt命令

注意,通过以上两种任何一种方式,并未完成对grub加密,还需要将生成的密钥更新到/etc/grub.conf文件(命令:password --md5 密钥字串,注意命令位置必须在全局环境中,即title命令行之上)。

通过上图方法修改/etc/grub.conf配置文件后,下次进入GRUB时需要键入对应的密钥才能进入。
五、操作案例
1:root密码忘记
操作步骤:
①、按照上面操作进入单用户模式;
②、在所登陆单用户模式下用“passwd root“即可以修改root密码;
2:/etc/grub.conf文件损坏
如果/etc/grub.conf文件损坏,会导致系统无法启动,这时需要进入GRUB的命令行模式,手工重新引导GRUB即可。
操作步骤:
①、进入GRUB命令行模式;
②、依次手动键入以下命令并回车(cat /etc/grub.conf命令查看配置文件)
root 指定启动分区
kernel 指定内核所在位置
initrd 指定镜像文件
3:/etc/inittab文件丢失
如果/etc/inittab文件丢失,系统将无法启动,这种故障只能通过linux安装光盘进行修复。
①、在BIOS程序内设置以光盘启动;
②、启动时按F5键进入linux的Rescure(修复、挽救)模式;
③、键入linux rescure回车进行系统修复;
④、根据提示执行相应操作步骤,然后进入命令提示符,根据提示改变根分区目录chroot /mnt/sysimage;
⑤、恢复/etc/inittab文件(通过备份恢复);
⑥、exit命令退出,系统自动重新引导,完成修复;
GRUB配置与应用,启动故障分析解决的更多相关文章
- 重装ArchLinux后修改GRUB配置不生效问题的解决
重装ArchLinux后修改GRUB配置不生效问题的解决 mount指令看一下挂载,或者vim /etc/fstab看一下有没有/boot,看看fstab是不是没写进去.... 我特喵昨天重装完Arc ...
- 【Linux笔记】GRUB配置与应用,启动故障分析解决。
一.GRUB启动位置 GRUB是现今大多数Linux系统采用的自举程序,这里先来看一下Linux的程序顺序: 执行顺序 动作 固件Firmware(CMOS/BIOS) → POST(Pwer ...
- 开机启动遇到grub rescue,无法启动系统解决方法
先使用ls命令,找到Ubuntu的安装在哪个分区: grub rescue>ls 会罗列出磁盘信息 (hd0) (hd0,msdos9) (hd0,msdos8) (hd0,msdos7).. ...
- 最小配置启动SQL SERVER,更改SQL Server最大内存大小导致不能启动的解决方法
如果存在配置问题而无法启动服务器,则可以使用最小配置启动选项来启动 Microsoft SQL Server 实例. 这就是启动选项 -f. 使用最小配置启动 SQL Server 实例会自动将服务器 ...
- CAS SSO:汇集配置过程中的错误解决方法
本教程为gevin.me原创文章,转载请注明: CAS SSO:配置过程中的错误解决方法 | Gevin’s Blog 本文将收集在配置CAS SSO遇到的所有错误,希望对大家有帮助,也方便下次搭建的 ...
- 安装Wamp后 Apache无法启动的解决方法
安装Wamp后 Apache无法启动的解决方法,网上的解决方案可以说是五花八门,有些说了一大推,一点作用都起不到. 其实解决方法只需两步: 1.安装路径不能包含有中文,这个我不知道为什么,总之如果安装 ...
- Apache服务无法启动的解决方法
apache服务无法启动的解决方法 在配置apache的时候,把apache安装为服务myweb,用apacheMonitor启动myweb发现无法启动,提示:the requested operat ...
- mysql 1053错误,无法启动的解决方法
mysql 1053错误,无法启动的解决方法 windows2003服务器中,服务器重启后Mysql却没有启动,手动启动服务时提示1053错误. 尝试了以下方法,终于解决. 1.在DOS命令行使用 第 ...
- 安装Wamp后 Apache无法启动的解决方法
安装Wamp后 Apache无法启动的解决方法,网上的解决方案可以说是五花八门,有些说了一大推,一点作用都起不到. 其实解决方法只需两步: 1.安装路径不能包含有中文,这个我不知道为什么,总之如果安装 ...
随机推荐
- 测试之selenium简介
目录 selenium是什么? 应该具备的知识 Selenium功能特性 Selenium的局限性 Selenium与QTP比较 Selenium工具套件 Selenium集成开发环境(IDE) Se ...
- 关于微信订阅号里自动回复里的a链接的问题
前阵子做了一个微信订阅号的活动,然后发现一个问题:就是回复内容里的a标签微信没有解析出来,而是这样 正常应该是这样: 具体出现这种情况的手机有: 魅族的型号是:M1 metal小米的型号是:MI 5X ...
- suse12.2构建samba
1:添加用户 useradd wangjunhui -d /home/wangjunhuipasswd wangjunhui 2:配置samba smbpasswd -a wangjunhui vi ...
- redis为何单线程 效率还这么高 为何使用跳表不使用B+树做索引(阿里)
如果想了解 redis 与Memcache的区别参考:Redis和Memcache的区别总结 阿里的面试官问问我为何redis 使用跳表做索引,却不是用B+树做索引 因为B+树的原理是 叶子节点存储数 ...
- html页面添加左侧滑动菜单与内容部分的滚动条
html + css + jquery 展示地址:https://migloo.gitee.io/front 或 https://www.igloo.xin/front 思路: 1.通过jquery ...
- .NET 微服务 学习目录
概述 微服务在Java端已经有很成熟的框架可以使用,之前.NET一直没有比较成熟的网关,最近发现 Ocelot 这个.NET开源的微服务网关功能越来越强大,正好照着微软的官方文档学些一下.NET的微服 ...
- vue报错: Class constructor FileManager cannot be invoked without 'new'.
vue中报Class constructor FileManager cannot be invoked without 'new'.错处理: 原因:less 3.10 正式版报错 解决方法很简单,把 ...
- Python【每日一问】31
问: [基础题]:有 n 个人围成一圈,顺序排号.从第一个人开始报数(从 1 到 3 报数) ,凡报到 3 的人退出圈子,问最后留下的是原来第几号的那位. (n由键盘输入,比如n=100) [提高题] ...
- Docker容器内部端口映射到外部宿主机端口 - 运维笔记
Docker允许通过外部访问容器或者容器之间互联的方式来提供网络服务.容器启动之后,容器中可以运行一些网络应用,通过-p或-P参数来指定端口映射. 注意:宿主机的一个端口只能映射到容器内部的某一个端口 ...
- Prometheus安装部署说明
本文主要介绍了如何二进制安装Prometheus.使用 Node Exporter 采集主机信息并使用Grafana来进行图形化的展示. 1. 安装Prometheus Server Promethe ...