USB에서 플랫 바이너리 부팅

USB에서 플랫 바이너리 부팅

온라인 리소스를 기반으로 멀티부팅 ELF 파일을 만들었지만 objcopy"플랫" 바이너리 또는 데이터 파일을 만드는 데 사용되었습니다. 커널 이미지는 간단하며 "hello world"를 콘솔에 인쇄합니다. QEMU를 사용하면 다음 명령을 사용하여 플랫 바이너리를 실행할 수 있습니다 qemu-system-i386 -kernel /path/to/flat/binary.

프로세스의 다음 단계는 컴퓨터 부팅 시 실제로 BIOS 화면에서 커널을 부팅하는 것입니다. 문제는 이 플랫 바이너리를 부팅 가능한 이미지로 만드는 방법을 모른다는 것입니다. 지금까지 내가 얻을 수 있었던 가장 먼 방법은 이미지를 USB 드라이브에 굽고 CD-ROM으로 구운 다음 BIOS 화면으로 들어가는 것입니다. USB에서 부팅하는 옵션이 옵션으로 표시되지 않고 CD에서 부팅하려고 하면 시스템이 충돌합니다.

저는 아직 시스템 프로그래밍 개념에 대해 매우 익숙하지 않으며 프로그램 실행의 다음 단계로 이동하는 방법을 잘 모릅니다. 먼저 USB에 grub을 설치한 다음 플랫 바이너리를 복사해야 합니까, 아니면 플랫 바이너리를 부팅 가능한 이미지로 직접 만든 다음 USB에 구울 수 있는 방법이 있습니까? 올바른 방향으로의 조언, 도움 또는 조언은 매우 도움이 될 것입니다. 감사해요.

답변1

소프트웨어를 "실행"할 수 있는 하드웨어 플랫폼은 매우 많습니다. 귀하의 질문에 따르면 귀하는 표준 PC를 사용하고 있다고 가정합니다. PC에서는 레거시 BIOS와 최신(실제로는 꽤 오래된) UEFI(Unified Extensible Firmware Interface)라는 두 가지 펌웨어 구현이 사용됩니다. 펌웨어는 ROM에 저장되며 (간단히) 하드웨어를 실행 가능한 상태로 초기화하고, 대용량 저장소에서 일부 코드를 로드하고, 부팅하는 일을 담당합니다.

BIOS 인터페이스를 사용하여 무언가를 부팅하려면 BIOS의 실제 수명을 보여주는 16비트 리얼 모드 코드를 작성해야 합니다. UEFI 경로를 사용하는 것이 좋습니다. 이렇게 하려면 UEFI 표준 준수를 확인하는 코드를 작성 및 컴파일하고 결과 바이너리를 적절하게 포맷된 USB 스틱 또는 하드 드라이브에 저장해야 합니다.

자세한 내용은 Roderick W. Smith의 해당 주제에 대한 훌륭한 튜토리얼을 참조하세요.https://www.rodsbooks.com/efi-programming/index.html

답변2

적절한 커널을 가리키는 EFI 파일이 있으면 UEFI 모드로 부팅해야 합니다.

관련 정보