复制分区并从新复制的分区启动

复制分区并从新复制的分区启动

我正在尝试创建一个脚本来创建整个分区的映像,恢复另一个分区中的映像并从新分区启动。

我对最后一部分遇到问题,即进行更改以从新分区启动。

为此,我使用自动分区安装 ubuntu/debian 并像这样配置硬盘

  • /dev/sda
    • /dev/sda1 - /boot/efi
    • /dev/sda2 - / (Ubuntu/debian)
    • /dev/sda3 - 交换
    • /dev/sda4 - 未安装 - 复制/恢复 sda2 映像的目标分区

所以我想做的是创建一个映像dev/sda2并将其恢复到/dev/sda4然后从 启动/dev/sda2

这样做的原因是为了能够提供完整的 unix 安装映像,并在没有互联网连接的情况下“更新”某些 IOT 设备。因此,每次我们提供新映像时,该映像都会在其中一个分区中恢复,并且该分区将成为启动分区。每次我们提供新映像时,即每次启动分区切换时,都会应用此过程。如果在应用/安装新映像时出现问题,则启动分区不应更改,而是从“旧的工作”分区启动。

到目前为止,我成功使用创建了映像dump并将其恢复到目标分区。

我在更改告诉 grub 从恢复转储的另一个分区启动时遇到问题。

我尝试了各种方法,例如grub-installupdate-grubchroot 到恢复的安装并运行这些命令,但我从未让它工作。

有人可以解释一下要做什么才能实现我正在寻找的目标吗?

答案1

现代 Linux 发行版倾向于配置 GRUB 以使用文件系统 UUID(或等效项)来识别要引导的文件系统。当您克隆sda2到 时sda4,您现在将拥有两个具有相同 UUID 的文件系统。 GRUB 很可能会启动它找到的第一个具有匹配 UUID 的系统,或者在检测到多个匹配 UUID 时停止。

因此,克隆文件系统后您需要做的第一件事就是为 上的新克隆分配一个新的 UUID sda4,以使 UUID 再次唯一。这是一个问题,其中包含指定如何更改许多文件系统类型的 UUID 的答案。我的猜测是您错过了这一步。

第二步是更新位于 的mini- grub.cfgon 。它包含的命令将查找包含主 GRUB 配置文件的文件系统。一旦您更新了 UUID,GRUB 将在新克隆而不是原始文件系统中查找其配置。sda1/boot/efi/EFI/<name of distribution>/grub.cfgsearch.fs_uuid/boot/grub

最后,您需要更新新克隆的/boot/grub/grub.cfg和,才能实际使用 的新 UUID 。/etc/fstabsda4sda4

(即使您选择使用分区/设备名称而不是 UUID,您也必须对所有这些相同的位置进行更改。)

相关内容