Centos5和6 启动流程和故障恢复

来源:互联网 发布:淘宝助理怎样上架历史 编辑:程序博客网 时间:2024/06/07 02:47

对于linux 运维人员来说清楚Linux启动的过程是非要有必要的,因为只有这样才能在遇到系统不能正常启动的时候对问题进行排查,判断是具体哪个阶段出现问题,从而修复,而不是只能重装系统。在介绍启动流程前,先介绍下内核相关概念:
linux 内核英文叫kernel,提供进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能。
Linux内核特点:
支持模块化: .ko(内核对象)如:文件系统,硬件驱动,网络协议;支持内核模块的动态装载和卸载。
组成部分:
核心文件: /boot/vmlinuz-VERSION-release
ramdisk:辅助的伪根系统
CentOS 5: /boot/initrd-VERSION-release.img
CentOS 6,7: /boot/initramfs-VERSION-release.img
模块文件: /lib/modules/VERSION-release5
现在将开始介绍CentOS6启动流程

一. 第一阶段

这里写图片描述
1.1 加载BIOS的硬件信息,获取第一个启动设备
POST: Power-On-Self-Test,加电自检,是BIOS功能的一个主要部
分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、 串并行接
口、键盘、 CD-ROM光驱等硬件情况的检测。
2.读取第一个启动设备MBR的引导加载程序(grub)的启动信息。
MBR总共512字节,前446byte 是bootloader ,之后64byte是硬盘分区表,最后两个字节是55AA 。 bootloader 是第一阶段启动项

二:第二阶段

这里写图片描述

3.第三阶段

这里写图片描述
加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备;核心执行init程序,并获取默认的运行信息。

4.第四阶段

这里写图片描述
4.1 init程序执行/etc/rc.d/rc.sysinit文件
4.2 启动核心的外挂模块
4.3 init执行运行的各个批处理文件(scripts)
4.4 init执行/etc/rc.d/rc.local
4.5 执行/bin/login程序,等待用户登录

5.第五阶段

启动完成,用户可以正常登录系统。

6. 启动故障恢复

6.1 模拟MBR故障
[root@Centos6.9 ~]#dd if=/dev/zero of=/dev/sda bs=1 count=512 删除MBR信息
重启之后发现界面是黑色的,这时候我们需要重启机器,进入救援模式会看到以下界面:

这里写图片描述
图中 chroot /mnt/sysimage/ 是切换到真正的根目下,默认是在/boot下面。
然后执行:grub-install /dev/sda 等待完成后,如果没有报错,重启机器即可。这种方法同样适用于1.5阶段故障。恢复方法总结:重启机器,进入救援模式后,执行 chroot /mnt/sysimage/ 切根,然后 grub-install /dev/sda ,没有报错,重启机器就可以了!

6.2 整个boot 分区都丢失

首先我们看下 boot 下面有哪些东西:

[root@Centos6.9 boot]#lsconfig-2.6.32-696.el6.x86_64         symvers-2.6.32-696.el6.x86_64.gzgrub                                 System.map-2.6.32-696.el6.x86_64initramfs-2.6.32-696.el6.x86_64.img  vmlinuz-2.6.32-696.el6.x86_64[root@Centos6.9 boot]#ls grub/device.map     ffs_stage1_5      jfs_stage1_5       stage1         vstafs_stage1_5e2fs_stage1_5  grub.conf         minix_stage1_5     stage2         xfs_stage1_5fat_stage1_5   iso9660_stage1_5  reiserfs_stage1_5  ufs2_stage1_5

里面除了grub 文件夹外的文件都是安装kernel 时候自动生成的。
当整个boot 分区丢失后,我们同样先进入救援模式,同样先执行
chroot /mnt/sysimage 命令切换到平时的根目录下,然后挂载光盘,之后安装光盘里的内核文件,命令:rpm -ivh /mnt/Packages/kernel-2.6.32-696.e16x86_64.rpm –force,在执行 grub-install /dev/sda ,ls /boot 会看到如下如所示:
这里写图片描述
好了,这时候我们快要成功!我们在grub 文件夹下新建grub.conf 文件
[root@Centos6.9 boot]#cat grub/grub.conf
root (hd0,0) 写明/boot分区的位置 hd0 表示第一个硬盘,0 表示第一个分区。
default=0 0表示默认启动
timeout=5 表示5秒后自动运行
title linux1 一个名称,叫什么无所谓,但是要有
kernel /vmlinuz-2.6.32-696.el6.x86_64 root=/dev/sda2
initrd /initramfs-2.6.32-696.el6.x86_64.img
做完之后退出,然后重启机器就可以正常恢复了!

原创粉丝点击