1to1을 사용하여 내부 디스크를 복사했습니다 dd
. 외부 디스크는 부팅 가능하지만 디스크가 동일한 UUID를 공유하므로 부팅 프로세스는 실제로 내부 디스크에서 계속됩니다.
내부 디스크를 외부 디스크로 완전히 부팅 가능한 백업을 만드는 방법은 무엇입니까?
중복된 uuid로 인해 외부 디스크가 아닌 내부 디스크에서 부팅되는 것 같습니다. 이 문제를 해결하기 위해 패키지를 사용하는 것과 같은 문제에 대한 해결책이 있습니까 dd
?
목적: 먼저 외부 디스크에 백업하고 외부 디스크에서 부팅한 후 시스템 업그레이드를 적용하고 다시 시작한 후 업그레이드를 테스트합니다. 업그레이드가 성공하면 내장 디스크도 업그레이드할 수 있습니다.
답변1
내부 디스크를 끄거나 플러그를 뽑는 것이 좋습니다.
하지만...
백업 드라이브를 백업한 후 실제로 백업 드라이브의 UUID를 변경할 수 있습니다. 각 파티션에 대해 이 작업을 수행하는 것을 잊지 마십시오. 예를 들어 /dev/sdb1
:
# Generate a random UUID:
cat /proc/sys/kernel/random/uuid
7a5e6fad-4fa2-4177-b8a6-dfeeeb6289df
# Then use this for the partition UUID
tune2fs -U 7a5e6fad-4fa2-4177-b8a6-dfeeeb6289df /dev/sdb1
그런 다음 백업을 수행하십시오. 다음 파일에서 이전 UUID를 확인하고 새 UUID로 교체하십시오. <distribution>
운영 체제로 교체해야 합니다 .
/etc/fstab
/boot/grub/grub.cfg
/boot/efi/EFI/<distribution>/grub.cfg
더 어려운 문제는 BIOS가 외부 EFI 파티션을 사용하도록 설득하는 것입니다. 사용할 드라이브를 지정할 수 없는 경우 EFI 구성을 복사해야 할 수도 있습니다.메인 드라이브에(예: /boot/efi/EFI/debian/
)를 선택 /boot/efi/EFI/backup/
하고 BIOS에 설치하세요.
답변2
사용하지 마세요디isk디음. 왜냐면 1GB의 데이터만 있는 500GB 파티션이 있다면DD실제로 필요한 것이 1GB이면 500GB가 조금씩 확보됩니다. 또한 크기가 정확히 같지 않은 여러 디스크나 파티션에 500GB를 비트 단위로 적용하는 방법에 대한 의문도 제기됩니다. 디스크 ID와 관련된 기타 문제를 해결하고 잘못된 디스크 ID 또는 레이블을 가리키는 부팅 문제를 해결하는 더 나은 방법
/
현재 운영 체제를 실행 중인 디스크의 루트 파티션에서 데이터를 제대로 캡처 하지 못할 수도 있습니다 . 그래서 당신은 부팅 가능하게 될 것입니다금Linux 운영 체제가 설치된 디스크 및 기타 디스크는 컴퓨터를 실행합니다.당신의 설치금예를 들어, 디스크에 다음이 포함된 경우
- /dev/sdb1(/boot/efi 유형 VFAT)
- /dev/sdb2를 스왑으로 사용
- /dev/sdb3 / EXT4 유형
mkdir /mygolddisk_sb1
mkdir /mygolddisk_sb3
mount /dev/sdb1 /mygolddisk_sdb1
mount /dev/sdb3 /mygolddisk_sdb3
지금은뿌리가 그리고아스팔트파티션별로 신경쓰세요. 파티션이 1000GB이고 데이터가 2GB만 있는 경우 2GB의 tar 파일만 얻을 수 있습니다. 관리가 더 쉬워졌습니다. 그러나 이것은 실제로아니요파일 시스템을 독립적으로 만듭니다. 즉, 루트 파티션이 EXT4이고 원래 파일 시스템 유형이 아닌 새 디스크 파티션에 추출하는 경우입니다.외부 4시작되지 않을 수 있습니다. 예를 들어 원래 루트 파일 시스템이 XFS인 경우 파일 시스템을 새 디스크 XFS에 배치하고, 이전 디스크 루트 파티션이 EXT2인 경우 새 디스크 루트 파티션을 EXT2로 만듭니다.
cd /mygolddisk_sdb1
tar -cf /somewhere_else/mygolddisk_efi_vfat.tar *
cd /mygolddisk_sdb3
tar -cf /somewhere_else/mygolddisk_root_ext4.tar *
새 디스크 또는 사용한 빈 디스크를 마운트하고 파티션 테이블을 생성합니다(GPT 권장).
mygolddisk_efi_vfat.tar
이전에 만든 것과 동일한 유형의 파티션을 만드세요. 이제 이 파티션이 데이터를 보관할 수 있을 만큼 크다면 원하는 크기로 만들 수 있습니다. 원하거나 필요한 경우 스왑 파티션에서도 동일한 작업을 수행하세요. 루트 파티션도 마찬가지입니다/
. 이제 새 디스크의 나머지 부분으로 크기를 설정할 수 있습니다. 이제 다음과 같은 결과가 나올 것입니다.- /dev/sdc1로가상 지방크기는 200MB,
mygolddisk_efi_vfat.tar
15MB입니다. - /dev/sdc2(SWAP은 2GB이므로 이전 디스크에서는 어떤 크기든 가능)
- /dev/sdc3로외부 4아래와 같이 루트 파티션보다 크거나 작을 수 있는 새 디스크의 남은 크기금디스크이지만 유일한 요구 사항은 디스크가 다음보다 크다는 것입니다.
mygolddisk_root_ext4.tar
mkdir /newdisk_Boot_partition
mkdir /newdisk_Root_partition
mount /dev/sdc1 /newdisk_Boot_partition
mount /dev/sdc3 /newdisk_Root_partition
cd /newdisk_Boot_partition
tar -xf /somewhere_else/mygolddisk_efi_vfat.tar .
cd /newdisk_Root_partition
tar -xf /somewhere_else/mygolddisk_root_ext4.tar .
- /dev/sdc1로가상 지방크기는 200MB,
이 시점에서 이전 {관련 데이터를 복사했습니다.금} 디스크. 그것은 될 것이다훨씬 더 빨리이렇게 하는 대신
dd
모든 비트를 복사하지 않으므로 매우 낭비입니다. 또한 이전 디스크의 파일 시스템 문제도 전송되지 않습니다.. 하지만 남은 질문은 입니다having copied files referencing disk UUID or label of your old disk which is no longer relevant on some new disk
.EFI이든 GRUB이든 부팅 프로세스를 이해하면 됩니다. 또한 EFI가 아닌 MBR 파티션 테이블을 사용하는 경우 MBR을 처리하면 {설명되지 않음, 범위 밖} 부팅하기 위해 디스크의 부팅 섹터를 수정해야 하는 복잡성이 추가됩니다. 그러나 단순화를 위해
EFI
및ELILO
예제를 사용하면 다음을 수행합니다.- /boot/efi/.../elilo.conf 편집
- 기존 디스크의 디스크 ID 또는 레이블을 가리키는 항목을 찾아 새 디스크의 디스크 ID 또는 레이블로 변경합니다.
/etc/fstab
이전 디스크를 가리키는 항목이 포함되어 있는지 잊지 말고 해당 항목(디스크 ID, 레이블, UUID)을 새 디스크의 항목으로 변경하세요.
이것은 간단한 EFI 및 ELILO 설정이며, 완료해야 할 전부입니다. GRUB2를 사용하고 하나의
/boot
파티션과 별도의/boot/efi
파티션이 있는 경우 해당 파티션을 구체적으로 고려하고 비슷한 방식으로 필요한 GRUB 파일을 수정해야 합니다. 이전 디스크에 대한 참조를 찾아 파티션으로 변경하면 됩니다. 새 디스크.새 디스크를 파티션하고 포맷하고 마운트하면 새 레이블(사용자가 만들었기 때문에)이나 UUID 또는 scsi ID를 알거나 볼 수 있습니다. 이전 in
/newdisk_Root_partition/etc/fstab
및 out 대신 해당 UUID, scsi-id 또는 태그를 복사/newdisk_Boot_partition/efi/.../elilo.conf
하거나, GRUB를 사용하는 경우 아래 관련 파일에 복사하세요/newdisk_Boot_partition
. 이제 새 디스크가 올바르게 부팅됩니다.- 또한 디스크를 참조하고 있는지 확인하십시오.이름으로다음과 같은 작은 트릭을 수행하여 이 문제를 해결할 수 있습니다. 예를 들어 부팅 파티션이 1이고 루트 파티션이 3인 경우 모든 디스크 참조
/dev/sda1
와/dev/sda3
. 디스크 이름이 지정된 경우에만sda그 다음에~ 할 것이다그랬다면 그런 일이 일어났을 텐데단 하나뿐인컴퓨터에 연결된 디스크입니다. 따라서 잘못된 UUID 또는 scsi-id를 사용하는 데 문제가 있는 경우 모든 것을 다음으로 변경하십시오./dev/sda#그리고 다른 모든 디스크를 분리하여 부팅하고 문제를 단계별로 해결하세요. 부팅 파일에서 디스크 파티션을 참조하는 방법에는 여러 가지가 있으며 각각/etc/fstab
장점과 단점이 다릅니다.ELILO
GRUB
이름으로,ID별,태그로,-uuid를 누르세요, 그리고우회로.
답변3
사실 제가 오늘 좀 일찍 그랬거든요! 제가 이 작업을 수행 중인 노트북은 레거시 MBR 기반 BIOS를 사용하여 부팅하지만(ThinkPad X201 태블릿) 대부분의 단계는 (u)EFI와 "레거시" BIOS 간에 동일해야 합니다. 나는 과거에 EFI 기반 Macintosh에서 비슷한 작업을 수행한 적이 있습니다.
1. 새 UUID를 새 드라이브의 파티션에 할당하여 구별합니다.
새 디스크의 UUID를 업데이트하려면 이전 디스크에서 부팅하고 실행합니다(ext* 유형 파티션의 경우).
tune2fs -U `uuidgen` /dev/sdb1
... /dev/sdb1
새 디스크의 파티션-재UUID이고 현재 /dev/sda
.
오류가 발생하면 이름을 바꾸기 전에 파일 시스템 검사를 실행하라는 메시지가 표시될 수 있습니다. tune2fs
알려주는 명령을 실행 한 후 tune2fs를 다시 실행하십시오.
다른 파일 시스템의 경우 UUID를 변경하는 방법을 알아내야 합니다. 가장 일반적인 두 가지 사항은 다음과 같습니다.
- btrfs는
btrfstune -U `uuidgen` /dev/sdb1
. - XFS를 사용한다고 생각
xfs_admin -U `uuidgen` /dev/sdb1
하지만, 개인적으로 XFS를 사용해 본 적이 없기 때문에 이에 대해 100% 확신할 수는 없습니다.
새 디스크의 모든 파티션에 대해 이 작업을 반복합니다.
2. 새 드라이브를 편집합니다 /etc/fstab
.
새 디스크의 루트 파티션을 마운트하고 /etc/fstab
기존 디스크의 UUID를 새 UUID로 바꾸도록 편집합니다. 를 실행하여 새로운 UUID가 무엇인지 확인할 수 있습니다 blkid
.
3. 계속하기 전에 새 드라이브로 부팅합니다(임시 해결 방법 사용).
이 시점에서 새 드라이브로의 임시 1회 부팅을 위해 커널 매개변수에서 이를 지정할 수 있습니다 root=/dev/sdb1
(새 디스크의 루트 파티션인 경우). /dev/sdb1
GRUB2에서는 Linux 부팅 항목에서 "e"를 누르고 linux
. 전체 Linux 설치가 하나의 파티션(별도의 기본 파티션이 없는 등)에 있는 경우 처음부터(UUID를 변경하기 전) 이 작업을 수행할 수 있습니다.
4. 향후 부팅 시 올바른 드라이브를 사용하도록 새 fstab으로 램디스크를 업데이트합니다.
다음으로 부팅된 램디스크를 실제로 업데이트해야 합니다. 다음 단계를 위해 나는추천가능하다면 원본 디스크를 삭제하세요. 이렇게 하면 grub을 업데이트할 때 새 디스크의 부팅 메뉴에서 사용 가능한 항목에 이전 디스크를 추가하는 것을 쉽게 피할 수 있습니다.
update-initrd
어쨌든, 루트로서 다음을 실행해야 합니다(데비안과 파생 버전에서는 이 명령이 다른 버전에서도 작동한다고 생각합니다 ):
update-initramfs -u
4.5 GRUB 메뉴 항목 업데이트(꼭 필요한 것은 아닐 수도 있음)
이것이 정말로 필요한지 잘 모르겠습니다. 인정하기 부끄럽습니다. 내가 이렇게 하는 이유는 "아프지 않기" 때문이고 내 노트북에는 없기 때문입니다.
grub-install /dev/sdX
(여기서 /dev/sdX는 grub 부트로더를 다시 설치하려는 드라이브입니다. /dev/sdX1 등과 같은 파티션을 지정하지 마십시오. 장치 이름만 지정하십시오.)
이를 통해 첫 번째 시도에서 문제 없이 복제된 디스크를 부팅할 수 있었습니다. 저는 마지막으로 더 큰 드라이브로 마이그레이션할 때와 거의 같은 방식으로 프로세스를 진행했습니다.
문제가 지속되면 자동으로 디스크를 사용하도록 BIOS/(U)EFI 설정에서 디스크의 부팅 우선 순위를 변경해야 할 수도 있습니다.
답변4
나는 /etc/fstab
다음과 같은 시스템 설정을 좋아합니다.
/etc/fstab
# <device> <dir> <type> <options> <dump> <fsck>
LABEL=EFI /boot vfat defaults 0 2
LABEL=SYSTEM / ext4 defaults 0 1
LABEL=DATA /home ext4 defaults 0 2
LABEL=SWAP none swap defaults 0 0
https://wiki.archlinux.org/index.php/fstab#File_system_labels
이를 통해 UUID 변경에 대해 걱정하지 않고 복제본을 생성할 수 있습니다.
그런 다음 BIOS를 통해 외장 HDD를 통해 수동으로 부팅할 때마다