linux系统下的引导过程和修复

一、如何从光盘启动

在windows的vm虚拟机:
在点开开启虚拟机后,在界面出现vmware时按esc键,进入启动设备选择列表,选择CD-ROMDrive,即从光盘启动(因为开启过程很快速,所以需集中精神)
在这里插入图片描述
在这里插入图片描述
若手速不够快,点击菜单栏选择开机旁边的选项,选择打开电源时进入固件,进入boot界面,选择CD-ROMDrive即可(选择时+表示向上移动,-表示向下移动,把此选项放于第一个表示选它作为第一种启动顺序,按F10保存并退出)
#但注意,此方式会使得每次进入都是从光盘启动,若需回到从硬盘启动,仍需进入调整,将hard drive放于第一个即可)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
linux系统中:
输入virt-manager
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、当系统引导程序被破坏

fdisk -l #查看设备
在这里插入图片描述

#此中的/dev/sda代表设备名称
#dev/sda1、2、3代表分区,*代表设备上的mbr记录

dd if=/dev/zero of=/dev/sda bs=446 count=1
#截取命令,if指的是截获模板,of后是存放数据位置,bs后是数据大小,count 后是截取块数
#从系统的无线0字节中截取一块大小为446byte 的数据放到sda硬盘中
在这里插入图片描述
此时会发现重启无法进行引导,因为系统引导程序被破坏,系统无法识别从哪里开始读取数据

恢复:
1、此时应该先关机,然后从光盘启动
2、先选择Troubleshooting,enter进入,再选择第二个Rescue系统,enter进入系统挽救模式。
在这里插入图片描述
在这里插入图片描述

此时看到的四个选项意为:
1)进入挽救模式
2)只读进入挽救模式
3)直接得到shell,不挂载
4)退出
在这里插入图片描述
4、选择第一个
在这里插入图片描述

5、输入
chroot /mnt/sysimage/ #转换系统从光驱到真实的磁盘之中
在这里插入图片描述
6、输入
grub2-install /dev/vda
#安装mbr ,其中的dev/vda是有引导分区的设备名称,可根据自己主机的真实情况来定
在这里插入图片描述
#看到no error reported表示成功

7、调整启动顺序,从硬盘启动,此时可看到引导文件表示引导程序已经修复
在这里插入图片描述

三、引导文件丢失

/boot/loader/entries/ #子引导文件所在目录
可以先删除子引导文件xxxx.conf
在这里插入图片描述

df
找到根分区所在系统设备,boot分区所在系统设备
在这里插入图片描述
此时重启出现grub
说明引导文件丢失,需手动填写引导信息
在这里插入图片描述

修复:
1、开机
2、输入
set root=‘hd0,msdos1’ #root指定引导设备,hd0指定引导分区的位置为第一块硬盘
#msdos1指定引导分区在第一个硬盘的第一个分区之中(这些可根据自己系统而确定)
#总体是指定系统启动分区
在这里插入图片描述
3、输入(可用tab)键补齐
linux16 /vmlinuz-4.18.0-193.el8.x86_64 ro root=/dev/vda3
#linux16 /vmlinuz-4.18.0-193.el8.x86_64指定系统内核文件,ro指只读挂载,root=/dev/vda3指挂载根分区设备
#整体是指定系统启动内核,只读挂载分区
在这里插入图片描述
4、输入
initrd16 /initramfs-4.18.0-193.el8.x86_64.img
#加载系统初始化镜像
在这里插入图片描述
5、引导完成,重新启动
boot
在这里插入图片描述
6、uname -r #看系统内核版本
在这里插入图片描述

此时仍能看到/boot/loader/entries/下仍是没有引导文件
在这里插入图片描述
7、用dnf whatprovides */bls.conf
#查找bls文件位置在哪里
或者直接复制
cp /usr/lib/modules/4.18.0-193.el8.x86_64/bls.conf (tab补齐) /boot/
在这里插入图片描述
8、kernel-install add 4.18.0-193.el8.x86_64 /boot/vmliunz-4.18.0-193.el8.x86_64 #添加引导文件
在这里插入图片描述
9、可看到引导文件恢复成功,而且系统改成硬盘启动,重启没有任何问题
在这里插入图片描述
/boot/grub2/grub.cfg #总引导文件
不小心删除总引导文件

恢复:
重启后状态和删除子引导文件状态同,同样需要手动引导,reboot后
在系统执行grub2-mkconfig > /boot/grub2/grub.cfg可恢复
在这里插入图片描述

四、删除内核文件

vmlinuz- 4.18.0-193.el8.x86_64 #为内核文件
在这里插入图片描述
此时系统因为缺少内核文件不能开机:
在这里插入图片描述
修复:
1、用光盘启动,进入挽救模式,然后转换系统从光驱到真实的磁盘之中
在这里插入图片描述
在这里插入图片描述
2、输入
mount /dev/cdrom /media/ #挂载仓库
cd /media/BaseOS/Packages/
cp kernel-core-4.18.0-193.el8.x86_64.rpm /mnt/ #复制内核安装包到/mnt/之中
在这里插入图片描述
3、cd /mnt/
rpm2cpio kernel-core-4.18.0-193.el8.x86_64.rpm | cpio -id #解压内核安装包
在这里插入图片描述
4、cd lib/
cd modules/
cd 4.18.0-193.el8.x86_64/
ls #此时可查看到内核文件vmlinuz
在这里插入图片描述
6、
ls /boot/loader/entires/
#此时可以查看到一个.conf的文件(每台电脑不一样)
cat /boot/loader/entires/xxxxxxxxxxx.conf #查看此文件,可以看到内核文件的名称
在这里插入图片描述
7、cp /mnt/lib/modules/4.18.0-193.el8.x86_64/vmlinuz /boot/内核文件的名称
#注意此处填入的内核文件的名称,应该和你在上面查看到的一摸一样
在这里插入图片描述
在这里插入图片描述

8、填入exit两次退出,改成硬盘启动重启,此时系统可正常开启,可查看/boot/下,已有内核文件存在
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、删除系统初始化镜像

系统初始化镜像在/boot/下,名称后缀为.img
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修复:
1、仍需进入挽救模式,进入真实主机
在这里插入图片描述
2、可直接求助
mkinitrd --help
在这里插入图片描述
3、利用上面求助得到直接生成
mkinitrd /boot/initrafms-4.18.0-193.el8.x86_64.img 4.18.0-193.el8.x86_64
#使用命令直接生成
4、ls /boot/
能看到已经生成的文件
在这里插入图片描述
5、改成硬盘启动,此时能正常开启
在这里插入图片描述
在这里插入图片描述

六、系统启动级别

0 #关机
1 #单用户
2、3、4 #无图形网络模式
5 #有图形网络模式
6 #重启

/etc/systemd/system/
#存放系统启动脚本
在这里插入图片描述

/etc/systemd/system/default.target
#系统启动级别的脚本链接

/etc/systemd/system/multi-user.target.wants
#系统所有服务的启动脚本链接
#当我们设定服务开机启动或不启动时,系统会在/etc/systemd/system/multi-user.target.wants中添加或删除软连接
#系统开机启动服务原理
在这里插入图片描述
设置让系统开机后进入无限重启模式
systemctl set-default reboot.target
在这里插入图片描述
reboot之后,发现系统一直在重启
在这里插入图片描述

修复:

1、在启动首页面按e,进入编辑模式
在这里插入图片描述

2、可看到编辑界面一共五行
在第四行最后面,可以指定启动级别,输入5
#更改系统启动级别为五
按ctrl和x
在这里插入图片描述
3、此时可以进入系统,执行
systemctl set-default grapical.terget
在这里插入图片描述
在这里插入图片描述
4、此时重启可看到问题被解决

七、超级用户忘记密码

修复:
1、关机,仍是在启动首页面按e进入编辑模式,在第四行,将ro换成rw(从只读挂载设备,变成读写挂载设备)
rd.break #在系统内核加载完成后终止系统启动
在这里插入图片描述
2、按ctrl 加x,进入单用户模式(此时模式下默认root用户登录)
在这里插入图片描述
3、执行chroot /sysroot/
进入真实系统shell
4、执行
echo westos | passwd --stdin root
#更改密码为westos
在这里插入图片描述
5、执行
touch /.autorelabel
#让系统中内核级加强型火墙(selinux),重新初始化,如果更改密码后selinux未被重新初始化会阻止新密码生效(注意此操作只有在selinux开启时需要)
在这里插入图片描述
6、按两次exit退出
在这里插入图片描述
7、此时可输入自己更改的密码进入系统

猜你喜欢

转载自blog.csdn.net/shanshuyue/article/details/113387986