Manjaro系统备份和恢复

背景

笔记本电脑装了windows和manjaro双系统,最近硬盘空间有点不够用了,决定换一块大一点的ssd。为了换完硬盘后能直接无缝使用,需要对原先的系统进行备份操作。windows系统备份恢复比较简单,以前也操作过多次,就不赘述了,但manjaro系统是头一次,踩了一些坑,遂记录一下。

备份

使用的备份软件是BorgBackup。BorgBackup使用简单,支持增量备份,即只备份发生变化的部分,可以针对性地对指定路径备份,可排除哪些路径可自由选择。因为是要换硬盘,所以需要将系统备份到远程设备,我这边是备份到我的unraid上面,下面是详细步骤

1.挂载远程备份目录

sudo mount -t cifs //192.168.50.80/backup /unraid/backup -o username=wenky

2.执行备份操作

#创建备份存储库
sudo borg init --encryption=none /unraid/backup/borg/manjaro

#备份根目录和家目录,同时排除一些不需要备份的文件夹
sudo borg create /unraid/backup/borg/manjaro::backup-20230817 /home / --exclude /unraid --exclude /proc --exclude /sys --exclude /dev --exclude /run --exclude /tmp --exclude /var/cache --exclude /var/log 

做完上面的备份操作后更换硬盘,然后重装系统

恢复

和备份操作一样,先挂载远程备份目录,然后执行下面的命令恢复系统

sudo borg extract /unraid/backup/borg/manjaro::backup-20230817

遇到问题

系统恢复完成后,启动时出现问题,出现错误提示: error: no such partition. entering rescue mode

这个错误通常意味着 GRUB 引导加载器找不到它预期会找到的某个分区。这可能是由多种原因造成的,包括分区表错误、GRUB 配置问题或文件系统损坏。我推测是因为重新安装系统时我对硬盘重新进行了分区,恢复时又把/boot和/boot/efi里面的东西也恢复成之前的导致 GRUB 引导加载器找不到它预期会找到的分区。下面是解决方法

进入 live 环境

通过安装系统的U盘进入 Live 系统,挂载安装系统时设置的分区

sudo mount /dev/nvme0n1p5 /mnt          #根分区
sudo mount /dev/nvme0n1p6 /mnt/home     #/home分区
sudo mount /dev/nvme0n1p7 /mnt/boot     #/boot分区
sudo mount /dev/nvme0n1p4 /mnt/boot/efi #/boot/efi分区

注:如果忘记了安装系统时设置的分区和挂载点的对应关系,可执行 lsblk -f 命令,这个命令会输出每个分区的详细信息,包括大小和标签这些信息

sudo manjaro-chroot /mnt

这个命令可以 chroot 到你的 Manjaro 系统,然后就能像在真正的系统上一样运行命令了。

更新 grub 配置

sudo update-grub

这会检测到你的 Manjaro 系统以及其他安装在电脑上的系统,包括双系统里的 Windows。

重新安装 GRUB

sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Manjaro

接着重启系统,然后又出现了两个问题:一是没有出现系统选择界面,直接进入manjaro了,二是manjaro系统启动失败,出现一堆报错提示后进入了紧急模式,报错内容如下

failed to start remount root and kernel file systems
timed out waiting for device /dev/disk/by-uuid/F38A-B058
dependency failed for /boot
dependency failed for /boot/efi
dependency failed for local file system
...

看起来是启动时挂载文件系统失败,很可能是UUID对不上,执行 blkid 命令可查看分区UUID信息,执行 cat /etc/fstab 可查看系统挂载信息。经对比发现确实是UUID不一致导致的,修改fstab文件后重启,顺利进入系统。

启动时没有windows系统选项问题

启动时没有出现windows系统选项的 GRUB 菜单,可能是 GRUB 配置没有正确地识别 Windows 系统,需要修复GRUB配置。

更新 GRUB 配置

在manjaro系统中运行

sudo update-grub

发现输出结果里识别到了windows系统并重新生成了GRUB启动菜单,重启系统发现出现了windows系统选项并能正常进入windows。

至此整个笔记本换盘问题解决