zoukankan      html  css  js  c++  java
  • Linux-CentOS6.9启动流程排错

    1 . CentOS6.9启动流程

    • POST 加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、串并行接口、键盘、CD-ROM光驱等硬件情况的检测。
    • Boot Sequence(BIOS) 加载BIOS的硬件信息,获取第一个启动设备
    • Boot Loader MBR ,引导加载器,引导程序
    • Kernel(ramdisk) 加载核心操作系统的核心,加载硬件驱动
    • rootfs 只读
    • switchroot 主根(init | systemd)
    • /sbin/init -->(/etc/inittab, /etc/init/*.conf) --> 设定默认运行级别
    • 系统初始化脚本 rc.sysinit,完成系统初始化 --> 关闭或启动对应级别的服务
    • 启动终端

    2 . /boot/中ramdisk文件恢复

    rm -rf initramfs-2.6.32-696.el6.x86_64.img

    • 意外删除ramdisk文件机器未重启时,恢复ramdisk文件方法:

    • mkinitrd /boot/initramfs- $(uname -r).img $(uname -r)
      为当前正在使用的内核重新制作ramdisk文件,基于内核的,所以参数要给定当前内核版本号。容纳后语句会自动生成文件 [initramfs-2.6.32-696.el6.x86_64.img]
    • dracut /boot/initramfs-$(uname -r).img $(uname -r)
      效果同 mkinitrd 一样
    • 意外丢失ramdisk文件后,重启机器,恢复方法:

    • 使用光盘引导,进入救援模式。
      最后使用 shell start shell 进入光盘系统。
    • df 查看 系统根目录为:/dev/sda2 /mnt/sysimage
    • chroot /mnt/sysimage/ 将根从光盘系统的根切换到主机系统的根,从而去修复主机系统。
      使用的方法是,没重启前的恢复方法。
      * -->#--> mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)*
      * -->#--> dracut /boot/initramfs-$(uname -r).img $(uname -r)*
      完成后重新启动即可【SElinux启用状态时,开机时,给主机全部文件打上标签,最好重启前关闭SElinux】

    3 . 核心文件/boot/vmlinuz- VERSION -release,意外丢失后恢复方法。

    重启后的状态:

    • 修复方法:

    • 进入救援模式,如果不需要网络功能可以先不配,一直跳过即可
    • 创建一个空文件 /mnt/cdrom,并且将光盘/dev/sr0挂载到空文件上
    • 使用rpm -ivh /mnt/cdrom/Packages/kernel-VERSION.rpm --force【强制重新安装】--root=/mnt/sysimage【指明主机根目录】
    • 安装完成后,等待内存写入磁盘,sync 同步数据,重启即可。

    4 . 在启动第一阶段错误,MBR引导的第一个扇区中446字节,丢失或损坏时。

    重启后状态直接进入光盘引导页面,因为主机硬盘没有MBR启动引导,机器BIOS会自动寻找有启动引导的东西来启动。

    • 修复方法1:

    • 进入bash shell后,切到主机的根`chroot /mnt/sysimage/`
    • 运行 grub-install /dev/sda 命令【给主机硬盘修复grub所有启动操作】
    • 修复方法2:

      • 使用交互式命令 grub
      • 交互输入 root(hd#,#)【描述boot所在的硬盘编号,和硬盘里第几个扇区】
      • setup(hd#) 安装即可
        【grub 交互式命令来修复,依赖/boot/grub/stage1文件】

    5 . 破环grub启动中 1.5阶段 mbr之后的27个扇区,让1阶段中bootloader能识别2阶段所在的分区上的文件系统

    重启后提示【没有了文件系统驱动,无法识别2阶段,所以凉了】

    • 修复方法:

    • 进入光盘引导,救援模式
    • 切到主机的根 chroot /mnt/sysimage/
    • 使用grub-install /dev/sda 命令修复即可
    • 命令执行完后,建议sync同步数据,将数据从内存写入硬盘后,重启即可
      【grub-install命令可以一键修复1阶段,1.5阶段,2阶段,非常强大。但是grub.conf文件无法修复,只能手写grub.conf配置文件】

    6 . 启动第二阶段,grub.conf文件丢失或这损坏,第二阶段就无法启动。

    • grub.conf文件的格式

    #boot=/dev/sda
    default=0 #默认启动那一个系统
    timeout=5 #倒计时5秒后,使用默认系统启动
    splashimage=(hd0,0)/grub/splash.xpm.gz
    hiddenmenu
    title CentOS (2.6.32-696.el6.x86_64)  #开启内核列表
    	root (hd0,0)  #系统默认的根,就是/boot 目录,定义根的位置 在哪个磁盘,哪个扇区
    	kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=93131fa4-d1bc-4442-b42f-215a7bb7a273
    	【rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet】【这些内容不写,也可以正常启动,只是一些属性配置设置】
    	initrd /initramfs-2.6.32-696.el6.x86_64.img
    
    • 修复方法:

    • 进入光盘挂载救援模式
    • 切根 chroot /mnt/sysimage
    • 进入/boot/grub里创建 grub.conf文件
    	default=0
    	timeout=5
    	title centos6
    	kernel /vmlinuz-VERSION.img ro【只读的意思,为了安全要加,加不加都可以】root=UUID=..【主机根目录】....
    	initrd /initramfs-VERSION.img
    

    7 . 当/boot 整个文件夹被清空,恢复系统操作

    重启后错误提示:

    • 修复方法:

    • 光盘引导,进入救援模式
    • 切根chroot /mnt/sysimage 切入主机根
    • 主机上挂载光盘 mount /dev/cdrom /mnt
    • 重新强制安装内核 rpm -ivh /mnt/Packages/kernel-VERSION.rpm --force 【sync命令,同步数据】
    • grub-install /dev/sda 修复 第1 第1.5 第2 阶段
    • /boot/grub/目录下缺少 grub.conf文件,手动写入
    • UUID地址可以用 vim指令读入 blkid /dev/sda2命令显示内容,或者直接写root=/dev/sda2 也可以
      ![](http://i2.51cto.com/images/blog/201801/02/69ff041e99811ff1242dfef556d64118.png
    • 第二种情况,/boot/下所有文件丢失、/etc/fstab文件也丢失,根都挂载不上去,首先需要修复 fstab 文件
    • blkid 命令 和 fdisk -l 命令 ,查看磁盘分区和UUID ,尝试找到 根 分区和 boot/ 分区,手动写 fstab 文件 。【看分区大小,或者 将分区挂载到文件目录,查看分区中的内容,判断分区是否为根】
    • 简单写一下 fstab文件
    • 重启启动,进入救援模式,可以挂载上根了。
    • 后续恢复方法,同/boot 被清空的 修复方式一样即可。

    8 . 系统主进程丢失 ,/sbin/init 丢失,错误提示:

    • 恢复方法:

    • 在开机,进入系统内核选择菜单,按 e 键 ,在选中内核 按e键, 在最后,添加 init=/bin/bash ,用 bash替代init,然后保存 继续启动。
    • 这时候,进入的是根的 只读挂载模式 使用 mount -o remount,rw / 重新挂载根,读写权限。
    • 将光盘挂载,然后使用 rpm -ivh /mnt/Packages/upstart-xxxxxxx.rpm --force 强制安装 init 进程程序的包。即可[可tab 补全]
    只有今天
  • 相关阅读:
    百度之星资格赛1001——找规律——大搬家
    HDU1025——LIS——Constructing Roads In JGShining's Kingdom
    DP(递归打印路径) UVA 662 Fast Food
    递推DP UVA 607 Scheduling Lectures
    递推DP UVA 590 Always on the run
    递推DP UVA 473 Raucous Rockers
    博弈 HDOJ 4371 Alice and Bob
    DFS(深度) hihoCoder挑战赛14 B 赛车
    Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2)
    DP(DAG) UVA 437 The Tower of Babylon
  • 原文地址:https://www.cnblogs.com/arnoLixi/p/9253999.html
Copyright © 2011-2022 走看看