一、系统启动的过程:
通电
bios初始化
grub2磁盘引导阶段
grub2文件引导街道
指定boot所在分区
启动内核,只读挂载/设备
启动init程序进入初始化阶段
启动systemd初始化进程
读取/etc/systemd/中的文件
启动程序
启动登录环境
grub文件引导阶段
由文件/boot/grub2/grub.cfg控制流程
指定/boot分区位置——>加载内核——>启动系统初始化进程——>grub2-mkconfig
内核引导阶段
检测硬件设备——>设备驱动初始化——>将/只读挂载——> 载入初始化进程systemd——>内核文件丢失请重新安装内核
systemd初始化
开启selinux和systemd-tools——>加载内核参数——>加载系统时钟,键盘,主机名称——>读写挂载/文件系统——>激活raid,lvm设备——>激活系统配额——>启动multi-user.target.wants中的所有服务脚本——>启用虚拟控制台——>启动图形
二、系统启动出错恢复
我们在进行系统恢复之前,首先需要准备好与系统版本相同的系统镜象文件,
使用hostnamctl查看当前使用系统的版本:
因此我们需要准备红帽企业7.0的系统镜象
1.首先我们需要了解本机的mbr存放位置,使用fdisk -l:
带*的设备即为mbr所在位置:/dev/vda1,这个位置我们需要记住
使用命令破坏/dev/sda前446字节引导
dd if=/dev/zero if=/dev/sda bs=446 count=1
开机无法引导系统
关闭虚拟机,加入iso镜像光盘,设置从光驱启动
步鄹:
Troubleshooting 系统修复
Rescue a Res Hat Enterprise Linux system 选择挽救模式
选择continue:
在救援模式中,我们系统的/分区是挂载在/mnt/sysimages/下的
选择ok
此时,我们就进入了救援模式:
chroot /mnt/sysimage 在光盘启动的shell中/mnt/sysimage是系统的根目录
grub2-install /dev/vda 将grub引导安装在/dev/vda的mbr位置上,成为主引导记录
执行两次exit退出
关闭虚拟机后
从硬盘启动,
恢复成功
2.引导文件/boot/grub2/grub.cfg丢失
initramfs-3.10.0-123.el7.x86_64.img 内核初始化镜像文件
vmlinuz-3.10.0-123.el7.x86_64 系统内核
grub.cfg 引导文件
vim /boot/grub2/grub.cfg
用磁盘启动server
用命令完成grub引导也可以启动系统,直接在grub>后面执行:
set root='hd0,msdos1' 根据自己的boot分区
linux16 /vmlinuz-3.10.0-123.el7.x86_64 root=/dev/vda1 #这里要写根目录所在的设备名称
initrd16 /initramfs-3.10.0-123.el7.x64_64.img
boot
完成引导,执行这条命令回到系统启动过程
启动成功后执行grub2-mkconfig > /boot/grub2/grub.cfg恢复即可
3.内核丢失
vmlinuz-3.10.0-123.el7.x86_64
无法启动
进入救援模式:
查看系统镜像是否 挂载:
在镜象中找到内核的安装包复制到/mnt/目录下:
将安装包拆解:
找到内核,将内核复制回/boot:
查看
cd /mnt/sysimage/mnt
rpm2cpio /run/install/repo/Packages/kernel-3.10.0-123.el7.x86_64 | cpio -id
cd boot #将镜像中内核相关的软件包分离出来,包的数字版本视系统版本而定
cp vmlinuz-3.10.0-123.el7.x86_64 /mnt/sysimage/boot/
从硬盘启动,启动成功即可
4.初始化文件丢失
initramfs-3.10.0-123.el7.x86_64.img
无法启动
进入挽救模式
chroot /mnt/sysimage
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) #生成启动文件,uname -r命令可以查看系统版本号
执行两次exit,从硬盘启动成功即可
5.boot分区丢失
无法启动
进入挽救模式
重复以上操作
先恢复内核
在/mnt/boot中将内核复制回/boot:
2.内核初始化镜像文件恢复:
3.引导文件恢复:
两次exit后,从硬盘启动即可
6.开机启动级别被篡改
1.错误形成
systemctl set-default reboot.target ##将开机启动级别更改为重启,意味主机刚开启就会重启
2.解决方法
在开机的编辑界面临时更改启动模式
在开机读秒阶段,按e
编辑5表示以图形模式启动,按ctrl x进入到虚拟机中
正常开机后,再修改开机启动方式:
7.超级用户密码忘记
先更改超级用户密码
解决方法:在开机时更改超户密码
1.开机进入编辑界面,临时更改启动方式:
2.更改超户密码并退出:
此时可以使用新密码登陆超户