← 返回首页
🔧

Linux启动故障修复

📂 devops ⏱ 2 min 255 words

Linux启动故障修复

常见启动故障

  1. GRUB损坏
  2. 文件系统损坏
  3. 内核问题
  4. 配置文件错误
  5. 磁盘故障

GRUB修复

GRUB损坏

# 使用Live CD启动
# 挂载系统分区
mount /dev/sda1 /mnt

# 挂载必要目录
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
mount --bind /dev/pts /mnt/dev/pts

# chroot到系统
chroot /mnt

# 重装GRUB
grub-install /dev/sda
update-grub

# 退出
exit
umount /mnt/dev
umount /mnt/proc
umount /mnt/sys
umount /mnt/dev/pts
umount /mnt

GRUB配置错误

# 进入GRUB编辑模式
# 在GRUB菜单按e键

# 修正内核路径或参数
# 按Ctrl+X启动

文件系统修复

检查文件系统

# 卸载分区
umount /dev/sda1

# 检查并修复
fsck -y /dev/sda1

# 强制检查
fsck -f /dev/sda1

超级块修复

# 查找备份超级块
mke2fs -n /dev/sda1

# 使用备份超级块修复
fsck -b 32768 /dev/sda1

进入单用户模式

GRUB2

# 在GRUB菜单选择"Advanced options"
# 选择recovery mode
# 选择"root"进入命令行

# 或在GRUB编辑模式添加
# 在linux行末尾添加: single 或 init=/bin/bash

挂载文件系统

# 单用户模式下
mount -o remount,rw /

# 修复配置文件
vim /etc/fstab

# 重启
reboot

修复/etc/fstab

# 如果fstab错误导致无法启动
# 进入单用户模式后

# 以读写方式挂载
mount -o remount,rw /

# 编辑fstab
vim /etc/fstab

# 验证配置
mount -a

# 重启
reboot

内核问题处理

回退到旧内核

# 在GRUB菜单选择旧版本内核启动
# 如果成功,设置为默认
grub-set-default "Advanced options for Ubuntu>Ubuntu, with Linux 5.4.0-generic"

重新安装内核

# 在可启动的系统中
apt-get install --reinstall linux-image-$(uname -r)

磁盘故障

检查磁盘健康

# 安装smartmontools
apt-get install smartctl

# 检查磁盘健康
smartctl -a /dev/sda

# 查看坏道
badblocks -v /dev/sda

实践:系统恢复脚本

#!/bin/bash
# 系统恢复检查清单

echo "=== 系统恢复检查 ==="

# 1. 检查文件系统
echo "检查文件系统..."
fsck -n /dev/sda1

# 2. 检查磁盘空间
echo "检查磁盘空间..."
df -h

# 3. 检查内存
echo "检查内存..."
free -h

# 4. 检查关键服务
echo "检查关键服务..."
systemctl status sshd
systemctl status network

# 5. 检查网络
echo "检查网络..."
ping -c 2 8.8.8.8

echo "检查完成!"

预防措施

# 1. 定期备份GRUB配置
cp /boot/grub/grub.cfg /backup/grub.cfg.bak

# 2. 保留多个内核
apt-get purge $(dpkg -l 'linux-image-*' | grep '^ii' | awk '{print $2}' | grep -v $(uname -r))

# 3. 监控磁盘健康
smartctl -a /dev/sda | grep -E "Reallocated|Current_Pending"

# 4. 定期检查文件系统
0 2 * * 0 fsck -n /dev/sda1

总结

系统启动故障是运维工程师必须掌握的技能。通过Live CD、单用户模式和各种修复工具,大多数启动问题都可以解决。