Skip to content

Debian 13 系统恢复

当 Debian 系统出现严重问题时,本教程将指导您完成各种恢复操作,包括启动修复、数据救援和系统重置。

🚨 紧急启动救援

Live USB 启动

如果系统无法正常启动,首先使用 Live USB:

bash
# 1. 制作 Debian Live USB
# 下载 Debian Live ISO
# 使用 dd 或 Rufus 制作启动盘

# 2. 从 Live USB 启动
# 进入 BIOS/UEFI 设置启动顺序
# 选择 USB 设备启动

# 3. 选择 Live 模式
# 在 GRUB 菜单中选择 "Debian GNU/Linux Live"

单用户模式

bash
# 在 GRUB 菜单中:
# 1. 选择 Debian 启动项
# 2. 按 'e' 编辑启动参数
# 3. 在 linux 行末尾添加:
single

# 或者添加:
init=/bin/bash

# 4. 按 Ctrl+X 启动

救援模式

bash
# 在 GRUB 中添加救援参数:
rescue

# 或使用安装镜像的救援模式:
# 1. 从安装 ISO 启动
# 2. 选择 "Advanced options"
# 3. 选择 "Rescue mode"

🔧 GRUB 引导修复

GRUB 损坏修复

bash
# 使用 Live USB 启动后:

# 1. 确定根分区
lsblk -f
fdisk -l

# 2. 挂载根分区
sudo mkdir /mnt/debian
sudo mount /dev/sda1 /mnt/debian  # 替换为实际分区

# 3. 挂载必要的系统目录
sudo mount --bind /dev /mnt/debian/dev
sudo mount --bind /proc /mnt/debian/proc
sudo mount --bind /sys /mnt/debian/sys

# 4. 如果有单独的 boot 分区
sudo mount /dev/sda2 /mnt/debian/boot  # 替换为实际分区

# 5. chroot 到系统
sudo chroot /mnt/debian

# 6. 重新安装 GRUB
grub-install /dev/sda  # 替换为实际磁盘
update-grub

# 7. 退出并重启
exit
sudo umount -R /mnt/debian
sudo reboot

GRUB 配置修复

bash
# 在救援环境中:

# 重新生成 GRUB 配置
update-grub

# 手动添加启动项
nano /etc/grub.d/40_custom

# 添加内容:
menuentry "My Custom Entry" {
    set root='(hd0,1)'
    linux /vmlinuz root=/dev/sda1
    initrd /initrd.img
}

# 更新 GRUB
update-grub

双系统 GRUB 修复

bash
# 重新检测 Windows 启动项
sudo apt install os-prober
sudo os-prober
sudo update-grub

# 手动添加 Windows 启动项
nano /etc/grub.d/40_custom

# 添加 Windows 启动项:
menuentry "Windows 10" {
    insmod part_msdos
    insmod ntfs
    set root='(hd0,1)'
    chainloader +1
}

💾 文件系统修复

文件系统检查和修复

bash
# 检查文件系统错误(需要卸载分区)
sudo umount /dev/sda1
sudo fsck /dev/sda1

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

# 自动修复错误
sudo fsck -y /dev/sda1

# 检查坏扇区
sudo fsck -c /dev/sda1

# 不同文件系统的检查命令:
sudo fsck.ext4 /dev/sda1    # ext4
sudo fsck.xfs /dev/sda1     # XFS
sudo fsck.btrfs /dev/sda1   # Btrfs

超级块损坏修复

bash
# 查找备用超级块
sudo dumpe2fs /dev/sda1 | grep -i superblock

# 使用备用超级块修复
sudo e2fsck -b 32768 /dev/sda1

# 如果仍有问题,尝试其他备用超级块
sudo e2fsck -b 98304 /dev/sda1

Btrfs 文件系统修复

bash
# Btrfs 检查
sudo btrfs check /dev/sda1

# Btrfs 修复(只读检查)
sudo btrfs check --readonly /dev/sda1

# Btrfs 修复(危险操作,先备份)
sudo btrfs check --repair /dev/sda1

# 恢复 Btrfs 元数据
sudo btrfs rescue super-recover /dev/sda1

🗂️ 数据恢复

删除文件恢复

bash
# 安装数据恢复工具
sudo apt install testdisk photorec extundelete

# 使用 extundelete 恢复 ext3/ext4 文件
sudo extundelete /dev/sda1 --restore-all

# 恢复特定文件
sudo extundelete /dev/sda1 --restore-file path/to/file

# 使用 PhotoRec 恢复各种文件格式
sudo photorec /dev/sda1

磁盘镜像和克隆

bash
# 创建磁盘镜像(用于安全恢复)
sudo dd if=/dev/sda of=/backup/disk_image.img bs=4M status=progress

# 从镜像恢复
sudo dd if=/backup/disk_image.img of=/dev/sda bs=4M status=progress

# 使用 ddrescue(更适合损坏的磁盘)
sudo apt install gddrescue
sudo ddrescue /dev/sda /backup/disk_rescue.img /backup/rescue.log

分区表恢复

bash
# 使用 TestDisk 恢复分区表
sudo testdisk /dev/sda

# TestDisk 操作步骤:
# 1. 选择磁盘
# 2. 选择分区表类型(通常是 Intel/PC)
# 3. 选择 Analyse
# 4. Quick Search 查找丢失的分区
# 5. 如果找到,选择 Write 写入分区表

🔄 系统重置和恢复

软件包系统修复

bash
# 修复损坏的软件包数据库
sudo apt update
sudo apt install -f

# 重新配置所有软件包
sudo dpkg --configure -a

# 清理并重建软件包缓存
sudo apt clean
sudo apt autoclean
sudo apt update

# 修复损坏的软件包
sudo dpkg --audit
sudo apt --fix-broken install

重置用户配置

bash
# 备份用户配置
cp -r ~/.config ~/.config.backup
cp ~/.bashrc ~/.bashrc.backup

# 重置桌面环境配置
rm -rf ~/.config/dconf
rm -rf ~/.config/gnome*
rm -rf ~/.gconf*

# 重置 shell 配置
cp /etc/skel/.bashrc ~/
cp /etc/skel/.profile ~/

系统完全重置

bash
# 保留用户数据,重置系统(危险操作)
# 1. 备份重要数据
sudo rsync -av /home/ /backup/home_backup/

# 2. 重新安装系统软件包
sudo apt update
sudo apt install --reinstall ubuntu-desktop  # 或相应的桌面环境

# 3. 清理系统配置
sudo rm -rf /etc/NetworkManager/system-connections/*
sudo rm -rf /etc/cups/*

🚑 紧急救援工具

安装救援工具

bash
# 从 Live USB 中安装常用救援工具
sudo apt update
sudo apt install \
    testdisk \
    photorec \
    gddrescue \
    extundelete \
    gparted \
    rsync \
    chntpw \
    ntfs-3g \
    exfat-utils

SystemRescue ISO

bash
# 下载 SystemRescue ISO(专门的救援系统)
wget https://osdn.net/projects/systemrescuecd/releases/

# SystemRescue 包含:
# - GParted(分区管理)
# - TestDisk(数据恢复)
# - Clonezilla(磁盘克隆)
# - 各种文件系统工具

网络救援

bash
# 通过网络访问救援工具
# 1. 配置网络(Live USB 中)
sudo dhclient eth0

# 2. 启用 SSH 服务
sudo systemctl start ssh
sudo passwd root  # 设置 root 密码

# 3. 从其他机器连接
ssh root@救援机器IP

🔐 密码重置

Root 密码重置

bash
# 方法1:单用户模式
# 在 GRUB 中添加 single 参数
# 进入单用户模式后:
passwd root

# 方法2:使用 Live USB
# 挂载根分区
sudo mount /dev/sda1 /mnt
sudo chroot /mnt
passwd root

用户密码重置

bash
# 在单用户模式或 chroot 环境中:
passwd username

# 解锁被锁定的账户
usermod -U username

# 重置密码过期
chage -d 0 username

GRUB 密码移除

bash
# 编辑 GRUB 配置
nano /etc/grub.d/40_custom

# 删除或注释包含密码的行:
# set superusers="admin"
# password_pbkdf2 admin grub.pbkdf2.sha512...

# 更新 GRUB
update-grub

📊 系统诊断

硬件诊断

bash
# 内存测试
sudo apt install memtest86+
# 重启并在 GRUB 中选择 memtest86+

# 硬盘健康检查
sudo apt install smartmontools
sudo smartctl -a /dev/sda

# CPU 温度监控
sudo apt install lm-sensors
sensors-detect
sensors

日志分析

bash
# 查看系统启动日志
journalctl -b

# 查看内核日志
dmesg | less

# 查看硬件错误
journalctl -p err

# 查看特定服务日志
journalctl -u NetworkManager

网络诊断

bash
# 基本网络测试
ip addr show
ip route show
ping -c 4 8.8.8.8

# DNS 测试
nslookup google.com
dig google.com

# 网络配置重置
sudo systemctl restart NetworkManager
sudo dhclient -r && sudo dhclient

🔄 备份和预防

系统快照

bash
# 使用 Timeshift 创建系统快照
sudo apt install timeshift
sudo timeshift --create

# 恢复快照
sudo timeshift --restore

# 自动快照配置
sudo timeshift --setup

重要配置备份

bash
# 创建系统配置备份脚本
#!/bin/bash
BACKUP_DIR="/backup/system-$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR

# 备份重要配置
sudo cp -r /etc $BACKUP_DIR/
sudo cp -r /home $BACKUP_DIR/
sudo dpkg --get-selections > $BACKUP_DIR/packages.list
sudo cp /etc/fstab $BACKUP_DIR/
sudo fdisk -l > $BACKUP_DIR/partitions.txt

灾难恢复计划

bash
# 1. 定期备份重要数据
# 2. 创建系统恢复USB
# 3. 记录系统配置信息
# 4. 测试恢复过程
# 5. 保持恢复文档更新

📝 恢复检查清单

系统恢复完成后,请检查:

  • [ ] 系统能正常启动
  • [ ] 网络连接正常
  • [ ] 重要数据完整
  • [ ] 用户账户可用
  • [ ] 必要服务运行
  • [ ] 硬件功能正常
  • [ ] 文件系统健康
  • [ ] GRUB 引导正常

🆘 应急联系

当遇到无法解决的问题时:

下一步

系统恢复完成后,建议:

  1. 系统安全加固 - 防范未来问题
  2. 性能优化 - 提升系统性能
  3. 日志管理 - 监控系统健康

系统恢复成功了吗? 继续学习预防措施 →

基于 MIT 许可发布