如何在 USB 闪存盘上备份的 arch linux 上重新配置 grub

如何在 USB 闪存盘上备份的 arch linux 上重新配置 grub

我设法通过 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。任何帮助,将不胜感激

相关内容