一、Linux启动的顺序
1. BIOS阶段
2. Grub 阶段
3. 内核引导阶段
4. init 进程 与 rc.sysinit 执行阶段
5. 特定级别的服务启动阶段
6. rc.local 执行的阶段
7. 打开tty终端 并且 运行 login 程序阶段,执行登录的账号密码检测。
8. Bash 程序 读取 相关的环境变量配置文件阶段。
9. 获得完整的 shell 环境,启动完成
二、Linux详细启动过流程
GNU GRUB(GRand Unified Bootloader简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数
当 “/boot/grub/grub.conf” 配置文件丢失,或者关键配置出现错误,或者MBR记录中的引导程序遭到破坏时,Linux主机启动后可能只会出现 “grub>” 的提示符,无法完成进一步的系统启动过程。
关于引起GRUB故障的简单说明
- 引起故障的原因:
- MBR中的GRUB程序遭到破坏
- grub.conf文件丢失,引导配置有误
- 故障现象:
- 系统引导停滞,显示 “grub>” 提示符
- 解决思路:
- 尝试手动输入引导命令
- 进入紧急模式,从备份文件中恢复grub.conf
二、修复GRUB引导故障
这个实验之前应该参考“Linux环境下MBR简介,如何修复MBR扇区故障”添加新硬盘sdb,并对新硬盘进行分区。
(1)查看系统中的grub.conf配置文件;
(注:建议保存红色圈内的内容,title…initrd…,因为修复时方法二需要手动输入如下内容)
title Red Hat Enterprise Linux (2.6.32-431.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=4988ef15-49d4-4559-b70a-4a8a9bf9cbc5 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=128M LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-431.el6.x86_64.img
此次实验是为了模拟GTUB引起故障,所以我们需要先将grub.conf进行备份,在破坏了grub.conf文件时,尝试用备份进行修复。
(2)备份grub.conf文件(建议备份到第2块磁盘中)
*[root@root ~]# mkdir /sdb1
[root@root ~]# mount /dev/sdb1 /sdb1
[root@root ~]# cp /boot/grub/grub.conf /sdb1/grub.conf.bak
*
(3)模拟破坏grub.conf文件
命令:rm -rf /boot/grub/grub.conf
(4)进行修复的方式主要有两种:
- 进入紧急模式,从备份中恢复grub.conf
- 尝试手动输入引导命令
方法一:进入急救模式,从备份中恢复grub.conf
RHEL6.5光盘引导,进入急救模式(第3项)
从备份文件中恢复grub.conf文件
命令:fdisk -l(可看到sda,sdb设备)
- mkdir /sdb1(在急救模式下的虚拟磁盘中建立sdb1分区的挂载点目录)
- mkdir /sda1(创建sda1分区的挂载点目录)
- mount /dev/sdb1 /sdb1
- mount /dev/sda1 /sda1
- cp /sdb1/grub.conf.bak /sda1/grub/grub.conf
重新启动虚拟机
并按F10进行保存!!!
登录系统后,可以发现grub.conf已经存在在/boot/grub目录中,GRUB引导故障已经成功修复;
方法二:尝试手动输入引导命令
grub> root (hd0,0)(指定引导分区/boot,(hd0,0) 对应为 /dev/sda1)
grub> kernel /vmlinuz... ro root=/dev/... rhgb quiet(指定内核文件所在的路径、根分区所在的设备位置)
grub> initrd /initrd-...(指定引导过程中使用的缓存盘镜像文件位置)
grub> boot(启动进入系统)
进入系统后:从备份文件中恢复grub.conf文件
mkdir /backup
cp /backup/grub.conf.bak /boot/grub/grub.conf