磁盘引导
mbr表示主引导记录,位置在0磁道1扇区,大小为446字节,如下图:
mbr作用:
记录grub2引导文件的位置
当mbr数据丢失系统会因为找不到启动分区而停止启动
问题模拟方式
[root@localhost Desktop]# fdisk -l 查看磁盘系统磁盘哪个带*相应的设备上就有mbr主引导区
Disk /dev/vda: 8 GiB, 8589934592 bytes, 16777216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x657e7edc
Device Boot Start End Sectors Size Id Type 可以看出有mbr主引导区的设备是 /dev/vda
/dev/vda1 * 2048 1026047 1024000 500M 83 Linux
/dev/vda2 1026048 2050047 1024000 500M 82 Linux swap / Solaris
/dev/vda3 2050048 16777215 14727168 7G 83 Linux
[root@localhost mnt]# dd if=/dev/zero of=/dev/vda bs=446 count=1 将mbr主引导区的数据清空,系统会因为找不到启动分区而停止启动
[root@localhost mnt]# dd if=/dev/vda of=/mnt/mbrfile bs=446 count=1 截取数据
1+0 records in
1+0 records out
446 bytes copied, 0.000127563 s, 3.5 MB/s
[root@localhost mnt]# hexdump -C /mnt/mbrfile 查看截取数据,全部是0,说明mbr数据已经被清空
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000001b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0a |...............|
000001bf
清空后重启系统,系统就会显示如下界面
恢复方式:
添加一个光盘,如下图
从光盘启动
进入挽救模式
2、grub2文件引导(启动文件)
/boot/grub2/grub.cfg 主启动文件
/boot/loader/entries/xxxxxxxxx.conf 标题启动文件
作用:指定/boot位置
指定系统启动时加载文件名
模拟问题1:
rm -fr /boot/loader/entries/xxxxxxxxx.conf 删除,系统重启就会出问题
修复方法(在没有重启之前可以修复):
[root@localhost modules]# cp /usr/lib/modules/4.18.0-193.el8.x86_64/bls.conf /boot/ bls.conf将模板文件拷贝到boot里
[root@localhost entries]# kernel-install add $(unam -r) /boot/vmlinuz-4.18.0-193.el8.x86_64
内核版本号 内核镜像
手动引导(重启系统和之后需要重新引导)
[root@localhost Desktop]# df 首先必须查看/分区所挂载的设备,为/dev/vda3
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 392292 0 392292 0% /dev
tmpfs 419148 0 419148 0% /dev/shm
tmpfs 419148 6812 412336 2% /run
tmpfs 419148 0 419148 0% /sys/fs/cgroup
/dev/vda3 7353344 4459724 2893620 61% /
/dev/vda1 506528 216728 289800 43% /boot
tmpfs 83828 1180 82648 2% /run/user/42
/dev/sr0 8238560 8238560 0 100% /run/media/root/RHEL-8-2-0-BaseOS-x86_64
tmpfs 83828 20 83808 1% /run/user/0
cd /boot 先切换到/boot看有没有模板文件 bls.conf
[root@host boot]# ls
config-4.18.0-193.el8.x86_64
efi
grub2
initramfs-0-rescue-105326b025324973babc920ed9b5428e.img
initramfs-4.18.0-193.el8.x86_64.img
initramfs-4.18.0-193.el8.x86_64kdump.img
loader
System.map-4.18.0-193.el8.x86_64
vmlinuz-0-rescue-105326b025324973babc920ed9b5428e
vmlinuz-4.18.0-193.el8.x86_64
[root@host boot]#cp /usr/lib/modules/4.18.0-193.el8.x86_64/bls.conf /boot/ #没有则把模板文件复制过来
[root@localhost boot]# kernel-install add $(uname -r) /boot/vmlinuz-4.18.0-193.el8.x86_64 执行
模拟问题2:
删除主引导文件:
root@localhost grub2]# rm -fr grub.cfg 删除主引导文件
root@localhost grub2]# reboot
修复方法:
[root@localhost boot]# cd /boot/grub2/
[root@localhost grub2]# ls
device.map fonts grubenv i386-pc
[root@localhost grub2]# grub2-mkconfig > /boot/grub2/grub.cfg
Generating grub configuration file ...
done
[root@localhost grub2]# ls
device.map fonts grub.cfg grubenv i386-pc
3、内核加载
问题出现:
[root@localhost boot]# rm -fr vmlinuz-4.18.0-193.el8.x86_64 删除内核
恢复:
进入挽救模式:
输入1
回车
输入 chroot /mnt/sysimage
输入 cp /usr/lib/modules/$(uname -r)/vmlinuz /boot/vmlinuz-$(uanme -r) 复制模板文件中存的内核文件
exit
exit
以硬盘设备重新进入系统,检测是否修复成功
4、内核初始化镜像
/boot/initramfs-4.18.0-80.el8.x86_64.img作用:
加载系统时钟
加载selinux
加载系统主机信息
加载/etc/fstab文件中磁盘挂在策略
加载磁盘配额
初始化系统程序开启开机启动服务
开启虚拟控制台
开启图形
问题出现:
[root@localhost boot]# rm -fr initramfs-4.18.0-193.el8.x86_64.img 删除系统初始化镜像
恢复—前提是没有重启,可以使用如下方法:
[root@localhost boot]# mkinitrd --help 查看帮助
usage: mkinitrd [--version] [--help] [-v] [-f] [--preload <module>]
[--image-version] [--with=<module>]
[--nocompress]
<initrd-image> <kernel-version>
(ex: mkinitrd /boot/initramfs-4.18.0-193.el8.x86_64.img 4.18.0-193.el8.x86_64)
[root@localhost boot]# mkinitrd /boot/initramfs-4.18.0-193.el8.x86_64.img 4.18.0-193.el8.x86_64 直接复制这个命令,就可以生成了
Creating: target|kernel|dracut args|basicmodules
如果重启,系统就会启动不了(如下图),该如何恢复?
进入挽救模式
输入: mkinitrd /boot/initramfs-$(uname -r).img $(uanme -r)
5、系统启动级别
0 | 关机 |
---|---|
1 | 单用户 |
2 | 无图形网络模式 |
3 | 无图形网络模式 |
4 | 无图形网络模式 |
5 | 有图形界面模式 |
6 | 重启 |
问题出现
[root@localhost Desktop]# systemctl set-default 查看启动级别
oot@localhost Desktop]# systemctl set-default runlevel6.target 启动级别设置为6,就会一直重启
Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target → /usr/lib/systemd/system/reboot.target.
恢复
手动指定启动级别:
开机按e
指定完后,进入系统用命令改成runlevel5.target
[root@localhost Desktop]# systemctl set-default runlevel5.target
Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target → /usr/lib/systemd/system/graphical.target.
6、超级用户密码忘记,破解密码
在开机选择界面按e进入到引导文件编辑模式
将ro 改称rw 并添加rd.break 表示系统启动内核之后停止初始化