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 会重新初始化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值