我们在使用linux系统时会遇到很多问题,如系统崩溃,系统起不来,忘记root密码等等,或许很多人遇到这样的问题直接选择重装系统,但是一次次重装显得很麻烦,那么,我们在接下来就来学习几种系统的排错方法。
切记,排错原则就是缺什么则补什么
1.root用户密码忘记
当忘记root用户后 选择进入系统时按‘e’,然后将ro后的删除,改为rw,后加rd.break
chroot /sysroot/ ##切换到shell模式
echo xxxxxx | passwd --stdin root ##echo后面的为更改的root密码 touch /.autorelabel ##重启SElinux 两个exit重启
引导阶段
"e"进入挽救模式
ctrl+x
开始具体操作
2.磁盘引导阶段,mbr主引导的恢复
模拟问题
dd if=/dev/zero of=/dev/sda bs=446 count=1 删除主引导记录
解决方案
若为真实主机,则需要插入镜像光驱,然后光驱启动
由于我们是模拟问题,用的是虚拟机,我们则添加光驱并由光驱启动
这样就进入了光驱拯救模式,然后开始解决问题
chroot /mnt/sysimage ##切换到真实目录
grub2-install /dev/sda ##此处磁盘应与所截取的位置一致
两个exit退出,关闭虚拟机且切换磁盘启动
3.文件引导阶段
1.引导文件丢失
引导文件:/boot/grub2/grub.cfg
模拟问题:rm -fr /boot/grub2/grub.cfg
当系统没有重启的时候可通过以下命令恢复引导文件
grub2-mkconfig > /boot/grub2/grub.cfg
当误删引导文件,系统被重启时会出现这样的情况
boot###grub > set root=‘hd0,msdos1’ ##此位置时不固定的,位置指定/boot所在分区,'hd0,msdo1’为第一块磁盘第一分区 在重启前查看df,或者在拯救模式查看df
根### grub > linux16 /vmlinuz-3.10.0-123.el7.x86_64 ro root=/dev/mapper/rhel-root #根分区的设备名称 主要查看df,看根分区在哪里,而且如果boot和根时分开的,则linux16 后则不加/root,可自动补齐
系统初始化镜像### grub > initrd16 /initramfs-3.10.0-123.el7.x86.img ##可自动补齐 grub > boot
df查看boot分区位置
解决:
注:表面上看问题已经解决,但是我们刚才时通过镜像的引导文件开启的计算机,故若要解决这个问题,我们还需要手动将引导文件补上,否则每次开机均得手动引导
2.内核文件丢失
#模拟问题:rm -fr /boot/vmlinuz-3.10.0-514.el7.x86_64
进入到挽救模式
chroot /mnt/sysimage ##进入bash
mount /dev/cdrom /media ##挂载镜像
cd /media/Packages ##进入镜像的Packages目录
cp kernel-3.10.0-514.el7.x86_64.rpm /mnt ##复制内核文件rpm包到mnt底下
cd /mnt
rpm2cpio kernel-3.10.0-514.el7.x86_64.rpm | cpio -id ##拆解内核文件包
cd boot/ ##进入拆解后的内核文件所在位置
cp vmlinuz-3.10.0-514.el7.x86_64 /boot/ ##复制所需内核文件到/boot下
注:缺什么给什么
原理:缺什么补什么,内核文件丢失的话我们则需要选择一个和系统版本相同的镜像,将所需文件补齐
进入挽救模式开始解决问题
进入磁盘引导,恢复正常
3.系统镜像文件丢失
#模拟问题: rm -fr /boot/initramfs-3.10.0-123.el7.x86_64.img
#当系统没有重启时
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
或者mkinitrd /boot/initramfs-3.10.0-123.el7.x86_64.img 3.10.0-123.el7.x86_64
uname -r 是查看系统内核版本
#当系统重启后
进入挽救模式
chroot /mnt/sysimage/
再重新生成镜像文件,命令同上相同
若没有重新生成直接重启:
进入挽救模式
4.当/boot分区被删除
##当/boot分区被删除
进入到挽救模式
chroot /mnt/sysimage
grub2-install /dev/sda
mount /dev/cdrom /mnt
rpm -ivh /mnt/Packages/kernel-3.10.0-123.el7.x86_64.rpm --force
grub2-mkconfig > /boot/grub2/grub.cfg
进入挽救模式
两个exit进入磁盘引导
4.开机启动级别被篡改
#错误形成
systemctl set-default reboot.target
将系统启动级别优先级高的改为reboot后 系统一直重启
解决办法:
1.开机按上下键停止读秒
2.按E进入编辑模式
3.选择内核启动行
linux16 /vmlinuz…后面加个5
4.启动系统
ctrl+x
5.再在内核中systemctl set-default graphical.target
6.reboot测试是否修改过来了
忘记root密码的解决方法
1.开机后在系统选择页面按e,找到以linux16开头的那行,删除 ro 后面的所有内容,并将 ro 改为 rw rd.break ,按ctrl+x进入下一个页面
2.等系统停止后按Enter弹出
switch_root:/# 界面
输入
chroot /sysroot/ ##从内核模式切换到shell模式
echo westos | passwd --stdin root ##设置密码为westos
touch /.autorelabel ##建立密码认证文件