Linux启动故障修复
Linux启动故障修复
常见启动故障
- GRUB损坏
- 文件系统损坏
- 内核问题
- 配置文件错误
- 磁盘故障
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、单用户模式和各种修复工具,大多数启动问题都可以解决。