CentOS6.9启动流程linux
- 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,完成系统初始化 --> 关闭或启动对应级别的服务
- 启动终端
/boot/中ramdisk文件恢复shell
rm -rf initramfs-2.6.32-696.el6.x86_64.img
#意外删除ramdisk文件机器未重启时,恢复ramdisk文件方法:vim
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 同样
- 使用光盘引导,进入救援模式。
最后使用 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】
核心文件/boot/vmlinuz- VERSION -release,意外丢失后恢复方法。
重启后的状态:centos
- 进入救援模式,若是不须要网络功能能够先不配,一直跳过便可
- 建立一个空文件 /mnt/cdrom,而且将光盘/dev/sr0挂载到空文件上
- 使用
rpm -ivh /mnt/cdrom/Packages/kernel-VERSION.rpm --force【强制从新安装】--root=/mnt/sysimage【指明主机根目录】
- 安装完成后,等待内存写入磁盘,sync 同步数据,重启便可。
在启动第一阶段错误,MBR引导的第一个扇区中446字节,丢失或损坏时。
重启后状态直接进入光盘引导页面,由于主机硬盘没有MBR启动引导,机器BIOS会自动寻找有启动引导的东西来启动。安全
修复方法1: bash
- 进入bash shell后,切到主机的根`chroot /mnt/sysimage/`
- 运行 grub-install /dev/sda 命令【给主机硬盘修复grub全部启动操做】
- 使用交互式命令 grub
- 交互输入 root(hd#,#)【描述boot所在的硬盘编号,和硬盘里第几个扇区】
- setup(hd#) 安装便可
【grub 交互式命令来修复,依赖/boot/grub/stage1文件】
破环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配置文件】
启动第二阶段,grub.conf文件丢失或这损坏,第二阶段就没法启动。ide
#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
修复方法:ui
- 进入光盘挂载救援模式
- 切根 chroot /mnt/sysimage
- 进入/boot/grub里建立 grub.conf文件
default=0 timeout=5 title centos6 kernel /vmlinuz-VERSION.img ro【只读的意思,为了安全要加,加不加均可以】root=UUID=..【主机根目录】.... initrd /initramfs-VERSION.img
当/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 也能够
![]()
- blkid 命令 和 fdisk -l 命令 ,查看磁盘分区和UUID ,尝试找到 根 分区和 boot/ 分区,手动写 fstab 文件 。【看分区大小,或者 将分区挂载到文件目录,查看分区中的内容,判断分区是否为根】
- 简单写一下 fstab文件
- 重启启动,进入救援模式,能够挂载上根了。
- 后续恢复方法,同/boot 被清空的 修复方式同样便可。
- 在开机,进入系统内核选择菜单,按 e 键 ,在选中内核 按e键, 在最后,添加 init=/bin/bash ,用 bash替代init,而后保存 继续启动。
- 这时候,进入的是根的 只读挂载模式 使用 mount -o remount,rw / 从新挂载根,读写权限。
- 将光盘挂载,而后使用 rpm -ivh /mnt/Packages/upstart-xxxxxxx.rpm --force 强制安装 init 进程程序的包。便可[可tab 补全]