여러 파티션이 포함된 이미지 파일에서 체인 로드를 수행하는 방법은 무엇입니까?

여러 파티션이 포함된 이미지 파일에서 체인 로드를 수행하는 방법은 무엇입니까?

디스크 이미지가 있습니다.

Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size   File system  Name                  Flags
 1      1049kB  262MB  261MB  fat16        MemTest86             legacy_boot, msftdata
 2      263MB   524MB  261MB  fat16        EFI System Partition  boot, esp

Grub 콘솔에서 나는 다음을 수행했습니다.

loopback loop (some partition)/memtest.img

ls2개의 파티션이 올바르게 표시되고 (loop,gpt2)다음 (loop,gpt1) ls (loop,gpt2)/efi/boot/이 표시됩니다.

Benchmark  blacklist.cfg  BOOTIA32.efi  BOOTX64.efi  mt86.png  unifont.bin

그러나 다음을 수행하면 오류가 발생합니다.not a valid root device

root=(loop,gpt2)
chainloader (loop,gpt2)/efi/boot/BOOTX64.efi

부트로더를 올바르게 체인로드하려면 또 무엇을 해야 합니까?

업데이트 1: 루프백 명령 후 검색 명령으로 파티션을 찾을 수 있습니다. 예를 들어, ls(loop,gpt2)는 UUID E64D-A5AA를 표시합니다. search -u E64D-A5AA전시하다loop,gpt2

답변1

체인 로드된 efi 및 커널이 디스크 이미지 마운트 방법을 지원하지 않는 한 이 작업은 불가능합니다.

Grub 루프백 시작 프로세스는 다음과 같습니다.

  1. grub은 디스크 이미지가 포함된 실제 하드웨어 파티션을 마운트합니다.
  2. grub 루프백 디스크 이미지
  3. grub은 이 이미지에서 efi 애플리케이션을 실행합니다. 이 시점에서 grub은 모든 제어권을 efi 애플리케이션에 넘깁니다. efi는 디스크 이미지가 포함된 하드웨어 파티션을 어디서 찾을 수 있는지 모릅니다. 이 기능이 있어도 디스크 이미지를 마운트하는 방법을 모릅니다. 따라서 이 단계에서는 아무것도 계속할 수 없습니다.

최신 livecd에는 이미지를 찾을 위치를 알려주고 이미지를 마운트할 수 있는 몇 가지 커널 옵션이 있습니다. 그러나 grub은 커널을 시작해야 하는 efi 애플리케이션이 아니라 커널을 직접 실행해야 합니다. efi 애플리케이션의 모든 경로는 하드코딩되어 있으며 절대 경로여야 하기 때문입니다.

관련 정보