UEFI와 함께 ISOLINUX를 사용하는 올바른 방법은 무엇입니까?

UEFI와 함께 ISOLINUX를 사용하는 올바른 방법은 무엇입니까?

64비트 버전에 UEFI 지원을 추가하려고 했습니다.최소 리눅스 라이브오랫동안 불행히도 큰 성공을 거두지 못했습니다. 아래 이미지에서 볼 수 있듯이 나는치명적 오류UEFI를 통해 부팅하려고 할 때마다.

최소 Linux 라이브 - UEFI

이를 달성하기 위해 내가 한 일은 다음과 같습니다.

  1. 다운로드했습니다시스템리눅스-6.0.3.
  2. 나는 지시를 따랐다.여기그리고 efi64/efi/syslinux.efi에 복사했습니다 \EFI\BOOT\BOOTX64.EFI.
  3. efi64/com32/elflink/ldlinux/ldlinux.e64에도 복사했습니다 \EFI\BOOT\LDLINUX.E64.
  4. 가상머신을 만들었어요가상 상자(버전 5.0.20) UEFI를 활성화합니다.
  5. 새 ISO 이미지(모든 ISOLINUX 구성 파일은 루트 폴더에 있음, 스크린샷 참조)를 생성하고 이를 가상 머신의 기본 부팅 가능한 미디어로 사용했습니다.
  6. 실행 직후 스크린샷에 표시된 오류가 발생했습니다.
  7. 이 시점에서 부팅 프로세스를 "중단"하고 UEFI 셸로 돌아가려면 \EFI\BOOT\BOOTX64.EFI이름 을 바꿔야 합니다 .\EFI\BOOT\BOOTX641.EFI
  8. UEFI 셸에서 명령을 사용한 edit다음 \EFI\BOOT폴더로 이동했습니다.
  9. 수동으로 전화했는데 BOOTX641.EFI볼 수 있는 것과 동일한 오류가 발생했습니다.

따라서 내 EFI 스텁이 실행 중이지만 실행 중에 문제가 발생했다는 결론을 내릴 수 있으며 현재로서는 무엇이 잘못되었는지 알 수 없습니다.

ISO 이미지 구조를 확인했습니다시스템 복구 디스크UEFI를 지원한다는 것을 알고 있으며 다음 사항을 확인했습니다.

  1. EFI 구조에는 단 하나의 파일만 포함됩니다: \efi\boot\bootx64.efi.
  2. 크기는 \efi\boot\bootx64.efi724KB인데 Syslinux 6.03의 해당 파일은 efi64/efi/syslinux.efi약 200KB이므로 확실히 동일한 파일은 아닙니다.
  3. "시스템 복구 CD"에서 복사 \efi\boot\bootx64.efi하여 "Minimal Linux Live"의 EFI 구조에서 사용하면 UEFI 부팅 과정이 매우 원활하게 진행되며 GRUB 2 쉘이 보입니다.

이것이 바로 \efi\boot\bootx64.efi"시스템 복구 CD"의 파일에 GRUB 2 지원이 내장되어 있으므로 맞춤형 솔루션임이 틀림없다는 사실을 발견한 방법입니다.

따라서 이 문제를 몇 마디로 해결하기 위해 저는 일반 Syslinux 패키지를 사용하고 있으며 간단한 ISO 이미지를 부팅하기 위한 UEFI 호환 구성을 생성하고 싶습니다. 공식적인 지침을 따르는 것이 나에게는 효과가 없는 것 같습니다.

모든 제안을 높이 평가합니다! 감사합니다!


참고 1:ISO 이미지는 BIOS 모드에서 정상적으로 부팅됩니다. 문제 없습니다.

노트 2:Ubuntu 및 Linux Mint와 같은 다른 운영 체제는 UEFI 모드에서 제대로 부팅되므로 이는 VirtualBox의 버그가 아닐 가능성이 높습니다.


편집 1 - (2017년 1월):

오랫동안 답변이 없었기 때문에 완전히 다른 방식으로 솔루션을 구현했습니다.

  • UEFI 부팅 모드를 사용하지 않습니다 Syslinux.
  • EFI 스텁을 사용하여 Linux 커널을 컴파일했습니다.
  • startup.nshUEFI 부팅 후 자동으로 실행되는 간단한 스크립트를 만들었습니다 .
  • 동일한 스크립트가 커널과 initramfs를 로드합니다.

이렇게 하면 일부 부팅 기능이 손실됩니다. 예를 들어 vga=askUEFI 모드에서는 제대로 작동 Syslinux하지만 이 특정 부팅 옵션에는 올바른 Linux 부트로더가 필요하기 때문에 UEFI 모드에서는 작동하지 않습니다.

제대로 작동하는 솔루션이 있어도 문제는 여전히 해결되지 않습니다.

편집 2 - (2017년 12월):

이는 이전 업데이트에 추가됩니다. startup.nsh이 솔루션은 UEFI 시스템에 "UEFI 셸"(펌웨어가 UEFI 사양에 따라 셸을 제공할 수도 있고 제공하지 않을 수도 있음)이 있고 셸에 레벨 1 이상의 지원이 있는 경우에만 작동합니다. 또한 ISO 이미지에 ESP를 제공하는 올바른 방법은 "El Torito" 부팅 이미지를 통하는 것이기 때문에 부팅 스크립트가 실행된다는 보장도 없습니다. ISO 이미지에 직접 ESP 호환 구조를 제공하는 것은 일부 펌웨어에서는 잘 작동하는 것처럼 보이지만 보편적인 솔루션은 아닙니다.

문제는 아직 해결되지 않았지만 그동안 통합에 성공했습니다.시스템 부팅나는 더 이상 이 문제를 최우선 과제로 생각하지 않습니다.

답변1

시스템 복구 CD가 syslinux가 아닌 GRUB를 사용하는 것처럼 들립니다. 내 grub64.efi는 약 1MB이지만 더 적은 수의 모듈로 빌드할 수 있을 것 같습니다.

복사한 이미지의 이름은 syslinux.efi이므로 isolinux라고 부르지는 않겠습니다. . syslinux.cfg대신 . 라는 파일을 찾길 원합니다 . isolinux.cfg(isolinux는 syslinux.cfg.

또한 "모든 ISOLINUX 구성 파일은 루트 폴더에 있습니다"라고 말씀하신 것을 확인했습니다. ISO를 어떻게 만드는지 모르겠습니다. 부트로더는 다음 위치에 있어야 한다는 점을 기억하세요.특수 부팅 이미지, iso9660 파일 시스템을 마운트할 때 표시되는 디렉터리 트리 대신. 분명히 VirtualBox가 무언가를 부팅하고 있으므로 여기서는 문제가 아니지만 다른 시스템보다 더 관대하다면 여전히 "잘못된" 작업을 수행하고 있을 수 있습니다.

"여러 인기 Linux 배포판"에 의한 하이브리드 부팅 이미지 설정은 읽기에 매우 흥미로웠지만 지난번에 읽었을 때 모든 Mac, 32비트 EFI를 지원하는 단일 이미지가 있을 가능성은 거의 없었습니다. 적어도 펌웨어에서는 볼 수 있었습니다. 여러 부팅 이미지를 사용하고 사용자에게 "1"과 "2" 중에서 선택하도록 요청합니다. 누구든지 토끼굴로 내려가려고 하기 전에, 적어도 Mac 전용 지원이 있다면 테스트할 수 있는 부분만 구현하는 것이 아마도 더 안전할 것입니다.

관련 정보