恢复备份的Linux分区

恢复备份的Linux分区

假设我们有一个/dev/sda有大量空间的空驱动器。我们还有一个以前的 Linux 备份的分区/dev/sdb1。其中包含常用的 linux 文件系统等/home/usr值得注意的是缺少 EFI 引导分区。

从这个设置中,我们将如何

  1. 将分区复制到/dev/sda,为启动分区留出空间
  2. 创建启动到此文件系统的启动分区
  3. 安装 grub 以从 BIOS 引导至此

答案1

首先,安装/dev/sdb1/src。我知道你的映像中没有 /boot/efi,但我不知道你的 /boot 是否是单独的。检查是否有/bootin 的条目/src/etc/fstab。如果有的话,我们也必须重新创建它。

将分区复制到 /dev/sda,为引导分区留出空间

相反,首先创建 EFI 启动分区(GPT 表,将第一个分区设为 4 GB FAT32 分区,标记“EFIboot”以供识别)。

确保您已格式化分区(sudo mkfs.vfat /dev/sda1假设 sda1 是分区名称),然后记下您获得的 UUID sudo lsblk -o UUID /dev/sda1(我们将其称为uuid_efi)。

/boot如果in中有一个条目/src/etc/fstab,也为此创建一个 4GB 分区(ext4,没什么特别的)。也记下它的 UUID(我们称之为uuid_boot)。

在 sda 上添加一个适当大小的分区来存放 的内容/dev/sdb1,对其进行格式化(提示:使用与原始文件系统类型相同的文件系统类型可以使系统的默认配置仍然使用它)并将其挂载到 和/dstcp --archive /src/* /dst/。这可能需要一段时间!

调整/dst/etc/fstab/boot/efi的量UUID=${uuid_efi}。如果本身有一个/boot条目,请将其调整为UUID=${uuid_boot},两者均如上所述。

/proc/sys/dev绑定/run/dst

for mnt in {proc,sys,run}; do
  sudo mount -o bind "/${mnt}" "/dst/${mnt}"
done

最后打开一个 shell,将/dst目录视为/

sudo chroot /dst /bin/bash

如果存在,安装/boot;然后/boot/efi从该外壳内安装

mount /boot
mount /boot/efi

多田。现在您有了一个 shell,它可以看到所有内容,就好像它在启动的目标系统上运行一样。

重新安装引导加载程序的常用发行版特定方法适用于此处。对于 debianoid 来说,就是这边走,对于 redhatoids 来说,可能是yum reinstall grub2-efi。对于其他发行版,您需要进行自己的研究(搜索引擎distroname reinstall grub应该可以)。然后使用发行版特定的方式重新安装最新的内核包,正确填充 /boot/ 并重新生成 initrds。

相关内容