Lesson19 Linux系统排错
文章目录
1. 系统引导过程概述
2. 了解bios
- BIOS是电脑的基本输入输出系统,在计算机系统中起着重要作用
- BIOS是连接电脑硬件和软件的枢纽,也可以说它是一款转换器
- 从功能上看,BIOS分为三个部分: 自检及初始化程序, 硬件中断处理, 程序服务请求
自检及初始化程序:电脑通电后BIOS对硬件部分的检测,是否有异常或故障,启动前一些硬件参数的比对是否符合,接下来就是引导硬盘的操作系统
硬件中断处理:计算机开机的时候,BIOS会告诉CPU硬件设备的中断号,当操作时输入了使用某个硬件的命令后,它就会根据中断号使用相应的硬件来完成命令的工作,最后根据其中断号跳回原来的状态
程序服务请求:从BIOS的定义可以知道它总是和计算机的输入输出设备打交道,它通过最特定的数据端口发出指令,发送或接收各类外部设备的数据,从而实现软件应用程序对硬件的操作
3. 系统排错
3.1 实验环境
在实验前将自己的server虚拟机reset,将selinux关闭,并且在虚拟控台中给server虚拟机加入光驱
3.2 当grub磁盘引导阶段出现问题应该怎样解决
fdisk -l
查看磁盘的目录(看*号在哪里, 哪里就是启动分区所在位置)
可以看到,我的启动分区所在硬盘是 /dev/vda
模拟问题:dd if=/dev/zero of=/dev/vda bs=446 count=1
破坏磁盘引导,mbr主引导机构丢失
将selinux改为disable并且 reboot
此时采用磁盘方式打开虚拟机打不开,显示正在寻找硬件
关闭虚拟机,采用光驱方式启动,进入虚拟控制台
分别选Troubleshooting
和 Rescue a Red Hat Enterprise Linux System
,进入援救模式
df查看
chroot /mnt/sysimages/
回车
grub2-install /dev/vda
输入两次exit,退出关闭虚拟机,以磁盘方式再次开启虚拟机,就可以看到能够正常打开虚拟机图形化界面
3.3 系统启动阶段的引导文件丢失应该怎样解决
模拟问题:rm -fr /boot/grub2/grub.cfg
注:当系统没有重新启动时,直接输入grub2-mkconfig > /boot/grub2/grub.cfg可以恢复
当系统重启后,reboot
可以看到,虚拟机重启错误,找不到引导文件
关闭虚拟机,采用光驱方式启动,进入虚拟控制台
再次进入救援模式
df查看
chroot /mnt/sysimages/
回车
grub2-install /dev/vda
以磁盘方式开启虚拟机,输入set root='hd0,msdos1'
输入linux16 /vmlinuz-3.10.0-123.el7.x86_64 ro root=/dev/vda1
(根分区的设备名称,用df查看)
initrd16 /initramfs-3.10.0-123.el7.x86_64.img
boot
进入图形界面后:grub2-mkconfig > /boot/grub2/grub.cfg
当系统被重新启动 grub > set root=‘hd0,msdos1’ ##此位置是不固定的,位置指定/boot所在分区
grub > linux16 /vmlinuz-3.10.0-123.el7.x86_64 ro root=/dev/vda1 #根分区的设备名称
grub > initrd16 /initramfs-3.10.0-123.el7.x86_64.img
grub > boot 以上操作可以使系统正常启动,但是是临时的,所以进入系统后还是需要执行: grub2-mkconfig > /boot/grub2/grub.cfg
3.4 系统内核镜像文件丢失应该怎样解决
模拟问题:rm -rf /boot/vmlinuz-3.10.0-123.el7.x86_64
可以看到,/boot下的系统内核镜像文件不存在了
重启之后可以看到不能进入系统
进入到救援模式
chroot /mnt/sysimage
mkdir /rhel7
mount /dev/cdrom /rhel7
cd /rhel7/Packages
cp kernel-3.10.0-123.el7.x86_64.rpm /mnt/
cd /mnt
rpm2cpio kernel-3.10.0-123.el7.x86_64.rpm | cpio -id
cd /boot/
cp vmlinuz-3.10.0-123.el7.x86_64 /boot
exit
exit
以硬盘方式启动,看是否可以正常启动
3.5 系统初始化程序镜像文件丢失应该怎样恢复
模拟问题 rm -fr /boot/initramfs-3.10.0-123.el7.x86_64.img
如果没有重启系统直接利用 mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
恢复镜像文件
恢复之后查看可以看到系统初始化程序镜像文件
如果删除之后reboot了的恢复方法
可以看到,无法重启,报错为无法找到系统初始化程序镜像文件
进入救援模式:关闭虚拟机,以光驱方式开启虚拟机
输入chroot /mnt/sysimages
输入mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
再次cd /boot/ ls查看
以硬盘方式启动看是否可以正常启动
3.6 系统开机启动级别被人恶意篡改,一直处于重启模式 ,怎样解决
模拟问题: systemctl set-default reboot.target
此时输入reboot重启虚拟机,发现虚拟机永远处于重启模式
开机按上下键停止读秒
按“e”进入编辑模式
选择内核启动行
linux16 /vmlinuz-xxxxxx ro xxxxxxxxxxxxxx ,删掉ro后边,改为rw rd.break
ctrl+x退出,启动系统
输入两次exit, 系统重新启动进入图形化界面
3.7 如何修改root密码
重启主机,开机按上下键停止读秒
按下e进入编辑模式
删除到ro,改为 rw rd.break
,ctrl+x退出
输入chroot /sysroot/
echo westos | passwd --stdin root
touch /.autorelabel
两次退出,可以看到系统重新启动,root密码修改成功