備份:
分區信息
/mnt/disk_zhaoyang/006_software/001_os_images/Digi002_Debian_Backup_20251228/disk_layout.txt
# 1. 切换 Root (你已经做了)
# sudo -I
# 2. 创建目录
mkdir -p /backup_temp
# 3. 定义变量 (注意:路径末尾不带斜杠)
BACKUP_DIR="/backup_temp"
DATE=$(date +%Y%m%d)
# 4. 执行备份
# 注意 --exclude 的顺序和写法
tar -cvpzf $BACKUP_DIR/desktop_debian13_backup_$DATE.tar.gz \
--exclude=$BACKUP_DIR \
--exclude=/proc --exclude=/sys --exclude=/dev --exclude=/run --exclude=/tmp \
--exclude=/mnt --exclude=/media \
--exclude=/lost+found \
--exclude=/home/creedxz/Alist \
--exclude=/home/creedxz/.cache \
--exclude=/home/creedxz/.local/share/Trash \
/
恢復:
启动进入 Live 系统:
启动虚拟机,进入 Live 桌面或命令行。
打开终端,切换到 root:sudo -i。
第二阶段:分区 (模拟原机结构)
这次我们要模拟的是你原机的结构(去掉 Windows,只保留 Debian)。根据你之前提供的 lsblk,原机 Debian 在 sda8,EFI 在 sda1。
我们不需要完全照搬 sda8 这种序号,简化为标准的 EFI + Root 结构即可。
运行分区工具:
Bash
cfdisk /dev/sda
选择 GPT 类型。
建立分区:
分区 1 (EFI):New -> 512M -> Type 选 EFI System。
分区 2 (Root):New -> 剩余所有空间 -> Type 选 Linux filesystem。
Write -> 输入 yes -> Quit。
格式化:
安装工具包:
Bash
apt install dosfstools
Bash
mkfs.vfat -F32 /dev/sda1
mkfs.ext4 /dev/sda2
挂载:
Bash
mount /dev/sda2 /mnt
mkdir -p /mnt/efi # 注意!原机挂载点是 /efi,这里保持一致
mount /dev/sda1 /mnt/efi
第三阶段:拉取备份并解压
你需要把 NAS 里的备份文件弄进来。
挂载 NAS 共享 (SMB):
Bash
1. 安装工具 (如果 Live 系统没有)
apt update && apt install cifs-utils
2. 挂载
mkdir -p /mnt/nas_source
假设 IP 是 31.138,共享名是 disk_sony
mount -t cifs -o username=admin //192.168.31.138/disk_sony /mnt/nas_source
输入 NAS 密码
解压 (恢复): 假设备份文件在 /mnt/nas_source/desktop_backup.tar.gz:
Bash
这一步会花点时间
tar -xvpzf /mnt/nas_source/desktop_backup.tar.gz -C /mnt/
第四阶段:修正配置 (至关重要)
解压完不能直接重启,必须修正“身份证”(UUID) 和引导。
查看新 UUID:
Bash
blkid
记下 /dev/sda2 (Root) 和 /dev/sda1 (EFI) 的 UUID。
修改 fstab:
Bash
nano /mnt/etc/fstab
找到挂载 / 的那行,把 UUID 改成新硬盘 sda2 的。
找到挂载 /efi (或者原机的 /boot/efi) 的那行,把 UUID 改成新硬盘 sda1 的。
重要:如果 fstab 里有 swap 分区,请注释掉(加 #),因为虚拟机里我们没分 Swap,不注释会卡启动。
检查挂载点:确认 EFI 的挂载点写的是 /efi(配合你刚才建立的目录)。
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# systemd generates mount units based on this file, see systemd.mount(5).
# Please run 'systemctl daemon-reload' after making changes here.
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda8 during installation
UUID=83128a6b-919a-44ad-ba53-9514cc1c41b5 / ext4 errors=remount-ro 0 1
# swap was on /dev/sda9 during installation
#UUID=eddfb875-5297-48b1-b40d-8257e85237ee none swap sw 0 0
UUID=D76F-1131 /efi vfat defaults 0 1
重建目录:
Bash
补全被排除的目录
mkdir -p /mnt/proc /mnt/sys /mnt/dev /mnt/run /mnt/tmp /mnt/mnt /mnt/media
mkdir -p /mnt/home/creedxz/Alist # 补全网盘挂载点
mkdir -p /mnt/home/creedxz/.cache
chmod 1777 /mnt/tmp
第五阶段:修复引导 (Grub)
Chroot 进入系统:
Bash
for i in /dev /dev/pts /proc /sys /run; do mount -B $i /mnt$i; done
chroot /mnt
安装 Grub:
apt install grub-efi-amd64
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=Debian /dev/sda
update-grub
exit
reboot
进桌面了! 这意味着系统核心已经恢复正常。
“所有程序都无法打开” 是一个非常典型的症状。 这通常不是因为 EFI 分区的问题,而是因为权限问题或者用户目录挂载问题。
最常见的原因是:/tmp 目录权限不对。
诊断与修复
Linux 下的很多图形程序(KDE, Gnome, Firefox等)启动时都需要往 /tmp 目录写临时文件。如果 /tmp 权限不够,程序就会闪退或点不开。
- 检查并修复 /tmp 权限 (可能性 90%)
打开终端(如果图形终端打不开,按 Ctrl + Alt + F3 进入纯文本控制台,登录 root)。
执行命令:
Bash
ls -ld /tmp
正确的权限应该是:drwxrwxrwt (最后有个 t,这叫粘滞位)。
错误的样子:drwxr-xr-x (普通权限)。
修复命令:
Bash
chmod 1777 /tmp
2. 检查 /home/creedxz 的所有者 (可能性 50%)
你从备份包还原回来,有时候文件的所有者(Owner)可能会乱,导致你当前登录的用户(creedxz)读写不了自己的家目录配置。
检查命令:
Bash
ls -ld /home/creedxz
应该显示:drwxr-xr-x ... creedxz creedxz ...
如果显示 root root,那就坏了。
修复命令:
Bash
chown -R creedxz:creedxz /home/creedxz
3. 检查 /home/creedxz/.cache 是否存在
你在备份时排除了 /home/creedxz/.cache。 虽然理论上程序会自动创建它,但如果父目录权限不对,或者程序比较笨,可能会失败。
手动创建并修复:
Bash
mkdir -p /home/creedxz/.cache
chown -R creedxz:creedxz /home/creedxz/.cache
chmod 700 /home/creedxz/.cache
操作建议
请按 Ctrl + Alt + F3 切换到 TTY3 控制台,登录 root,一次性执行以下修复组合拳:
Bash
# 1. 修复 /tmp (最重要)
chmod 1777 /tmp
# 2. 修复家目录权限 (以防万一)
# 请确认你的用户名是 creedxz,如果不是请修改
chown -R creedxz:creedxz /home/creedxz
# 3. 补全缺失的缓存目录
mkdir -p /home/creedxz/.cache
chown creedxz:creedxz /home/creedxz/.cache
# 4. 彻底重启
reboot
結束。