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.安装路径不能包含有中文,这个我不知道为什么,总之如果安装 ...
随机推荐
- [HNOI2015]亚瑟王(概率期望,DP)
题目大意:很清晰了,不写了. $1\le T\le 444,1\le n\le 220,0\le r\le 132,0<p_i<1,0\le d_i\le 1000$. $p_i$ 和 $ ...
- 二维码解析(编译zxing-cpp)
二维码解析使用的类库是zxing(官网 https://github.com/zxing/zxing). 这个类库是谷歌的,原来有c++版本,后来的更新去掉了,zxing介绍了目前基于zxing的其他 ...
- python jenkins api
#!/usr/bin/pythonimport sys, timeimport shutil, commands#coding=utf-8 import sysreload(sys)sys.setde ...
- sbt 安装
此次安装实在windows 下进行的 1.官网下载sbt 2.安装并配置环境变量 path 中添加: 3.更改sbt配置文件 1)修改C:\notos\software\sbt\conf\sbtco ...
- [记录]安装.Net Framework 4.6.2时出现“无法建立到信任根颁发机构的证书链”解决方法
在安装Microsoft .NET Framework 4.6.2脱机包时提示 无法建立到信任根颁发机构的证书链 实际上是要安装一个根证书.解决方案如下(因无法贴链接,可百度搜索“mamicode.c ...
- AtCoder-arc059 (题解)
A - いっしょ / Be Together (结论/暴力) 题目链接 题目大意: 有 \(n\) 个数字,要将它们变成相等,对每一个数字最多操作一次,如将 \(a \to b\) 的代价为 \((a ...
- 『异或粽子 堆 可持久化trie』
异或粽子 Description 小粽是一个喜欢吃粽子的好孩子.今天她在家里自己做起了粽子. 小粽面前有 n 种互不相同的粽子馅儿,小粽将它们摆放为了一排,并从左至右编号为 1 到 n.第 i 种馅儿 ...
- asp获取access数据库中的一条随机记录
针对“用一条SQL得到数据库中的随机记录集”问题在网上已经有很多答案了: SQL Server 2000: SELECT TOP n * FROM tanblename ORDER BY NEWID( ...
- C#中真正的属性
引言 我们以前课堂上说的类当中的“属性”,其实官方叫法是“字段”或者“域”域(Field).正常使用,把它们当属性理解更加方便快捷,也没有什么问题. 如果要在微软的mvc中充分利用类带来的便利,就有必 ...
- 【转载】C#通过遍历DataTable的列获取所有列名
在C#中的Datatable数据变量的操作过程中,可以通过遍历DataTable的所有列对象Columns属性,来获取DataTable中的所有列名信息,DataTable中所有列的对象信息都存储在D ...