1.系统启动流程
通电 ------> 启动init程序进入初始化阶段
| | |
bios初始化 | 启动systemed初始化进程
| | |
grub2磁盘引导阶段 | 取/etc/systemd/中的文件
| | |
grub2文件引导阶段 | 启动程序
| | |
制定boot所在分区 | 启动登陆环境
| |
启动内核,只读挂载设备 |
| |
--------------------------->
2.各个阶段出错时的解决办法
通电
||
bios(主板上的只读存储中,basic input or output system)
作用,硬件检测,激活硬件
||
grub系统引导(grub引导分为两个阶段)
1)阶段1 mbr(主引导记录)主引导记录在硬盘上的0磁道,一扇区,446个字节
*)dd if=/dev/zero of=/dev/vda bs=446 count=1 可以清空mbr
清空mbr的解决方案
virt-manager
双击server,添加IDE cdrom 在本地iso/选择7.0的虚拟机镜像-finish
关闭virt-manager再次进入,会看到cdrom被添加到硬盘,将BOOT OPINIONS添加cdrom,把cdrom默认顺序调整到第一个-apply
进入光盘启动模式,选择troubleshooting-->rescue....一路回车
*)进入到挽救模式,执行chroot /mnt/sysimage切换到真实环境,
并执行grub2-install /dev/vda
两次exit
在BOOT OPINIONS中将cdrom的顺序调整为最后一个
重新启动
(温馨提示:重启之前设置selinux=disabled,否则重启将非常慢)
2)阶段2 grub文件引导阶段
找到/boot分区
读取/boot/grub2/grub.cfg
文件丢失,grub2-mkconfig >/boot/grub2/grub.cfg
手动引导: set root='hd0,msdos1'
linux16 /boot/vmlinuz-3.10.0-327.el7.x86_64 ro root=/dev/vda1
initrd16 /boot/initramfs-3.10.0-327.el7.x86_64.img
boot
进入系统后需要grub2-mkconfig >/boot/grub2/grub.cfg,否则下次进入系统时还需手动引导
||
内核引导阶段
启动内核,只读挂载/设备
检测设备
对设备驱动进行初始化
进入系统初始化阶段
内核丢失,从新安装内核安装包就可以解决
rpm -ivh kernel-xxxxx.rpm --force
或
在镜像中找到kernel-3.10.0-123.el7.x86_64.rpm 安装包
复制到桌面
rpm2cpio kernel-3.10.0-123.el7.x86_64.rpm | cpio -id #解压 i=input d=dir
解压后的rpm有boot lib etc三个文件夹 其中内核文件在boot文件夹中
cp boot/vmlinuz-3.10.0-123.el7.x86_64 /boot/ #将内核文件复制到/boot
若丢失内核文件后重启,则需进入挽救模式
cd /run/install/repo #进入光盘中
cp Packages/kernel-3.10.0-123.el7.x86_64.rpm /mnt/sysimage/mnt #复制安装包到真实根下的mnt中
chroot /mnt/sysimage/ #切换到真实系统环境
rpm2cpio kernel-3.10.0-123.el7.x86_64.rpm | cpio -id #解压 i=input d=dir
cp /mnt/boot/vmlinuz-3.10.0-123.el7.x86_64 /boot/ #将内核文件复制到/boot
用硬盘重启
||
系统初始化阶段
系统初始化阶段加载initrd镜像
开启初始化进程systemd
开始selinux
加载内核参数
初始化系统时钟,键盘,主机名称
重新读写挂载/设备
激活raid,lvm
激活配额
启动multi-user.target.wants中的所有服务
开启虚拟控制台
启动图形
initramfs-`uname -r`.img丢失用:#uname查看内核版本号 ``表示优先运算 ``=$() $()兼容性更好
mkinitrd initramfs-`uname -r`.img `uname -r`
恢复
若丢失后关机则进入挽救模式切换到真实系统环境执行上述命令
若将shutdown设为了开机自启动,如下
systemctl set-default shutdown.target
在进入系统时按上下键编辑 在linux16那一行行尾加入5 设定开机启动级别
systemctl set-default graphical.target #恢复默认开机启动级别
启动级别
runlever0.target-->poweroff.target
runlever1.target-->rescue.target
runlever2.target-->multi-user.target
runlever3.target-->multi-user.target
runlever4.target-->multi-usertarget
runlever5.target-->grapical.target
runlever6.target-->reboot.target