[linux-kernel] 이미지 대 zImage 대 uImage

그들 사이의 차이점은 무엇입니까?

나는 u-boot에 uImage 형식의 커널이 필요하다는 것을 알고 있습니다.

내가 사용하는 시스템은 1 단계 로더에서 처음 부팅 한 다음 u-boot를 호출합니다. u-boot를 버리고 1 단계 로더에서 직접 부팅하고 싶습니다. 어떤 유형의 커널 이미지를 사용해야합니까?



답변

그들 사이의 차이점은 무엇입니까?

이미지 : 일반 Linux 커널 이진 이미지 파일.

zImage : 자동 압축 해제되는 Linux 커널 이미지의 압축 된 버전입니다.

uImage : OS 유형 및 로더 정보를 포함 하는 U-Boot 래퍼 ( mkimage 유틸리티에 의해 설치됨)가있는 이미지 파일입니다 .
매우 일반적인 관행 (예 : 일반적인 Linux 커널 Makefile)은 zImage 파일을 사용하는 것입니다. zImage 파일은 자동 압축 풀기 (즉, 외부 압축 해제 기가 필요 없음)이므로 래퍼는이 커널이 실제로는 “압축되지 않음”임을 나타냅니다.


U-Boot의 작성자 / 관리자는 uImage 내에서 zImage를 사용하는 (광범위한) 사용을 의심스러운 것으로 간주합니다.

사실 uImage 내에서 zImage를 사용하는 것은 꽤 어리석은 일입니다. 일반 (비 압축) 커널 이미지를 사용하고 gzip 만 사용하여 압축 한 다음 mkimage의 poayload로 사용하는 것이 훨씬 좋습니다. 이런 식으로 U-Boot는 각 커널 이미지에 또 다른 압축 해제기를 포함하는 대신 압축 해제를 수행합니다.

( https://lists.yoctoproject.org/pipermail/yocto/2013-October/016778.html 에서 인용 )


어떤 유형의 커널 이미지를 사용해야합니까?

프로그래밍하려는 모든 것을 선택할 수 있습니다.
저장 용량을 절약하려면 압축되지 않은 이미지보다 압축 된 이미지를 선택해야합니다.
커널 (아마도 Linux 커널)을 실행하려면 커널 이미지를 메모리에로드하는 것 이상이 필요합니다. 아키텍처 (예 : ARM) 및 Linux 커널 버전 (예 : DTB 포함 또는 제외)에 따라 커널을 위해 준비해야하는 레지스터와 메모리 버퍼가 있습니다. 어떤 경우에는 복제해야하는 U-Boot가 수행 한 하드웨어 초기화도있었습니다.

추가

나는 u-boot에 uImage 형식의 커널이 필요하다는 것을 알고 있습니다.

이것은 bootm 명령 만있는 모든 버전의 U-Boot에 대해 정확합니다 .
그러나 최신 버전의 U-Boot 에는 zImage를 부팅 할 수 있는 bootz 명령이 있을 수도 있습니다 .


답변