/系统引导过程概述:
下面会分 个实验 模仿启动环节某些东西丢失的情况。
本次实验在desktop虚拟机上做,虚拟机的/和boot都在/dev/vda1上。
一、硬盘引导缺失
1.模拟问题的产生:
dd if=/dev/zero of=/dev/vda bs=446 count=1 #将mbr主引导记录破坏掉
2.重启后的界面,无反应
3.如何解决?
(1)将Boot Options中的IDE CDROM1调至第一位,用光盘启动,并修复。
顺序调好后点击Apply,会提示你关机才生效,先关机再更改Boot Options。
(2)再次开机,选择红框所在行并回车
选择Troubleshooting
选择拯救系统选项
选择continue
点击ok
点击OK
(3)进入系统中的bash【chroot /mnt/sysimage】
(4)启动分区所在硬盘【grub2-install /dev/vda】
(5)两次exit退出保存
(6)重新在关闭虚拟机状态下更改Boot Options为VirtIO Disk1,并Apply。
(7)再次重启,即可恢复正常
二、文件引导丢失
1.模拟问题的产生
rm -rf /boot/grub2/grub.cfg
2.重启后的界面
3.如何解决?
第一种情况:删除后系统没有重启
grub2-mkconfig > /boot/grub2/grub.cfg #利用命令生成即可
第二种情况:删除后重启了
(1)set root= ' hd0,msdos1' #此位置不固定,位置指定boot所在分区【0表示第一块盘a盘,1表示a盘的第一块,看boot的路径】
(2)linux16 /vmlinuz-3.10.0-514.el7.x86_64 ro root =/dev/vda1 #root=?,要看根/的路径
或者
linux16 /boot/vmlinuz-3.10.0-514.el7.x86_64 ro root =/dev/vda1 #当根和boot没分开的时候,需要/boot/,否则补不全
(3)initrd16 /initramfs-3.10.0-514.el7.x86.img
或者
initrd16 /boot/initramfs-3.10.0-514.el7.x86.img #当根和boot没分开的时候,需要/boot/,否则补不全
4.boot #重启
经恢复后,系统可以正常启动了,不过为了防止重启后再次修复引导文件,在命令行将引导文件生成。
grub2-mkconfig > /boot/grub2/grub.cfg
系统再次重启后就不会再让修复引导文件。
三、内核丢失
1.模拟问题的产生
rm -rf /boot/vmlinuz-3.10.0 #删除内核
2.重启后的界面
显示内核文件找不到了
3.如何解决?
(1)在虚拟机关闭状态下。更改Boot Options 为镜像优先,并启动。
(2)Troubleshooting
(3)Rescue系统
(4)系统问你是否将你的linux系统挂载到/mnt/sysimage下,选continue,恩挂
(5)点击ok得到shelll–点击2次ok
(6)执行恢复命令
1. chroot /mnt/sysimage #进入系统的bash
2. mount /dev/cdrom /media/ #挂载光盘到/media
3. cd /media/Packages
4. cp kernel-3.10.0-123.el7.x86_64.rpm /mnt
5. cd /mnt
6. rpm2cpio kernel-3.10.0-123.el7.x86_64.rpm |cpio -id #解压
7. ls 可查看boot
8. cd boot/
9. cp vmlinuz-3.10.0-514.el7.x86_64 /boot
10.exit
11.exit退出保存
(7)在虚拟机关闭状态下。更改Boot Options 为VirtIo Disk1优先,并重新启动。
(8)完成。
四、初始化镜像文件丢失
1.模拟问题的产生
rm -rf /boot/initramfs-3.10.0-514.el7.x86_64.img #删除镜像文件
2.重启后的界面
3.如何解决?
第一种情况:删除后系统未重启
mkinitrd /boot/initramfs-3.10.0-123.el7.x86_64.img 3.10.0-123.el7.x86_6 #恢复指令
删除后,文件丢失
指令恢复:
第二种情况:删除后系统重启
(1)在虚拟机关闭状态下。更改Boot Options 为镜像优先,并重新启动
(2)进入Troubleshooting
(3)进入拯救模式
(4)continue —>ok-------ok
(5)恢复镜像初始化文件
1. chroot /mnt/sysimages/ #进入系统中的bash
2. mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) #重新恢复
3. exit
4. exit
(6)在虚拟机关闭状态下。更改Boot Options 为VirtIO优先,并重新启动。
(7)修复成功,可正常开启
五、更改开机启动项
在/etc/systemd/system/multi-user.target.wants/
有各种服务
设置某些服务的开机自启和开机不启动(比如sshd),其实就是在multi-user.target.wants下创建和删除(sshd.service):
1.模拟问题的产生,把系统开机时默认指向的图形化更改为反复重启:
1. cd /etc/systemd/system/
2. ll default.target #查看开机时默认是指向哪里
3. systemctl set-default reboot.target #制造问题
4. reboot
2.重启后的界面
这两个界面反复交替进行,就是不能正常启动。
3.如何解决?
因为开机默认指向是reboot,而不是图形化界面,所以一直重启并且没有图形化。
(1)解决:在进入显示开机系统信息界面按e进入编辑模式,并在系统启动行的最后加5
(2)在系统启动行的最后加5,并Ctrl+x开始。
即可正常进入
(3)为了避免下次重启时反复重启问题发生systemctl set-default graphical.target