使用 tar 命令还原系统搞不定 grub 引导,启动报错
尝试解决
正在看 arch wiki 和各种教程, 看得头大, 搞了一个晚上都没搞定
有概念但不清楚:
1.分区 uid 发生变化,需要修改 grub 相关信息
2.需要重建 grub 引导
3.需要重新挂载分区, 分区 uid 也发生变化
过程
[ol]
[/ol]
系统为 arch(endeavouros)
分区情况为:
/dev/sda1 ==> /boot/efi fat32/esp
/dev/sda2 ==> / xfs
/dev/sda3 ==> /home xfs
tar cvpzf backup.tgz --exclude=/proc --exclude=/lost+found --exclude=backup.tgz --exclude=/mnt --exclude=/sys --exclude=/media --exclude=/run /
# 挂分区并还原
mount /dev/sda2 /mnt
mkdir /mnt/home
mount /dev/sda3 /mnt/home
mkdir /mnt/boot/efi
mount /dev/sta1 /mnt/boot/efi
tar xvpzf /path/to/backup.tar.gz -C /mnt --numeric-owner
# 修复引导
sudo arch-chroot /mnt
grub-install —target=x86_64-efi —efi-directory=/boot/efi
grub-mkconfig -o /boot/grub/grub.cfg
# 修复挂载分区 uuid
blkid
# 更新三个分区的 uuid
vim /etc/fstab
# 新建排除备份的文件夹
mkdir proc
mkdir mnt
mkdir sys
mkdir run
exit
sudo umount /mnt/home
sudo unmout /mnt/boot/efi
sudo unmout /mnt
reboot
启动报错
/boot/grub/x86_64-efi/normal.mod not found
grub rescue
临时进入系统
set
cmdpath=(hd3,gpt3)/EFI/BOOT
prefix=(hd0,gpt3)/boot/grub
root=hd0,gpt3
ls
ls (hd0,gpt2)/boot/grub
set root=hd0,gpt2
set prefix=(hd0,gpt2)/boot/grub
insmod normal
normal
进入系统后
sudo pacman -S grub
sudo mv /boot/grub/grub.cfg /boot/grub/grub.cfg.bak
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=EndeavourOS
sudo grub-mkconfig -o /boot/grub/grub.cfg
# 检查 cfg,发现是 gpt2 了
但为什么重启还是同样错误, root 还是 gpt3????