linux系统引导过程和引导修复
如何从光盘启动(系统坏了可以从光盘修复)
- 在vmware中
方法1:此种方法进入光盘后,以后每次打开虚拟机都是这个界面。需要再次进入电脑固件进行修改,才能选择进入硬件。
方法2:
##出现这个界面点击ESC就会切换到光盘。
- 在linux中
点击要打开的虚拟机
点击灯泡
添加光驱
添加玩光驱后,进行选择。
启动。
通电
bios初始化
对硬件检测
初始化硬件时钟
磁盘引导
mbr光盘断电的时候,会收到零次,开电的时候,会跳到确定的扇区读取数据,mbr是为了让磁头跳到启动分区。
如果mbr出现问题,磁头没人支配,启动会停止。
mbr=主引导记录=0磁道1扇区446
作用:记录grub2引导文件的位置
当mbr数据丢失系统会因为找不到启动分区而停止启动
①如何看哪个设备有引导记录?
开启一个sheer,看一下fdisk -l 看设备分区 *代表设备上面有引导记录即mbr记录即引导分区。*在分区上显示,表示这个是启动分区,启动分区所在的设备为启动设备。
②如何删除这个mbr,问题模拟
Dd if=/dev/zero of=/dev/sda bs=446 count=1
从系统的无线零字节中,截取数据446个字节,一共截取1块,放到sda硬盘中。也就是说用一个白板,把前面446覆盖掉,前面的引导数据就没了。
Dd ##截取命令
if=/dev/zero ##截取模板
of=/dev/vda ##存放数据位置
bs=446 ##数据库大小
count=1 ##截取块个数
截取掉之后,重启后无法进行磁盘引导。系统重启就不太行了。
③如何解决?
关机。
选择从光盘启动。
再开启。
选择troubleshoot排错
选择rescu挽救系统。现在我们真实的硬件的东西在/mnt/sysimage这个下面挂载。
选择1
chroot /mnt/sysimage ##转换系统从光驱到真实系统的磁盘中
grub2-install /dev/vda ##安装mbr.
exit ##两次让虚拟机重启
我们还是会从光盘重启,此时我们应该调整我们的启动顺序,让他从硬盘启动。
grub2文件引导
开机时候的两行标题是系统引导文件中的内容。
/boot/loader/entries ##引导文件所在的目录,引导文件都在boot分区里面。
/boot/grub2/grub.cfg ##Grub是主引导文件,主引导文件引导这两个文件发生作用。
模拟文件丢失:
在此目录中删掉这两个引导文件就会丢失引导文件,电脑没办法自动引导,因此我们要手动进行引导。前提是必须知道根分区和boot分区所在设备名称。
解决方法:
①手动添加
set root=’hd0,msdos1’ ##指定系统启动分区
#Msdos1:指定引导分区在第一块硬盘的第一个分区
#Set root :指定引导分区设备
#Hd0:指定引导分区的位置为第一个硬盘。
Linux16 /vmlinuz-4.18.0-193.e18.x86_64 ro root=/dev/vda3
##启动内核,只读挂载根分区,
initrd16 /initramfs-4.l8.0-193.el8.x86_64.img
##指定系统初始化的设备,加载系统初始化镜像,引导完成启动系统
boot
②系统启动后不代表系统引导修复了,用命令
Cd /boot/loader/entries ##切换到引导文件的目录
kernel-install 内核版本 内核镜像
uname -r ##查看内核版本
##当回复引导文件时报错文件缺失。其实我们系统中有这个/boot/bls.conf,但是现在没有。
③解决
cp /usr/lib/modules/4.18.0-187.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 ##查看两个文件是否恢复成功。
reboot ##查看是否成功
内核加载
内核加载,初始化我们的时钟,硬件驱动,加载我们的根,只读挂在/设备
Cd /boot
vmlinuz-4.18.0-193.el8.x86_64 ##内核文件
模拟问题:
rm -rf vmlinuz-4.18.0-193.el8.x86_64 ##删掉内核文件
reboot ##重启失败
解决:
进入光驱的挽救模式
chroot /mnt/sysimage
mount /dev/cdrom /media ##挂载光驱
cd /media/BaseOS/Packages
cp ##复制内核安装包到mnt下面
cd /mnt
ls ##查看内核安装包
rpm2 ##对他解压
ls
cd lib/modules/4.18.0-193.el8.x86_64
ls ##找到内核文件
cd /boot/loader/entries
ls
cat xxx.conf ##此文件中记录了内核文件的名称
#linux: 这个就是内核文件的名称
cp /mnt/lib/modules/4.18.0-19 /boot/vmlinuz-4.18内核文件
exit ##两次
重启从硬盘启动
系统初始化镜像
系统启动完成后,会加载文件/boot/initramfs-4.18.0-193.el8.x86_64.img 对我们系统进行初始化.
加载系统时钟,加载selinux,加载系统主机信息,加载/etc/fstab文件中磁盘挂在策略,加载磁盘配额,初始化系统程序开启开机启动服务,开启虚拟控制台,开启图形
问题模拟:
cd /boot
rm -rf initramfs-4.18.0-193.el8.x86_64.img
解决问题:
Cd /boot
Ls
Mkinitrd --help ##根据提示输入命令
ls ##查看到文件已经生成
exit ##两次
系统启动级别
系统启动之后就读取系统的启动级别了。初始化完成后就会加载脚本和启动级别
0 关机
1 单用户
2 无图形网络模式
3 无图形网络模式
4 无图形网络模式
5 有图形网络模式
6 重启
/etc/systemd/system ##系统启动脚本都在此目录中
Ls
default.target #系统启动级别的脚本连接
multi-user.target.wants #系统所有服务的启动脚本连接
①当我们设置服务开机启动或者服务开机不启动时,系统会在/etc/systemd/system/multi-user.target中建立或者删除链接。
Systemctl disable sshd
Systemctl enable sshd
②启动界别设置为reboot,就是系统开机后无限进入重启模式。
Systemctl set-dafault reboot.target
Reboot看一下
提出问题:
如果系统一直重启,就是系统启动级别出现了问题,开始了无限重启。
解决:
在出现引导文件的时候,用上下键选定第一个,按e进入编辑模式。有五行。第四行比较长,在第四行后面指定启动级别。手动更改系统启动级别为5或者3,5有图形。更改完之后,ctrl x 去开启。
进入系统后, systemctl set-default graphical.target再次reboot
超级用户密码忘记
恢复:
1.在开机选择界面按进入到引导文件编辑模式
2.在内核加载选项最后删除到ro选项
3.更改ro---->rw ,从只读挂载根设备变成读写挂载
4.加入rd.break参数,在系统加载完成后终止系统启动进入单用户模式
5.ctrl+x启动
6.chroot /sysroot ,当前模式下默认使用root用户登录,进入到系统单用户模式
7.echo westos| passwd --stdin root
8.touch /.autorelabel ##当/.autorelabel文件存在,可以让系统中的selinux重新,如果更改密码后selinu没有重新初始化,会阻止新密码的生效,此操作只有在selinux开启时候需要。