기존 데비안 설치를 복제하고 다른 크기의 하드 드라이브가 있는 새 컴퓨터에 복원하고 싶습니다.
파티셔닝은 매우 간단합니다. EFI의 경우 /dev/sda1, Linux의 경우 /dev/sda2, 스왑의 경우 /dev/sda3입니다.
이미지를 생성하는 머신에서는 기본적으로 다음을 수행합니다.
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 <<EOT > /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
그 이면의 주요 아이디어는 원래 파티션 유형과 uuid의 일부를 유지하면서 Linux 파티션 크기의 유연성을 유지하는 것입니다. 여기서는 대략 전체 크기에서 10GB를 뺀 크기를 말합니다.
그런 다음 다음과 같이 모든 것을 복원합니다.
fsarchiver restfs sourceimage.fsa id=0,dest=/dev/sda1 id=1,dest=/dev/sda2
이는 정확히 동일한 하드 드라이브를 가진 시스템에서 작동합니다. 하드 드라이브가 다르면 부팅할 수 없습니다.
정기적으로 이러한 컴퓨터에 Linux를 설치하고 파티션 정보를 저장하고 지우고 위 프로세스를 다시 시도하면 이전 파티션 정보로 인해 여전히 실패하지만(놀랍지 않은 일이지만) 새 디스크를 사용하면 즉시 작동하기 시작합니다. EFI 드라이브의 uuid 부분. 이로 인해 이러한 부분 UUID가 관련되어 있다고 믿게 되었습니다.
그런 다음 이전 컴퓨터로 돌아가서 이미지를 복원했지만 EFI 파티션의 uuid 부분을 문자로 변경하여 문제가 발생하는지 확인했습니다. 실제로 그랬습니다. 또한 sfdisk가 자동으로 부분 uuid를 생성하도록 해도 이미지를 복원한 후 드라이브를 부팅할 수 없게 됩니다.
부분 uuid가 예약된 것인지 새로운 것인지는 별로 신경쓰지 않지만 이를 자동화하고 싶습니다. 이 작업을 수행하려면 무엇을 변경해야 하는지 아시나요?
답변1
나는 그것을 알아낸 것 같아요. 이 부분은 마지막에 빠졌습니다.
mount -o rw,remount /sys/firmware/efi/efivars
efibootmgr -c -g --disk /dev/sda --part 1 -l \\EFI\\debian\\grubx64.efi