前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >三个Linux 系统故障修复技巧,你知道几个?

三个Linux 系统故障修复技巧,你知道几个?

作者头像
ICT系统集成阿祥
发布于 2024-12-03 09:33:07
发布于 2024-12-03 09:33:07
25100
代码可运行
举报
文章被收录于专栏:数通数通
运行总次数:0
代码可运行

背景

Linux是很流畅的操作系统,一般来说它比windows运行要稳定。但是作为系统,它的操作和配置复杂度比windows要高,遇到系统故障修复的操作也更复杂。今天阿祥就介绍一下三个常见的Linux系统故障的修复技巧和对应案例,希望对大家有帮助!

案例和修复技巧

一、单用户模式

介绍:Linux系统提供了单用户模式(类似Windows安全模式),在单用户模式(运行级别1)中,Linux引导进入根shell。此时系统网络已被禁用,运行的进程只是少数。单用户模式下,用户可以修复损坏的文件系统、还原配置文件、移动和修改用户数据等。

案例1:root密码重置

在单用户模式下:Linux不需要root密码(不同的系统可能有差别,本文用CentOS 7.6做介绍。Red Hat不需要root密码,但SuSe则需要),那么就很容易更改root密码了。这个模式最重要的是需要了解怎么进入单用户模式和对密码文件进行修改。

操作步骤:

1、首先启动centos7电源,在下面图形化界面处按下空格,让系统停止在此界面,一般此界面默认时间为5秒,要把握住机会

2、按下“e”键进入编辑此选项,等待出现画面后按下键一直翻到最后。找到“.....ro crashdernel=auto....”类似字样

3、把ro更改为"rw rd.break",更改完成后按下ctrl+x组合键,运行系统

4、待启动后,输入命令"chroot /sysroot

5、输入"passwd root",设置用户密码,两次输入相同密码

6、执行命令"touch /.autorelabel" 写入系统信息

7、强制重启系统,等系统到登录界面输入我们更改好的密码,发现可以登录成功。至此密码更改完成

案例2:硬盘扇区错乱

运维工程师都知道,在Linux启动过程中经常会遇到的问题是“硬盘可能有坏道或扇区错乱(数据损坏)的情况”,原因多由于机器异常断电,或者不正常关机导致的

操作步骤:

1、问题发生在系统启动的时候,屏幕会显示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Press root password or ctrl+D

2、此时输入root密码系统自动进入单用户模式,输入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fsck -y /dev/sdc1(具体根据自己的硬盘来)
fsck为文件系统检测修复命令,“-y”设定检测到错误自动修复,/dev/sdc1为发生错误的硬盘分区,请依据具体情况更改此参数

3、系统修复完成后,用命令“reboot”重新启动即可

案例3:GRUB选项设置错误

“Error 15”显示系统无法找到grub.conf中指定的内核。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Error 15: File not found
还有一种情况就是启动电脑后选择启动linux或其他在Grub启动列表中列出的系统时, 屏幕显示如下:

Booting 'gentoo Linux'
root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
kernel (hd0,0)/boot/kernel-2.4.20 root=/dev/hda3 vga=792

Error 15: File not found
Press any key to continue...

检查grub.conf的root行和setup行配置是否正确,比如我的主机的内核文件中的“vmlinuz”打成了“vmlinux”,造成系统无法找到内核的可执行文件。

我们可以按任意键去到GRUB编辑界面,修改此错误,回车保存后按“b”键即可正常引导。记得进入系统后修改grub.conf文件中此处错误。

很多Linux的用户在修改GRUB设置时很容易不小心出现错误,出现此问题提示时注意观察报错信息情况,针对具体问题去做修复。

二、GRUB引导故障排查

介绍:运维人员应该都遇到过,有时Linux启动后会直接进入GRUB命令行界面(只有“grub>”提示符),此时很多用户就选择了重新安装GRUB甚至重新安装系统。

其实一般而言此故障的原因最常见的有两个:

1、GRUB配置文件中选项设置错误;

2、GRUB配置文件丢失(还有少数原因,如内核文件或镜像文件损坏、丢失,/boot目录误删除等)

如果是第一种情况,可以首先通过GRUB命令引导系统后修复;若是第二种情况,则要使用Linux救援模式修复了(本文后续有描述)。 首先,我们需要了解GRUB启动系统的引导过程,grub.conf文件中主要的配置选项如下:

PS:本文GRUB配置文件路径为/boot/grub/grub.conf,各系统按实际情况做修改:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
title Fedora Core (2.6.18-1.2798.fc6)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/ rhgb quiet initrd /boot/initrd-2.6.18-1.2798.fc6.img

其中:

1、“title”字段指定:GRUB引导的系统

2、“root”字段指定:/boot分区所在的位置

3、“kernel”字段指:内核文件所在位置,内核加载时权限属性为只读(“ro”)以及指定根分区所在位置(root=LABEL=/);

4、“initrd”字段指定:镜像文件所在位置。

所以GRUB在引导时顺序为首先加载/boot分区,然后依次载入内核与镜像文件。

案例1:“title Fedora Core (2.6.18-1.2798.fc6)”段被误删除

此时,系统启动后会自动进入“GRUB>”命令行。

以下为排除故障依次做出的操作:

1、检查/boot/grub/grub.conf文件所在分区

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
grub> find /boot/grub/grub.conf
(hd0,0) 

2、查看grub.conf文件是否有错误

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
grub>cat (hd0,0)/boot/grub/grub.conf

PS:如果系统安装设置好后,有将grub.conf文件做过备份。比如有备份文件grub.conf.bak,则此时可以检查对比备份文件和现有文件,发现错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
grub>cat (hd0,0)/boot/grub/grub.conf.bak 

3、确认错误后,先通过命令行方式完成GRUB引导,进入系统后再行修复grub.conf文件错误:

1)指定/boot分区

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root (hd0,0)

2)指定内核加载

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/ rhgb quiet

3)指定镜像文件所在位置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
initrd /boot/initrd-2.6.18-1.2798.fc6.img

PS:GRUB支持tab键命令补全功能

4、从/boot分区启动

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
boot (hd0,0)

命令行模式可以在GRUB菜单模式中通过按“c”键调用,也可以用于测试新编译的内核(设置kernel、initrd引导新内核及镜像文件)。

三、Linux救援模式应用

介绍:当系统用单用户模式也无法进入时或出现GRUB命令行也不能解决的引导问题,我们就需要使用Linux救援模式来进行故障排除了。

操作步骤:

1、使用Linux安装U盘启动盘插入电脑,设置固件CMOS/BIOS为U盘引导,当Linux安装画面出现后

2、选择 Troubleshooting(故障排除)

3、进入 Rescue a CentOS Linux system(救援模式)

4、选择1 Contime

5、此时根在u盘,他会自动找到真正的硬盘的根挂载到 /mnt/sysimage

6、回车进入到shell命令行 输入: chroot /mnt/sysimage

7、 现在就进入了真正要修复的系统中了

PS:U盘启动盘制作工具链接:

https://www.xitongzhijia.net/soft/18987.html

案例一:修复MBR

代码语言:javascript
代码运行次数:0
运行
复制

1、进入救援模式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
chroot /mnt/sysimage

2、修复命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
grub2-install /dev/sda

3、手动重启,MBR修复完毕修复命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
grub2-install /dev/sda
案例二:修复grub

场景1、 /boot/grub2 目录被删除

1、进入救援模式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
chroot /mnt/sysimage

2、输入以下指令修复

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
grub2-install /dev/sda
grub2
grub2-mkconfig > /boot/grub2/grub.cfg
exit
reboot  系统会自动重启2

场景2、/boot/grub2/grub.cfg 目录被删除

1、进入grub配置界面

2、ls 列出所有系统分区(sdX,X)...

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
grub>ls
(sdX,X)

PS:此命令将显示可用的硬盘和分区,例如 (hd0,1) 或 (hd1,5),用以确定/boot分区

3、设置根为上述确定的/boot分区

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
grub> set root=(sdX,X)

linux16 /vmlinuz-xxx root=/dev/sda1 ro 这里指定的是你的真实/分区的磁盘位置

4、执行以下命令来加载并执行 grub 配置文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
grub> configfile /boot/grub/grub.cfg

5、如果启动成功,则在 Linux 操作系统中运行以下命令来更新 grub 引导

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo update-grub

场景3、 /boot 目录被删除

1、进入救援模式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
chroot /mnt/sysimage

2、挂载光盘,并复制vmlinuz和initrd.img文件到/boot下,并重命名

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mount /dev/sr0 /mnt/cdrom
cd /mnt/cdrom/isolinux
cp vmlinuz initrd.img /boot
cd /boot
mv vmlinuz vmlinuz-`uname -r`
mv initrd.img initrd-`uname -r`.img

PS:或者重新安装内核来自动生成vmlinuz和initramfs文件,安装完成后会自动生成/boot下的vmlinuz和initramfs文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd /mnt/cdrom/Packages
rpm -ivh --force kernel-xxx.rpm

3、重新生成grub2文件和grub.cfg配置文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
grub2-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg
exit

4、重启即可正常进入系统

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
reboot
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-08-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ICT系统集成阿祥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 案例1:“title Fedora Core (2.6.18-1.2798.fc6)”段被误删除
  • 案例二:修复grub
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档