Linux系统引导过程及引导修复
Linux系统引导过程及引导修复1 实验前准备2 磁盘引导1 实验前准备1)在linux中从光盘启动主机,打开虚拟机管理其,选择AddHardware如下图,在device type处选择CDROM,Manage处选择镜像文件,Bus type处默认是SATA不做更改,选择完成:2)添加完成后,硬件信息处出现光驱:3)点击boot options,选择boot device order处,勾选sa
Linux系统引导过程及引导修复
1 实验前准备
1)在linux中从光盘启动主机,打开虚拟机管理其,选择AddHardware如下图,在device type处选择CDROM,Manage处选择镜像文件,Bus type处默认是SATA不做更改,选择完成:
2)添加完成后,硬件信息处出现光驱:
3)点击boot options,选择boot device order处,勾选sata cdrom,选中,然后点击上键将光驱调在硬盘上面,点击右下角的apply,完成从光盘启动。这种方法是永久的,想从硬盘启动时,再按照上面的步骤,把硬盘调在光驱上面即可:
4)从光驱启动的界面:
5)恢复从硬盘启动:
从硬盘启动的界面:
2 磁盘引导
- mbr=主引导记录=0磁道1扇区446
- 其作用是:记录grub2引导文件的位置
- 当mbr数据丢失系统会因为找不到启动分区而停止启动
系统引导过程中磁盘引导修复步骤:
1)fdisk -l ,可以看到系统的设备,下面有设备的分区,设备的分区后面若有‘ * ’标志,表示该分区所在的设备上,是有引导记录的:
2)输入dd if=/dev/zero of=/dev/vda bs=446 count=1 ,dd表示截取命令,if表示截取模板,of表示存放数据位置(看‘ * ’所在的设备),bs表示数据块大小,count表示截取快的个数;该命令表示从系统的无限0字节中截取数据放到该硬盘中,截取1快大小为446字节,共截取一块。该命令会破坏系统的mbr,重启系统时,会导致系统无法进行磁盘引导,会出现显示“booting from hard disk”,然后没有下一步的情况。
3)关闭系统,然后从光盘启动。重新开机后,选择troubleshooting:
选择第二个rescure,进入系统的挽救模式:
4)进入后,可以看到说明处表示该模式可以找到系统并且把系统挂载到了/mnt/sysimage目录下。也就是真实的系统在硬盘里,把真实系统挂载在该目录下。下面的4个选项分别表示:继续进入挽救模式、只读进入挽救模式、直接开启shell、退出:
此处选择1,输入即可,显示一个命令: chroot /mnt/sysimage,表示转换系统从光驱到真实系统的磁盘中。直接回车,此时就会得到一个shell:
输入chroot /mnt/sysimage命令,切换到真实的系统:
5)输入:grub2-install /dev/vda 表示安装mbr,这里的磁盘是有引导分区的设备名称,可以直接在里面输入fdisk -l 查看哪个是引导分区的设备(带*的),安装成功后,会提示,no error reported:
6)输入两次exit即可重启系统,这里重启的时候,还是会从光盘启动。要先关机,选择从硬盘启动,然后启动系统,即可修复磁盘引导:
3 grub2文件引导
- 当开启系统时,会看到两行内容,这里的内容就是系统引导文件中的内容
- /boot/loader/entries/:引导目录所在的文件
- /boot/grub2/:也是引导文件,grub.cfg作为主引导文件,在引导过程中指定了两个子引导文件,也就是/boot/loader/entries/目录打开后,里面出现的两个文件,这两个文件打开后,里面分别是开机时,看到的那两个系统引导文件
- 实验环境准备:将/boot/loader/entries/目录下的两个文件都删除,此时会导致引导文件丢失
- 进行手动引导,必须要知道根分区(/dev/vda3)及boot分区(/dev/vda1)所在的系统设备
1)当文件引导丢失之后,启动系统就会出现grub>:
2)输入 set root=‘hd0,msdos1’,指定引导分区,root表示指定引导设备,hd0指定引导分区的位置是第一块硬盘,msdos1是指定引导分区在第一个硬盘的第一个分区:
3)输入linux16 /vmlinuz-内核版本 ro root=/dev/vda3,前面是内核版本,ro表示只读,root=/dev/vda3表示根分区的设备:
4)initrd16 /initramfs- tab补齐,加载系统初始化的镜像,然后输入boot,文件引导完成,启动系统:
系统启动之后,不代表就被修复了,这样之后每次启动时,都需要手动恢复,因为/boot/loader/entries/目录下的文件是没有被恢复的
5)进入系统后(输入uname -r可以看到内核的版本),输入 kernel-install add +内核版本 +/boot/vmlinuz-4.18(内核镜像),此时会报错;cp /usr/lib/modules/4.18.0-193.el8.x86_64/bls.conf /boot/ 解决文件缺失,然后再输入上面的kernel命令,最后重启系统即可:
4 内核加载
1)cd /boot 就可以看到内核文件"vmlinux-版本号",删除后会导致文件丢失,重启时系统无法启动:
2)从光盘和前面一样的操作进入挽救模式:
进入真实主机的shell:
3)挂载 mount /dev/cdrom /meida,进入 /meida/BaseOS/Packages,cp kernel-core-版本号 /mnt将内核的安装包复制到/mnt:
4)进入/mnt里面查看,对该安装包进行解压;解压完查看会出现lib目录,进入查看有一个modules目录,进入该目录查看:
5)进入/boot/loader/entries/目录中查看4.18那个文件,看内核的名字vmlinuz-4.18…… :
6)复制该内核文件到/boot,复制时,名字要和查看到的名字一致,复制完成输入两次exit退出。注意,e后面时l不是1:
7)完成后是从光盘启动,需要关机然后调整为成从硬盘启动,再重新启动系统即可:
5 系统初始化镜像
1)系统读完内核之后,就会加载系统初始化镜像,也就是/boot里面的initramfs-4.18.0-80.el8.x86_64.img
2)删除该文件后,reboot系统将出错:
3)进入挽救模式,输入 chroot /mnt/sysimage/进入真机:
4)进入/boot查看,可以使用mkinitrd --help查看该命令用法:
输入mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)命令,然后输入ls /boot,可以看到系统初始化镜像恢复,然后exit两次退出:
5)换回硬盘启动:
6 系统启动级别
1) /etc/systemd/system/,系统启动脚本都在该目录中:
该目录下的default.target 表示系统启动级别的脚本链接;multi-user.target.wants 表示系统所有服务的启动脚本链接。
2)系统开机服务启动的原理是当我们设定服务开机启动或不启动时,系统会在/etc/systemd/system/multi-user.target.wants中建立或删除链接
eg:[root@localhost system]# systemctl disable sshd
Removed /etc/systemd/system/multi-user.target.wants/sshd.service.
3)ls /lib/systemd/system/*.target,里面的链接0-6,分别表示:0-关机、1-单用户、2-无图形网络模式、3-无图形网络模式、4-无图形网络模式、5-有图形网络模式、6-重启:
4)systemctl set-default reboot.target,系统开机时进入无限重启模式:
5)使用上下健让页面停止在开机处,按e进行编辑,上下键选择:
首先按e进入编辑模式,显示的一共有5行:
更改第四行,在第四行最后面指定系统启动级别为5:
6)按下ctrl+x开启系统,进入系统后执行systemctl set-default graphical.target命令进行修复,然后重启检查是否修复成功:
7 超级用户密码忘记
1)开机按上下键停止住页面,然后按e进入编辑模式;将第四行的ro–>rw,再输入rd.break,表示从只读挂载根设备变成读写挂载,rd.break表示在系统内核加载完成后,终止系统启动:
2)ctrl+x启动系统,会自动进入单用户模式:
3)当前模式下默认使用root用户登陆,输入chroot /sysroot进入真实系统;输入 echo liu | passwd --stdin root修改密码;修改完后要建立一个文件 touch /.autorelabel,作用是让系统内核级加强型火墙重新初始化,如果更改密码后,selinux未被重新初始化则会阻止新密码生效,注意,此操作只有在selinux开启时需要,一般建立上,防止出现问题;最后输入两次exit重启:
更多推荐
所有评论(0)