我设法通过 rsync 备份我的 arch linux :
# rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /run/media/username/archlinux
编辑 fstab:
#
# /etc/fstab: static file system information
#
# <file system> <dir> <type> <options> <dump> <pass>
# /dev/sda3
UUID=d2b779b2-b2b1-48d6-8493-6468f99a0a21 / ext4 rw,relatime,data=ordered 0 1
# /dev/sda6
UUID=be9152a7-3178-44ba-b3d8-0448e9dd4c80 /boot ext4 rw,relatime,data=ordered 0 2
# /dev/sda5
UUID=5b2ce0ad-9d59-4023-8ca6-f6a6bbdd59e7 none swap defaults 0 0
>
#
# /etc/fstab: static file system information
#
# <file system> <dir> <type> <options> <dump> <pass>
# /dev/sda3
UUID=The UUID of the USB drive / ext4 rw,relatime,data=ordered 0 1
然后通过 grub-mkconfig 重新生成 grub 配置:
sudo grub-mkconfig -o /run/media/username/archlinux/boot/grub/grub.cfg
它返回:
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/initramfs-linux.img
Found fallback initramfs image: /boot/initramfs-linux-fallback.img
Found Windows 10 (loader) on /dev/sda1
Found Arch on /dev/sdb1
done
但 /boot/grub/grub.cfg 的 UUID 是我原始分区的 UUID,而不是我的 bakcup,尽管看起来 grub 在我的 USB 记忆棒上找到了 arch 安装(在 /dev/sdb1 上找到了 Arch)
在 arch linux wiki 中,建议使用 mkinitcpio:
# mkdir /mnt/arch
# mount /dev/sdb3 /mnt/arch
# cd /mnt/arch
# mount -t proc proc proc/
# mount --rbind /sys sys/
# mount --rbind /dev dev/
# chroot /mnt/arch /bin/bash
# mkinitcpio -p linux
但UUID还是一样的。我已经多次运行此操作,但得到了相同的结果。当我使用 USB 启动时,它甚至不加载 grub,它直接进入我原来的 grub,而不是安装在 USB 上的 grub。在不同的 USB 上,它会导致后屏幕,我必须移除 USB 才能看到硬盘上安装的 grub。任何帮助,将不胜感激