비EFI/GPT 설치를 EFI/GPT 설치로 복사

비EFI/GPT 설치를 EFI/GPT 설치로 복사

최근에 SSD 2개(첫 번째)를 구입했고 시스템을 그곳으로 옮길 예정입니다. MD RAID 1 + LVM을 사용합니다. 새로운 Stretch 설치를 설정할 것인지, 가능하다면 Jessie 설치를 새 디스크에 복사할 것인지 아직 결정하지 못했습니다.

UEFI/GPT를 새로 설치하고 싶습니다. 새 디스크에 테스트 확장 설치를 수행했지만 현재 jessie 설치( 및 파일 시스템)를 새 디스크에 복사하고 EFI 시스템 파티션은 그대로 두는 것을 고려 /하고 /home있습니다 /boot. 문제는 이것이 작동하는지 여부입니다. 비EFI/GPT 및 EFI/GPT 설치가 호환됩니까?

GRUB2의 작동 방식에 대한 대략적인 이해는 "일반" BIOS 설정이 일반적으로 GRUB의 첫 번째 단계를 MBR에 배치하고 두 번째 단계를 일반적으로 파티션에 배치한다는 것입니다 /boot. UEFI/GPT 설정에서는 아마도 모두 ESP에 있을 것입니다.

답변1

복사는 상대적으로 쉽습니다. Linux 설치는 (거의 전적으로) 파일일 뿐입니다. 가장 큰(유일한?) 예외는 BIOS의 부트 로더이며 마스터 부트 레코드와 마스터 부트 레코드와 첫 번째 파티션 사이의 섹터에 설치됩니다. UEFI는 사실상 이 예외를 제거합니다. 이제 부트로더는 파일일 뿐입니다.

간단히 말해서 BIOS 부팅이 작동하는 방식은 BIOS가 디스크(MBR)에서 첫 번째 섹터를 읽고 해당 섹터의 코드를 실행하는 것입니다. 코드에는 사용 가능한 섹터를 읽는 BIOS 기능이 있으며, grub의 경우 MBR과 첫 번째 파티션 사이의 나머지 섹터에서 나머지 부분을 자체적으로 읽습니다. 이를 위해서는 GRUB가 /boot 및 나머지 부분에서 구성을 읽을 수 있도록 파일 시스템을 이해할 수 있는 충분한 코드를 제공해야 합니다. 이 작업을 수행한 다음 거기에서 커널과 initramfs도 읽습니다. 그런 다음 커널을 시작합니다.

UEFI 부팅이 작동하는 방식(간단히 말해서)은 펌웨어가 파티션(적어도 GPT, 아마도 DOS)과 파일 시스템(적어도 FAT)을 인식한다는 것입니다. 실행할 명령을 저장하는 일종의 NVRAM(EFI 변수)이 있습니다. 셸 명령을 생각해 보세요(UEFI에는 셸이 포함됨). 즉, 경로(디스크, 파티션, 파일 시스템의 경로) 및 매개변수입니다. 명령을 실행합니다. Linux의 경우 이는 다음 중 하나입니다.

  • GRUB(Debian, 아마도 EFI/debian/grubx64.efi)와 같은 부트로더 또는 기타 여러 부트로더(refind, systemd-boot 등)
  • Linux 커널(데비안 지원헐떡거린 이후로)
  • 보안 부팅을 위한 Microsoft Signature Shim을 선택한 다음 위 중 하나를 로드합니다.

이 명령은 파일, 네트워크 읽기 등을 포함하여 UEFI 스택에 대한 전체 액세스 권한을 갖습니다. GRUB의 경우 ext4, mdraid, LVM 등에 대한 자체 파일 시스템 지원이 포함되어 있습니다.

궁극적으로 이는 Linux 설치에서 나타나는 차이점은 다음과 같습니다 /boot/efi/. GRUB는 디스크 시작 부분의 몇 가지 특수 섹터에 설치되지 않고 Debian Next에서는 다른 버전의 GRUB에 설치됩니다. grub-pc 대신 grub-efi-amd64(또는 -ia32)입니다. 설치된 grub 패키지를 전환해야 합니다.

제가 예상하는 유일한 것은 EFI 변수를 조작하려면 일반적으로 UEFI를 통해 부팅해야 한다는 것입니다. 따라서 grub 설치가 제대로 작동하는 데 어려움을 겪을 수 있습니다. 몇 가지 해결 방법:

  1. 시스템을 복사하고 grub 패키지를 변경한 후 UEFI 지원 복구 디스크(예: Stretch 설치 프로그램, 복구 모드에서 실행)로 부팅하고 grub-install 또는 efibootmgr을 실행합니다.

  2. 시스템에 부팅 선택 메뉴가 있으면 EFI 변수를 통해 부팅 옵션으로 설정되어 있지 않더라도 데비안 설치를 찾을 수 있습니다.

  3. grub 복사 /boot/efi/EFI/debian/grubx64.efi- /boot/efi/EFI/BOOT/bootx64.efi공식 UEFI 대체 경로입니다(적어도 64비트 시스템의 경우). 이는 펌웨어 부팅 메뉴에 표시되기에 충분할 수 있습니다.

  4. 시스템에서 UEFI 셸을 사용하여 시스템을 부팅할 수 있는 경우. 그런 다음 grub-install 또는 efibootmgr을 사용하여 EFI 변수를 업데이트할 수 있습니다.

이 작업이 완료되면 복사/변환된 시스템과 원래 UEFI를 사용하여 설치된 시스템 간에 차이가 없어야 합니다.

답변2

@derobert의 답변에는 다양한 옵션이 포함되어 있습니다. 나는 결국 그의 전화번호와 같은 것을 사용하게 되었다. 3, 하지만 그것에 대해 좀 더 자세히 설명하겠습니다.

에 설명된 방법에 따르면 한 볼륨 그룹에서 다른 볼륨 그룹으로 논리 볼륨 이동, BIOS를 사용하여 기존 Debian 9 시스템이 포함된 일부 논리 볼륨을 내가 구입한 일부 새 디스크에 복사했습니다. 나는 또한 이 디스크에 처음부터 Debian 9의 새로운 UEFI 설치를 수행했습니다.

그러면 문제는 이러한 디스크에 있는 시스템 복사본을 부팅하는 방법이 됩니다. 우연히도 새로/처음부터/UEFI 설치에서 GRUB 부팅 메뉴를 사용할 수 있었습니다. 새로 설치된 GRUB 메뉴 항목을 클릭하면 e다음 형식을 사용하여 GRUB 스크립트의 장치 이름을 복사된 LV의 장치 이름으로 변경할 수 있습니다. (lvm/debian-root)여기서 debian는 볼륨 그룹의 이름이고 root은 볼륨 그룹. 논리 볼륨. 이런 식으로 기존 시스템의 복사본으로 부팅할 수 있었습니다.

그러나 여전히 시스템을 부팅 가능하게 만들어야 합니다. @debrobert의 도움으로 나는 다음을 수행했습니다.

  1. grub-pc에서 로 전환grub-efi
  2. 새 설치에 속하는 기존 EFI 시스템 파티션을 마운트합니다 /boot/efi.
  3. grub-install --efi-directory=/boot/efi --bootloader-id=origdebian --force-extra-removable
    

    이는 두 가지 작업을 수행합니다.

    • grubx64.efiEFI 실행 파일을 디렉토리에 설치 합니다 /boot/efi/EFI/origdebian. 새로 설치된 디렉토리 grubx64.efi에 이미 실행 파일이 있습니다 /boot/efi/EFI/debian.

      그러면 EFI 펌웨어가 origdebian펌웨어 부팅 메뉴에서 항목을 볼 수 있습니다.

    • BOOTX64.EFIEFI 실행 파일을 디렉토리에 설치 합니다 /boot/efi/EFI/BOOT. 이를 "제거 가능한 미디어 경로"라고 합니다. ~처럼데비안 위키에 설명되어 있음,

모든 펌웨어 구현에서는 이 경로를 사용하여 운영 체제 설치 프로그램을 실행해야 합니다.

따라서 이 경로는 임시 백업 경로로 사용됩니다. 시스템이 부팅 가능해지면 제거할 수 있습니다.

관련 정보