Linux系统引导及引导修复
1.通电
2.bios初始化
对硬件检测
初始化硬件时钟
3.磁盘引导
mbr=主引导记录=0磁道1扇区446
其作用是:记录grub2引导文件的位置
当mbr数据丢失系统会因为找不到启动分区而停止启动
系统引导过程中磁盘引导修复步骤:
fdisk -l ,可以看到系统的设备,下面有设备的分区
输入dd if=/dev/zero of=/dev/vda bs=446 count=1 ,dd表示截取命令,if表示截取模板,of表示存放数据位置(看‘ * ’所在的设备),bs表示数据块大小,count表示截取快的个数;该命令表示从系统的无限0字节中截取数据放到该硬盘中,截取1快大小为446字节,共截取一块。该命令会破坏系统的mbr
恢复:
输入dd if=/dev/zero of=/dev/vda bs=446 count=1 后,重启系统:系统坏掉
把下图中光盘放在前边
重启系统,从光盘启动。重新开机后,选择troubleshooting
选择第二行rescure,进入系统的挽救模式
进入后,可以看到说明处表示该模式可以找到系统并且把系统挂载到了/mnt/sysimage目录下。也就是真实的系统在硬盘里,把真实系统挂载在该目录下。下面的4个选项分别表示(选择1):继续进入挽救模式、只读进入挽救模式、直接开启shell、退出:
输入上图中给出的:chroot /mnt/sysimage命令
输入:grub2-install /dev/vda 表示安装mbr,安装成功后,会提示,no error reported:
修改vim /etc/selinux/config文件,避免初始化时间过长输入两次exit
重启系统的时候,还是会从光盘启动。要先关机,选择从硬盘启动,然后启动系统,即可修复磁盘引导:
修复成功:
4.修复系统初始化镜像文件
系统读完内核之后,就会加载系统初始化镜像
删除该文件
mkinitrd --help查看该命令用法
若没有重启系统,可以使用下图中命令进行恢复(该命令适用于任何版本的系统):
恢复成功:
若重启了系统(会进行报错):
关闭系统,通过光盘启动:
进入挽救模式,输入 chroot /mnt/sysimage/
输入mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)命令,看到如下所示,恢复成功
关闭系统,选择从硬盘启动。恢复成功。
5.恢复内核文件
cd /boot 就可以看到内核文件"vmlinux-版本号"
删除后会导致文件丢失
若没有重启系统,输入下图所示命令:
复制到 /boot中,即可恢复成功:
若重启了系统:
用光盘和之前一样操作进入挽救模式:
输入 chroot /mnt/sysimage,再输入如下图所示命令:
两次exit退出
换回硬盘模式启动,即可修复成功
6.破解超级用户密码
开机后按上下键停止住页面,然后按e进入编辑模式
将第四行的ro改成rw,再输入rd.break(表示从只读挂载根设备变成读写挂载)rd.break表示在系统内核加载完成后,终止系统启动:
ctrl+x启动系统,会自动进入单用户模式
当前模式下默认使用root用户登陆,输入chroot /sysroot进入真实系统;输入 echo xxx passwd --stdin root修改密码;修改完后要建立一个文件 touch /.autorelabel,作用是让系统内核级加强型火墙重新初始化,如果更改密码后,selinux未被重新初始化则会阻止新密码生效,注意,此操作只有在selinux开启时需要,一般建立上,防止出现问题;最后输入两次exit重启:
7.系统启动级别修复
输入cd etc/systemd/system/查看,系统启动脚本都在该目录中
该目录下的default.target 表示系统启动级别的链接
输入systemctl set-default reboot.target,系统开机时进入无限重启模式
使用上下健让页面停止在开机处,按e进行编辑,更改第四行,在第四行最后面指定系统启动级别为5
系统不再无限重启:
入系统后执行systemctl set-default graphical.target命令进行修复