1.15 Linux系统引导过程及引导修复

以下操作均在Windows虚拟机下完成

CD-ROM Device启动系统

一般情况下,我们都是从硬盘的启动,直接进入

那么如何调整启动设备

Windows虚拟机操作:如何从光盘启动

方法一:临时设定(手速)
用光盘CD里的资源修复虚拟机

  1. 出现VMware,按【Esc】键:进入系统启动设备选择列表
  2. 选择CD-ROM Drive:从光盘启动

方法二:永久设定

  1. 选择【打开电源时进入固件】
  2. 选择Boot
  3. 按【-】或【+】键,将CD-ROM Device 调整到列表的最上面(用+或者-,调整设备启动顺序)
  4. 保存以上操作:按【F10】键(默认从光盘启动)

(如果想要从硬件启动,则恢复,
如果需要从硬盘启动仍然需要进入bios重新调整)
在这里插入图片描述在这里插入图片描述在这里插入图片描述恢复硬盘启动系统
在这里插入图片描述在这里插入图片描述
Linux虚拟机操作:如何从光盘启动

永久设定:

  1. 输入命令,打开虚拟机管理器 virt-manager
  2. 点击【灯泡】标志,一般情况下是默认没有光驱
  3. 添加光驱,【Add Hardware】
  4. 点击第一行【stronge】,写入共享目录(镜像)的路径选择【CD-ROM Device】,类型是【SATA】
  5. 在【SATA CDROM1】中写入镜像的路径
  6. 在【Boot Options】中选择【CD-ROM Device】将CD放到最上面
  7. 【Apply】
    在这里插入图片描述在这里插入图片描述

Q:从硬件启动和CD启动,有什么区别?
A:从光盘CD启动系统:读取光驱的信息启动。从硬件启动系统:最开始硬盘是没有数据的,从CD 读取后才有了数据

系统挽救模式

#查看设备分区
fdisk   -l
#/dev/sda1    *   代表设备上有引导记录,有mbr记录
#清空系统/dev/sda上的mbr数据
dd  if=/dev/zero  of=/dev/sda  bs=446  count=1
#dd:截取命令
#if=/dev/zero:截取模板
#of=/dev/sda:存放数据的位置
#bs=446:数据块的大小
#count=1:截取块的个数
#看清  *  所在的位置是/dev/sda

Booting:当系统引导程序被破坏,系统无法识别重启的位置,重启不了系统
在这里插入图片描述
在这里插入图片描述

解决方法:

  1. 关机;
  2. 从CD启动系统;
  3. 选择【Troubleshooting】
  4. 【Rescue a Red Hat Enterprise Linux system】进入挽救模式
    (1)Contiue:进入挽救模式
    (2)Read-only mount:只读
    (3)Skip to shell:不挂载
    (4)Quit(Reboot):退出
  5. 选择(1)
  6. 回车:转换真实系统,从光驱到真实系统的磁盘中;得到一个shell
  7. 键入命令 chroot /mnt/sysimage :切换到真实系统,/mnt/sysimage是真实的原来的系统的存放目录
  8. fdisk -l:有 * 的是设备引导分区
  9. grub2-install /dev/vda:安装mbr到/dev/sda上,引导分区的设备
  10. 显示结果 No error ,表示成功
  11. 调整启动顺序,【打开电源时进入固件:选择Hard Device】,从硬盘启动
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

Q:fdisk -的显示结果,l看 * 所在的设备是/dev/sda1,在写grub2-instal /dev/sda l命令的的时候不需要给sda加1吗?
A:订正!sda1是分区,sda是设备,要安装mbr到设备上

修复系统引导文件

cd  /boot/loader/entries/
#引导文件丢失,可以手动引导恢复
rm -fr  /boot/loader/entries/*    
#确定根分区所在的设备,确定boot分区所在的系统设备
#sda1是boot分区,sda3是根分区
df  

在这里插入图片描述在这里插入图片描述

#引导文件丢失,无法完成自动引导,需要手动恢复
#加载硬盘:第一块硬盘,指定引导分区的设备,指定引导分区的位置是第一块设备,第二个是指第一个硬盘(sda1)的第一个分区中
set root='hd0,msdos1'  
#root:指定引导设备;
#hd0:指定引导分区的位置为第一块硬盘;
#msdos1:指定引导分区在第一块硬盘的第一个分区

Linux16   /vmlinuz-4.18.0-193.el8.x86_64 ro root=/dev/sda3
#ro:只读;
#root=/dev/sda3:根分区的位置

initrd  /initramfs-4.18.0-193.el8.x86_64.img
boot
#回车,系统自行启动

指定系统启动分区
在这里插入图片描述在这里插入图片描述在这里插入图片描述

  1. 恢复引导文件
进入系统,并不代表系统引导已经恢复,那些文件依旧不存在
ls  /boot/loader/entries
#恢复那些引导文件
#查看内核版本,4.18.0-193.el8.x86_64
uname  -r

在这里插入图片描述在这里插入图片描述

#出现报错
kernel-install add 4.18.0-193.el8.x86_64   /boot/vmlinuz-4.18.0-193.el8.x86_64
#提示报错:系统安装好后,会在/usr。。。。下产生这个文件
#解决报错:把该文件复制到/boot下
cp  /usr/lib/modules/4.18.0-193.el8.x86_64/bls.conf  /boot/
#第二次尝试,成功
kernel-install add 4.18.0-193.el8.x86_64   /boot/vmlinuz-4.18.0-193.el8.x86_64
ls   /boot/loader/entries/
#引导文件存在

在这里插入图片描述在这里插入图片描述在这里插入图片描述

修复内核文件

#内核文件在/boot
ls  /boot
#删除vmlinuz内核文件,reboot系统无法启动
rm -fr  vmlinuz-4.18.0-193.el8.x86_64.img
reboot

在这里插入图片描述

【打开电源时进入固件:选择CD Device】

#进入挽救模式:光盘引导
#选择(1)
#回车
#进入硬件
chroot  /mnt/sysimage/
#挂载光驱
mount /dev/cdrom   /media/
cd  /media/BaseOS/Packeags
#复制内核安装包到/mnt
cp  kernel-core-4.18.0-193.el8.x86_64.rpm     /mnt/  
cd  /mnt
rpm2cpio  kernel-core-4.18.0-193.el8.x86_64.rpm  |  cpio  -id
ls
cd lib/
ls
cd  modules/
ls
cd  4.18.0-193.el8.x86_64/
ls
#找到需要的内核文件名称vmlinuz
cp  /mnt/lib/modules/4.18.0-193.el8.x86_64/vmlinuz  /boot/vmlinuz-4.18.0-193.el8.x86_64
#两次exit
exit
exit
系统重启,还需要调整

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述断电
【打开电源时进入固件:选择Hard Device】
hard device硬盘启动(不是蓝色)
(进度条:selinux开启,等待)
在这里插入图片描述

修复系统初始化镜像文件

加载内核完毕后,生成一个加载的文件:系统初始化镜像文件
它丢失后,系统仍旧无法启动

【打开电源时进入固件:选择CD Device(蓝色)】

#进入挽救模式
#选择(1)
#回车
#进入真实系统硬件
chroot  /mnt/sysimage/
#得到一个shell
cd  /boot
ls
#可以查看说明mkinitrd  --help
mkinitrd  /boot/initramfs-4.18.0-193.el8.x86_64.img  4.18.0-193.el8.x86_64
ls  /boot
生成成功
exit
exit

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
断电
【打开电源时进入固件:选择Hard Device(灰色)】

#启动系统
cd  /boot
ls
初始化镜像文件生成完成

在这里插入图片描述在这里插入图片描述在这里插入图片描述

Q1:chroot /mnt/sysimage/
A1:挽救模式是从光盘启动,不是在硬盘。chroot之后,才可以进入真实系统(硬盘)。

Q2:为什么sysimage后面要加/
A2:可加/,可不加/,系统会自己去设别。一般,不加/,是文件;加上/,是目录。

Q3:后面加/是bash,不加是sh,有什么区别吗
A3:sh和bash是两种不同的shell

系统启动脚本

  1. 读取系统的启动级别
#系统启动脚本在此目录中
cd  /etc/systemd/system/
ls
#系统启动级别的链接default.target
#系统所有服务的启动脚本multi-user.target.wants
cd  multi-user.target.wants/
ls
#都是一些链接,比如:sshd.service

在这里插入图片描述在这里插入图片描述

  1. 系统服务开机启动方式的原理:
    关闭sshd:systemctl disable --now sshd将/etc/systemd/system/muli-user.target.wants目录中的sshd.service子链接移出目录
    开启sshd:systemctl enable --now sshd将链接sshd.service添加到multi-user.target.wants
    (无关:Remove:输出)
    在这里插入图片描述在这里插入图片描述
#启动级别记录在/etc/systemd/system/default.target(链接)
ll   /etc/systemd/system/default.target
#进入无线重启模式:一直重启
systemctl  set-default  reboot.target
reboot

在这里插入图片描述在这里插入图片描述

  1. 操作:怎么挽救无线重启模式
    (1)【硬件启动(灰色)】
    (2)按【e】键,进入编辑模式
    (3)编辑第4行,修改系统启动级别为5(图形:5,无图形:3),写入5,换行符自动生成(0,关机,6重启)
    (4)【ctrl+x】键

在这里插入图片描述在这里插入图片描述

  1. 下次开机依旧会无限重启,所以完成以下操作
    进入系统,执行命令
systemctl  set-default  graphical.target
reboot

(无关:find / -name *.iso,找文件)
在这里插入图片描述

超级用户密码忘记

超级用户密码忘记:系统单用户去破解

  1. 断电
    (1)【硬件启动(灰色)】
    (2)【e】键,进入编辑模式
    (3)ro改成:rw rd.break:ro是指只读,rw是读写,从只读挂载根设备变成读写挂载,rd.break:系统内核加载完成之后,终止系统启动
    (4)【ctrl+x】启动
    在这里插入图片描述在这里插入图片描述
#进入系统单用户模式,当前模式,默认使用root用户root:switch_root:/#
#转换成真实系统的shell
chroot  /sysroot/
#自动开启一个shell
#设定超级用户密码
echo  westos123  |  paswd  --stdin  root
touch  /.autorelable
#让系统中内核级加强型防火墙selinux重新初始化,若更改密码后selinux未被重新初始化,会阻止新密码生成
(此操作只在selinux开启的情况下进行)

(无关:去机房破解,因为有防火墙 —— 物理安全)
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_47133613/article/details/113357982