Linux系统当出现一些问题的时候的引导过程及修复的办法
不正确的操作会导致系统出现各种问题,在实际情况中,重装服务器显然是不现实的,因此我们需要了解系统启动原理并据此找到修复的方法。
1.通电
如果电脑打不开首先检查下是否通电了,有时候很有可能是没电了
2.bios 初始化
对硬件检测
初始化硬件时钟
3.磁盘引导
在启动程序时,磁头经过mbr程序的指引跳转到boot分区,开启系统启动程序,读取相应的配置文件,系统正常启动,因此当 mbr 数据丢失时,系统会因为找不到启动分区而停止启动。
mbr=主引导记录=0 磁道 1 扇区 446 存储字节
作用:
记录 grub2 引导文件的位置
当 mbr 数据丢失系统会因为找不到启动分区而停止启动
问题模拟方式
系统磁盘/dev/sda
dd if=/dev/zero of=/dev/sda bs=446 count=1 ##清空系统/dev/sda 上的 mbr 数据
恢复方式:
用光盘进入系统挽救模式
chroot /mnt/sysimage
grub2-install /dev/xxxxxx ##重新安装 grub2 到系统硬盘上
[root@node4 Desktop]# fdisk -l
/dev/vda1 * 2048 1026047 1024000 500M 83 Linux
[root@node4 Desktop]# dd if=/dev/zero of=/dev/vda bs=446 count=1
[root@node4 Desktop]# dd if=/dev/sda of=/dmnt/mbrfile bs=446 count=1 检查
[root@node4 Desktop]# hexdump -C /mnt/vmbrfile
[root@node4 Desktop]# reboot
## 光盘挽救模式
chroot /mnt/sysimage
grub2-install /dev/vda
exit
exit
## 硬盘启动
4.grub2 文件引导
/boot/grub2/grub.cfg #总引导文件
/boot/loader/entries/xxxxxxxxx.conf #子引导文件
删除上述任意一个文件都会导致系统无法正常启动
指定/boot 位置
指定系统启动时加载文件成名
模拟问题:
rhel8:
rm -fr /boot/loader/entries/xxxxxxxxx.conf
修复:
rhel8:
kernel-install add 内核版本号 内核镜像
kernel-install add $(uname -r) /lib/modules/$(uname -r)/vmlinuz
手动引导
set root='hd0,msdos1'
linux16 /vmlinuz-3.10.0-957.el7.x86_64 ro root=/dev/nvme0n1p2
initrd16 /initramfs-4.18.0-80.el8.x86_64.img
boot
模拟问题1:
[root@node4 grub2]# df
/dev/vda3 7353344 4754276 2599068 65% /
[root@localhost entries]# kernel-install --help
Usage:
/usr/bin/kernel-install add KERNEL-VERSION KERNEL-IMAGE
/usr/bin/kernel-install remove KERNEL-VERSION
[root@node4 Desktop]# rm -fr /boot/loader/entries/*
----不重启修复:
[root@localhost entries]# kernel-install add $(uname -r) /boot/vmlinuz-4.18.0-193.el8.x86_64 ##不重启修复
cp: cannot stat '/boot/bls.conf': No such file or directory
sed: can't read /boot/loader/entries/fadbd3697c8d46e58d6fe5d850b2a381-0-rescue.conf: No such file or directory
[root@localhost module]# cd /usr/lib/modules
[root@localhost modules]# ls
4.18.0-187.el8.x86_64 4.18.0-193.el8.x86_64
[root@localhost modules]# cd 4.18.0-193.el8.x86_64
[root@localhost 4.18.0-193.el8.x86_64]# ls
bls.conf
[root@localhost 4.18.0-193.el8.x86_64]# cp /usr/lib/modules/4.18.0-193.el8.x86_64/bls.conf /boot/
[root@localhost 4.18.0-193.el8.x86_64]# cd /boot/
[root@localhost boot]# ls
bls.conf
[root@localhost boot]# kernel-install add $(uname -r) /boot/vmlinuz-4.18.0-193.el8.x86_64
----重启修复:
## 开机界面操作
set root='hd0,msdos1'
linux16 /vmlinuz-4.18.0-193.e18.x86_64 ro root=/dev/vda3
initrd /initramfs-4.18.0-193.e18.x86_64.img
boot
## 开机后操作
[root@node4 Desktop]# cp /usr/lib/modules/4.18.0-193.el8.x86_64/bls.conf /boot/
[root@node4 grub2]# cd /boot
[root@node4 grub2]# ls
[root@node4 Desktop]# kernel-install add $(uname -r) /boot/vmlinuz-4.18.0-193.el8.x86_64
[root@node4 grub2]# cd /boot/loader/entries/
[root@localhost entries]# ls
fadbd3697c8d46e58d6fe5d850b2a381-0-rescue.conf
fadbd3697c8d46e58d6fe5d850b2a381-4.18.0-193.el8.x86_64.conf
模拟问题2:
[root@node4 Desktop]# rm -fr /boot/grub2/grub.cfg ## 删除总引导文件
[root@node4 Desktop]# reboot
修复:
手动引导
set root='hd0,msdos1'
linux16 /vmlinuz-4.18.0-193.e18.x86_64 ro root=/dev/vda3
initrd /initramfs-4.18.0-193.e18.x86_64.img
boot
[root@node4 grub2]# cd /boot/grub2/
[root@node4 grub2]# ls
device.map fonts grubenv i386-pc
[root@node4 grub2]# grub2-mkconfig > /boot/grub2/grub.cfg
[root@node4 grub2]# ls
device.map fonts grub.cfg grubenv i386-pc
5.内核加载
加载内核作用:系统初始化硬件设备,只读挂在根目录下的设备
加载内核作用:
/boot/vmlinuz-$(uname -r)
系统初始化硬件设备
只读挂在/设备
问题出现:
rm -fr /boot/vmlinuz-$(uname -r)
恢复:
拆解内核文安装包并复制内核压缩镜像到/boot
进入到挽救模式
chroot /mnt/sysimage
mount /dev/cdrom /media
cd /media/BaseOS/Packages
cp kernel-core-4.18.0-80.el8.x86_64.rpm /mnt/
cd /mnt
rpm2cpio kernel-core-4.18.0-80.el8.x86_64.rpm | cpio -id
cp /mnt/lib/modules/4.18.0-80.el8.x86_64/vmlinuz /boot/vmlinuz-$(uname -r)
exit
exit
模拟问题:
rm -fr /boot/vmlinuz-$(uname -r)
恢复∶
复制系统中usr下的内核文件到/boot中即可
在关闭模式下选择光盘为第一启动项,启动系统,进入到挽救模式,执行以下命令:
chroot /mnt/sysimage
cp /usr/lib/modules/$(uname -r)/vmlinuz /boot/vmlinuz-$(uname -r)
exit
exit
6.系统初始化镜像
/boot/initramfs-4.18.0-80.el8.x86_64.img
加载系统时钟
加载 selinux
加载系统主机信息
加载/etc/fstab 文件中磁盘挂在策略
加载磁盘配额
初始化系统程序开启开机启动服务
开启虚拟控制台
开启图形
问题出现:
rm -fr /boot/initramfs-xxxxx.img
恢复:
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
[root@node4 boot]# rm -fr initramfs-4.18.0-193.el8.x86_64.img
[root@node4 boot]# reboot
## 不重启修复
[root@localhost boot]# mkinitrd --help
[root@localhost boot]# mkinitrd /boot/initramfs-4.18.0-193.el8.x86_64.img 4.18.0-193.el8.x86_64
## 光盘启动 进入挽救模式
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
## 硬盘启动
7.系统启动级别
0 关机
1 单用户
2 无图形网络模式
3 无图形网络模式
4 无图形网络模式
5 有图形网络模式
6 重启
问题出现:
systemctl set-default reboot.target
恢复:
在开机选择界面按<e>进入到引导文件编辑模式
在内核加载选项最后加入启动级别 5
ctrl+x
systemctl set-default graphical.target
8.超级用户密码忘记
安全问题首先要保证物理安全。
开机重启
rw rd.break
1.在开机选择界面按<e>进入到引导文件编辑模式
2.在内核加载选项最后删除到 ro 选项
3.更改 ro---->rw
4.加入 rd.break 参数终止系统启动进入单用户模式
5.ctrl+x 启动
恢复方法:
1.在开机选择界面按<e>进入到引导文件编辑模式
2.在内核加载选项最后删除到 ro 选项
3.更改 ro---->rw
4.加入 rd.break 参数终止系统启动进入单用户模式
5.ctrl+x 启动
6.chroot /sysroot
7.echo lee| passwd --stdin root
8.touch /.autorelabel ##当/.autorelabel 文件存在 selinux 会重新初始化