我想克隆一个现有的Debian安装,并在一个不同大小的硬盘的新机器上恢复。
分区非常简单- /dev/sda3 1用于EFI,/dev/sda3 2用于Linux,/dev/sda3 3用于交换。
在我创建图像的机器上,我主要是这样做的:
fsarchiver savefs /images/${BACKUP_FILE_NAME}.fsa /dev/sda1 /dev/sda2 -e *.fsa -v -j4 -A -z 9我还保存了以下内容的输出:
sfdisk -J /dev/sda以及
bklid在我想要恢复的机器上,我基本上是这样做的:
echo "label: gpt" | sfdisk /dev/sda
FULL_DISK_SIZE=`sfdisk -s /dev/sda`
let VARIABLE_SIZE=$FULL_DISK_SIZE/1024/1024-10
cat < /tmp/sfdisk.txt
size=512M, type=${SFDISK_TYPE_BOOT}, uuid=${SFDISK_UUID_BOOT}
size=${VARIABLE_SIZE}G, type=${SFDISK_TYPE_LINU}, uuid=${SFDISK_UUID_LINU}
type=${SFDISK_TYPE_SWAP}, uuid=${SFDISK_UUID_SWAP}
EOT
sfdisk /dev/sda < /tmp/sfdisk.txt其主要思想是保留原始分区类型以及部分uuids,但在linux分区的大小方面是灵活的。我粗略地说这里是全尺寸减去10 GB。
然后,我恢复这样的一切:
fsarchiver restfs sourceimage.fsa id=0,dest=/dev/sda1 id=1,dest=/dev/sda2这是在完全相同硬盘的机器上工作的。如果硬盘是不同的,我不能从它启动。
如果我定期在这些机器上安装Linux,保存分区信息,擦除它们,然后再次尝试从上面的过程,它仍然失败与旧的分区信息(不足为奇),但它立即开始工作,如果我使用新磁盘的部分uuid的EFI驱动器。这让我相信这些部分都与此有关。
然后,我回到原来的机器上,恢复了它上的图像,但我用一个字母更改了EFI分区的uuid部分,看看它是否会出错--它确实会这样做。另外,让sfdisk自动生成部分uuid并不会使驱动器在恢复映像后可引导。
我不在乎这个部分是保存的还是新的,但我确实想让它自动化。你知道我需要改变什么才能成功吗?
发布于 2018-12-12 22:01:13
我想我已经搞清楚了。这部分在结尾时丢失了:
mount -o rw,remount /sys/firmware/efi/efivars
efibootmgr -c -g --disk /dev/sda --part 1 -l \\EFI\\debian\\grubx64.efihttps://unix.stackexchange.com/questions/487631
复制相似问题