【Linux笔记】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命令退出,系统自动重新引导,完成修复;
【Linux笔记】GRUB配置与应用,启动故障分析解决。的更多相关文章
- 重装ArchLinux后修改GRUB配置不生效问题的解决
重装ArchLinux后修改GRUB配置不生效问题的解决 mount指令看一下挂载,或者vim /etc/fstab看一下有没有/boot,看看fstab是不是没写进去.... 我特喵昨天重装完Arc ...
- linux教程:配置Tomcat开机启动
我们在linux下安装好tomcat之后:经常是需要配置到开机启动的: 这样的话就不需要我们每次重启linux服务器之后自己在登陆运行startup.sh文件启动tomcat了 本次的演示环境是在ce ...
- GRUB配置与应用,启动故障分析解决
一.GRUB启动位置 GRUB是现今大多数Linux系统采用的自举程序,这里先来看一下Linux的程序顺序: 执行顺序 动作 固件Firmware(CMOS/BIOS) → POST(Pwer ...
- Linux笔记-vim 配置
本文是转载的,我用的ubuntu12.04在vim设置方面就是参考了本文,拿来分享给大家! ubuntu10.10中的设置方法: $cd /etc/vim $sudo cp vimrc vimrc.b ...
- linux centos7 tomcat8 配置成服务启动
1. tomact 解压到/usr/local/tomcat下 2.vim /usr/local/tomcat/bin/catalina.sh 在OS specific support.前加上 (注意 ...
- LINUX 笔记-ubuntu 配置 jdk 环境
在 /etc/profile 文件尾添加 JAVA_HOME=/opt/jdk1.8.0JRE_HOME=${JAVA_HOME}/jre PATH=$PATH:$HOME/bin:$JAVA_H ...
- 开机启动遇到grub rescue,无法启动系统解决方法
先使用ls命令,找到Ubuntu的安装在哪个分区: grub rescue>ls 会罗列出磁盘信息 (hd0) (hd0,msdos9) (hd0,msdos8) (hd0,msdos7).. ...
- Linux(CentOS)安装配置zeromq、jzmq(解决各种问题)
今天为Hadoop配置zeromq.jzmq遇到各种问题,先是编译出错,到编译成功后测试出错等等,下面将我遇到的问题与大家分享一下. 第一个注意点是:必须先编译安装zeromq,然后在编译jzmq,否 ...
- linux笔记之基础 1
内核命名规则: R.X.Y-Z 2.6.32-642 R: 内核有重大改变时才会更改,目前为止有四个大版本更新. X:基数为开发版,偶数为稳定版. Y.Z:修复bug,实现新功能,新特性的时候更改 ...
随机推荐
- Oracle入门第六天(中)——SET运算符(交并差集)
一.概述 1.SET运算符是什么 将多个查询用 SET 操作符连接组成一个新的查询 UNION/UNION ALL——并集 INTERSECT——交集 MINUS——差集(A\B=A中去掉B中也有的元 ...
- 20155220 2016-2017-2 《java程序设计》第四周总结
教材学习内容总结 第六章 继承与多态 继承 继承的基本原则是: 子类继承父类的所有成员变量(包括静态成员): 子类继承除父类构造方法外的所有成员方法(包括静态方法): 子类不能继承父类的构造方法,但在 ...
- 20155339《java程序设计》第一次实验报告
20155339<java程序设计>第一次实验报告 实验一 java开发环境的熟悉 实验内容 1.使用JDK编译.运行简单的java程序: 2.使用IDEA编辑.编译.运行.调试java程 ...
- NetWork——TCP的流量控制和拥塞控制
,然后开始执行拥塞避免算法,使拥塞窗口缓慢地线性增大. 这里为什么替换掉了慢开始算法呢,这是因为收到重复的ACK不仅仅告诉我们一个分组丢失了,由于接收方只有在收到另一个报文段时才会产生重复的ACK,所 ...
- [BZOJ3678]wangxz与OJ-[Splay一类的平衡树]
Description 传送门 Solution 直接splay搞定吧..似乎非旋treap也ok? 我已经菜到模板题都写不出来了qaq Code #include<iostream> # ...
- [BZOJ4712]洪水-[树链剖分+线段树]
Description 小A走到一个山脚下,准备给自己造一个小屋.这时候,小A的朋友(op,又叫管理员)打开了创造模式,然后飞到山顶放了格水.于是小A面前出现了一个瀑布.作为平民的小A只好老实巴交地爬 ...
- 【CF527C】Glass Carving
[CF527C]Glass Carving 题面 洛谷 题解 因为横着切与纵切无关 所以开\(set\)维护横着的最大值和纵着的最大值即可 #include <iostream> #inc ...
- Ajax在Django中的应用
一.什么是Ajax AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即使用Javascript语言与服务器进行异步交互,传 ...
- linux系统CPU内存磁盘监控发送邮件脚本
#!/bin/bashexport PATHexport LANG=zh_CN.UTF-8###top之后输入数字1,可以查看每颗CPU的情况.###先配置好mailx邮箱账号密码:#cat>/ ...
- TW实习日记:第八天
今天早上主要是接着做昨天的微信端网页预览附件,听同事说当打包代码放入服务器上后,就不存在跨域问题了,也就懒得自己写接口了,那么就希望自己能一次过吧...结果写着写着,发现开发文档中关于预览文件的方法, ...