이미지 파일이 PE 실행 파일인 이유는 무엇입니까?

이미지 파일이 PE 실행 파일인 이유는 무엇입니까?

나는 최신 소스 코드인 linux-6.0-rc5를 사용하여 내 컴퓨터에서 Linux 커널을 컴파일하려고 했습니다. 모든 일이 잘 진행되고 있지만 뭔가 마음에 걸리는 일이 있습니다. ImageArch/riscv/boot 아래에 있는 파일을 가져와서 file명령을 사용하여 살펴보니 다음과 같았습니다.

Image: MS-DOS executable PE32+ executable (EFI application) RISC-V 64-bit (stripped to external PDB), for MS Windows

하지만 제 생각에는 다른 모든 정보가 포함되어야 하므로 이를 data입력 해야 한다고 생각합니다.objcopy -O binary -S

파일을 file정리해서 가져 왔습니다vmlinux

vmlinux: ELF 64-bit LSB executable, UCB RISC-V, version 1 (SYSV), statically linked, BuildID[sha1]=432bf8175b2c7de8404f27f5f395fdb20479f263, with debug_info, not stripped

동일한 유형으로 새로 작성된 C 프로그램을 다시 시도하면 objcopy수행된 작업을 사용하여 vmlinux올바른 data유형을 얻습니다.

수동 objcopy컴파일은 vmlinuxPE 실행 파일과 동일한 결과를 제공하므로 make시스템에 대한 추가 변경은 불가능합니다.

vmlinux얻기 위해 수행되는 작업은 Image다음과 같습니다.

riscv64-linux-gnu-objcopy -O binary -R .note -R .note.gnu.build-id -R .comment -S vmlinux arch/linux/boot/Image

--just-print옵션을 볼 수 있듯이 make.

objcopy제가 해당 줄의 의미를 잘못 이해하고 있는 것인지 , 명령의 결과를 잘못 이해하고 있는 것인지 궁금합니다 file.

답변1

이는 부팅 이미지가 다음 형식의 UEFI 실행 파일이기 때문입니다.휴대용 실행 파일(일명 Windows exe).

관련 정보