디스크 이미지가 있습니다.
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
ls
2개의 파티션이 올바르게 표시되고 (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 루프백 시작 프로세스는 다음과 같습니다.
- grub은 디스크 이미지가 포함된 실제 하드웨어 파티션을 마운트합니다.
- grub 루프백 디스크 이미지
- grub은 이 이미지에서 efi 애플리케이션을 실행합니다. 이 시점에서 grub은 모든 제어권을 efi 애플리케이션에 넘깁니다. efi는 디스크 이미지가 포함된 하드웨어 파티션을 어디서 찾을 수 있는지 모릅니다. 이 기능이 있어도 디스크 이미지를 마운트하는 방법을 모릅니다. 따라서 이 단계에서는 아무것도 계속할 수 없습니다.
최신 livecd에는 이미지를 찾을 위치를 알려주고 이미지를 마운트할 수 있는 몇 가지 커널 옵션이 있습니다. 그러나 grub은 커널을 시작해야 하는 efi 애플리케이션이 아니라 커널을 직접 실행해야 합니다. efi 애플리케이션의 모든 경로는 하드코딩되어 있으며 절대 경로여야 하기 때문입니다.