여러 iso 파일을 부팅하는 데 사용할 수 있는 USB 스틱을 만들고 싶습니다. uEFI를 통해 이 작업을 수행하고 싶습니다.
USB 플래시 드라이브는 다음과 같습니다.
/EFI
/bootx64.efi
/something.conf
/isos
/foo.iso
/bar.iso
...
uEFI 부팅 가능 iso 파일이 여기에 /isos
저장됩니다 . 내가 이해한 바로는 이러한 isos에는 /EFI/BOOT<some arch>.efi
uEFI 부로더가 일반적으로 실행하는 파일이 있습니다.
드라이브 와 해당 구성 파일에 /EFI/bootx64.efi
식별되지 않은 efi 부로더가 있습니다 ./EFI/something.conf
나에게 필요한 것은 /EFI/BOOT<some arch>.efi
어떻게든 iso 파일 중 하나에서 호출할 수 있는 uEFI 실행 파일입니다. 이것이 이론적으로 가능한지는 모르겠습니다.
GRUB2를 사용하여 비슷한 작업을 수행할 수 있다는 것을 알고 있지만 Linux 이미지, 해당 옵션 및 initrd 파일을 지정해야 합니다. 이는 다른 ISO와 다르며 때로는 전혀 작동하지 않는 경우도 있습니다. 를 호출하면 /EFI/BOOT<some arch>.efi
이를 지정할 필요가 없고 ISO 이미지를 부팅할 수 있는 방법이 있기를 바라고 있습니다.
내 질문은: iso 파일 내에 있는 EFI 실행 파일을 호출할 수 있는 uEFI 부트로더가 있습니까?
답변1
이것은 모든 ISO에서 작동하지는 않지만 다음을 사용할 수 있습니다.저장 디스크ISO를 syslinux에서 RAMDISK 이미지로 메모리에 복사합니다. BIOS 호출에는 RAMDISK가 표시되고 Linux는 RAMDISK를 인식합니다. 이렇게 하려면 syslinux.efi 및 관련 파일을 EFI 시스템 파티션(ESP)의 위치에 복사해야 합니다 EFI/syslinux
. 그런 다음 /EFI/syslinux/syslinux.cfg
의 예를 따라 ISO 파일에 대한 여러 메모리 디스크 메모리 옵션을 생성하십시오.스토리지 디스크 페이지.
답변2
ISO에서 직접 부팅하는 경우 Linux 커널이 로드되면 ISO 내에서 squashfs를 가져와야 합니다. 이렇게 하려면 Linux 커널과 스크립트가 ISO를 루프 장치로 마운트해야 합니다. 이렇게 하려면 ISO 파일의 경로와 파일 이름을 알아야 합니다. 전체 경로는 일반적으로 커널 매개변수에 지정됩니다.iso-scan/filename=/images/ubuntux64.iso
일부 Ubuntu ISO에는 /boot/grub/loopback.cfg
파일이 포함되어 있으며 grub2 변수가 ISO 파일의 전체 경로로 사전 설정되어 있을 것으로 예상합니다.
따라서 이러한 ISO 파일을 부팅하는 보편적인 방법이 있습니다. ISO 파일의 전체 경로로 grub2 변수를 설정하고 loopback.cfg
파일을 실행하기만 하면 됩니다.
grub2.cfg
따라서 폴더의 모든 ISO 파일을 나열 /images
하고 사용자가 그 중 하나를 선택하여 실행할 수 있는 파일이 있을 수 있습니다 . 유일한 문제는 포함/ boot/grub/loopback.cfg
파일이 필요하다는 것인데, Ubuntu가 아닌 ISO에서는 이를 수행하는 경우가 거의 없습니다!
더 많은 배포판 개발자가 ISO에 파일을 포함했다면 loopback.cfg
원하는 결과를 얻을 수 있을 것입니다!
http://www.rmprepusb.com/tutorials/136_uefi_ubuntu도움이 될 수도 있습니다. 반품http://rmprepusb.blogspot.co.uk/2017/02/make-generic-grub2-boot-menu-using.html
답변3
예, 아니오. 사전 부팅 환경으로 부팅할 수 있습니다.( grub
, iPXE 등)그러나 그렇게 하면 실제로는 상황이 복잡해질 뿐입니다. 대부분의 라이브 디스크에는 귀하가 말하는 파일이 없습니다. 대부분의 iso 하이브리드 디스크는 여기의 다른 답변에 설명된 것과 유사한 작업을 수행합니다. 즉, 램 디스크의 루프 장치에 실제 실행 파일이 포함된 이미지 파일을 설치한 다음 해당 커널을 호출합니다. 이 모든 복잡성의 초점은 BIOS 시스템과의 호환성이어야 합니다. 그것이 문제가 되지 않는다면, 각 iso에서 일부 파일을 추출하고 직접 부팅하는 것이 더 나을 수도 있습니다. EFI 시스템에서 - 이 경우 펌웨어가 부트로더이기 때문입니다.
그래서 필요한 것은 FAT 형식의 USB 플래시 드라이브입니다. 문제의 iso를 마운트하고 x86을 찾을 수 있습니다.sfs
루트 이미지 파일, 해당 initramfs 및 커널 찾기(iso 마운트 내에서 다른 이미지를 루프 마운트해야 할 수도 있습니다)- 그게 다야. Linux 커널은 EFI 실행 파일입니다. 펌웨어가 커널을 실행할 수 있으므로 부트로더가 필요하지 않습니다. 커널의 첫 번째 루트 파일 시스템은 initramfs 이미지에서 마운트됩니다. 다음은 .sfs 아카이브입니다. 이것이 작동하는 방식입니다.
여기서는 약간 모호하지만 Arch Linux 설치 미디어를 사용하여 유사한 작업을 수행하는 방법에 대한 매우 자세한 연습이 있습니다.여기.
(일반적으로 배포판에 따라 프로세스가 다릅니다)