dd를 통해 새 드라이브의 데이터를 복구한 후 grub 파일을 편집하는 방법은 무엇입니까?

dd를 통해 새 드라이브의 데이터를 복구한 후 grub 파일을 편집하는 방법은 무엇입니까?

우분투 20.04와 Windows 10이 설치된 이중 부팅 시스템이 있습니다. 공간이 부족해서 SSD를 512GB로 업그레이드했습니다. 라이브 우분투 드라이브로 부팅하고 모든 파티션을 백업했습니다.우분투, 윈도우, efi또한마이크로소프트는 보유하고 있다이전 256 SSD에서 통과됨DD다음과 같이

dd if=/dev/nvme0n1p6 of=/path/to/linux.img

4개의 파티션 각각에 대해

백업 후 아래와 같이 각 파티션을 새 SSD에 복원했습니다.

dd if=/path/to/linux.img of=/dev/nvme0n1p4

참고하세요NVME0N1P4비교NVME0N1P6이전(파티션 이름이 변경되어 아마도 내 우분투 부트로더 grub의 항목이 엉망이 되었을 것입니다)

나는 부트로더와 그럽 항목 및 작동 방식에 대해 거의 알지 못합니다. 도움을 주시면 대단히 감사하겠습니다.

이제 시스템을 재부팅하려고 하면 이전의 기본 동작이었던 부팅 시 ubuntu grub을 로드하는 대신 Windows 부팅 파일을 찾을 수 없다는 Windows OS의 오류가 표시됩니다. 이는 변경 때문인 것 같습니다. 이제 파티션 이름이 다릅니다. 이전까지.

나는해야한다DD개별 파티션이 아닌 전체 SSD를 사용했지만 일부 다른 SO 게시물에서는 복원하려는 하드 드라이브가 아닌 다른 하드 드라이브에 백업하면 문제가 발생할 수 있다고 언급했습니다.

또한 grub을 업데이트하고 라이브 CD를 통해 grub을 설치하려고 시도했지만 efi 파티션을 찾을 수 없다고 표시됩니다.

내 작업과 관련된 모든 작업은 SSD에 있으며 모든 구성, 패키지, 프로젝트 및 모든 것과 함께 더 이상 Linux를 설치하고 싶지 않습니다. 이틀 연속으로 이 문제를 해결하려고 노력했지만 해결되지 않았습니다.

어떤 도움이라도 대단히 감사하겠습니다! :)

gparted설명

답변1

msftdataNTFS 파티션에 "플래그"가 있고 /boot/efiFAT32 파티션이 있는 것으로 판단하면 귀하가GPT파티션을 나누고 부팅 중네이티브 UEFI모드, 기존 MBR 및 BIOS를 각각 대체합니다. 이 두 정보 블록에는기본수행해야 하는 작업에 영향을 미칩니다.

BIOS 설정에 시스템을 부팅하도록 구성하는 옵션이 포함되어 있는 경우UEFI 모드만 해당아니면 적어도레거시 모드보다 UEFI 선호, 이 설정을 사용하는 것이 좋습니다. 복구 작업이나 기타 작업의 일부로 실수로 잘못된 모드에서 부팅하는 번거로움을 최소화해야 합니다.


첫째, /boot/efi파티션이 EFI 시스템 파티션(줄여서 ESP)으로 올바르게 표시되지 않았습니다. 을 사용하고 있는 것으로 나타나므로 gparted이는 esp해당 파티션에 플래그를 설정하는 것을 의미합니다. 해당 boot플래그도 자동으로 설정됩니다.

(GPT 파티션의 경우 실제로 "플래그" espmsftdata아니라 다양한 GPT 파티션 유형 UUID입니다. gparted이는 플래그로 표시될 뿐입니다. 파티션은 한 가지 유형의 UUID만 가질 수 있으므로 약간 혼란스러울 수 있습니다. 따라서 대부분의 "플래그"는 실제로 GPT의 경우 boot플래그는 기본적으로 호환성상의 이유로 별칭일 뿐입니다 esp.

위치, 크기 및 "없음" 레이블은 /dev/nvme0n1p2이것이 아마도 원하는 파티션임을 나타냅니다.마이크로소프트는 보유하고 있다. 그렇다면 msftres이에 대한 플래그를 설정해야 합니다. 이는 향후 파일 시스템 변환 및 업그레이드를 허용하기 위한 Windows 파티션 앞의 빈 공간 라이브러리일 뿐입니다.

남은 유일한 Linux 파티션은 /dev/nvme0n1p4이지만 마운트 지점으로 표시되어 있습니다 /home. 이것이 맞습니까? 그렇다면 실제 우분투는 어디에 있습니까?루트 파일 시스템?


다음 문제는 각 파티션을 별도로 이미지화하고 분명히 파티션 테이블을 다시 작성하기 때문에 각 파티션의 GPT 파티션 테이블에 저장된 고유 PARTUUID가 다르다는 것입니다.

Linux 및 GRUB은 일반적으로 다음을 사용합니다.파일 시스템 수준대신 UUID이므로 이 변경 사항의 영향을 거의 받지 않습니다. 그러나 UEFI 펌웨어는 EFI 시스템 파티션의 기본 식별자로 PARTUUID를 사용할 가능성이 높습니다. 이는 UEFI NVRAM 부팅 항목( sudo efibootmgr -vUEFI 모드에서 부팅할 때 표시됨)이 더 이상 사용되지 않음을 의미합니다.

Windows가 (이동식 미디어/대체 부팅 경로)에 부팅 관리자의 두 번째 복사본을 설치했으므로 /boot/efi/EFI/boot/bootx64.efi이제 사용자의 추가 입력 없이 UEFI 펌웨어가 찾을 수 있는 유일한 부팅 로더입니다. 그러나 구성 파일을 찾을 수 없거나 /boot/efi/EFI/Microsoft/Boot/BCD변경 사항으로 인해 포함된 정보가 유효하지 않은 것 같습니다.

당신은 시작하려고 할 수 있습니다UEFI 모드에서Windows 10 설치 미디어에서 "Windows 복구" 옵션을 사용하세요. 작동한다면 이것이 아마도 Windows 부트로더를 복구하는 가장 쉬운 방법일 것입니다. Windows 복구 프로세스는 자동으로 Windows를 부팅 순서의 첫 번째 운영 체제로 지정하므로 Linux 부트로더를 복구하기 전에 이 작업을 수행해야 합니다. Linux NVRAM 부팅 변수 제거). Windows를 먼저 복구하면 한 번만 실행 취소하면 됩니다.

간단히 명령을 사용하여 이 문제를 해결할 수도 있습니다 efibootmgr. 먼저 /dev/nvme0n1p1설치되어 있는지 확인한 /boot/efi후 다음을 실행하세요(예: Live CD에서).

sudo efibootmgr -c -L UbuntuNew  -d /dev/nvme0n1 -l \\EFI\\ubuntu\\shimx64.efi

(보안 부팅을 비활성화했지만 /boot/efi/EFI/ubuntu/shimx64.efi존재 하지 않는 경우 shimx64.efi명령을 대체하십시오 grubx64.efi.)

이렇게 하면 BIOS 부팅 설정에 "UbuntuNew"로 표시되는 새 UEFI 부팅 변수가 생성됩니다. 이름은 원하는 대로 변경할 수 있지만 GRUB를 다시 설치하면 "Ubuntu"와 같은 이전 이름으로 되돌아갈 수 있습니다.

관련 정보