커널 이미지를 압축해야 하는 이유는 무엇입니까?

커널 이미지를 압축해야 하는 이유는 무엇입니까?

커널 이미지를 vmlinux가 아닌 vmlinuz로 압축해야 하는 이유는 무엇입니까?

vmlinuz는 압축된 Linux 커널이며 부팅 가능합니다. 부팅 가능이란 운영 체제를 메모리에 로드하여 컴퓨터를 사용 가능하게 만들고 응용 프로그램을 실행할 수 있음을 의미합니다.

vmlinuz는 압축되지 않고 부팅할 수 없는 형태의 커널인 vmlinux와 혼동되어서는 안 됩니다. vmlinux는 일반적으로 vmlinuz 생성의 중간 단계일 뿐입니다. "
원천:http://www.linfo.org/vmlinuz.html

압축의 이점을 이해하지만 압축된 이미지는 결국 압축을 풀어야 하는데(그렇지 않더라도 영향을 미치지는 않는다고 생각합니다) 어떻게 압축되지 않은 이미지를 실행/부팅할 수 없습니까?

답변1

Linux 커널에는 압축이 전혀 필요하지 않습니다.

하지만...우리 대부분에게는...

다음과 같아야 합니다.


조사해보자커널 압축 모드커널 makefile의 일부로 제공되는 하위 메뉴 make menuconfig:

( ) Gzip
( ) Bzip2
( ) LZMA
( ) XZ
( ) LZO
(X) LZ4

압축 알고리즘 중에서 선택하기만 하면 됩니다. 압축을 피할 방법은 없습니다.

기다리다! 이제 커널의 도움말을 살펴보겠습니다.

Depends on: HAVE_KERNEL_GZIP [=y] || HAVE_KERNEL_BZIP2 [=y] || HAVE_KERNEL_LZMA [=y] || HAVE_KERNEL_XZ [=y] || HAVE_KERNEL_LZO [=y] || HAVE_KERNEL_LZ4 [=y] || HAVE_KERNEL_UNCOMPRESSED [=n]

글쎄, 그것은 모두 압축 알고리즘의 가용성과HAVE_KERNEL_UNCOMPRESSED구성 옵션.

안타깝게도 이 옵션은 메뉴 수정의 일부로 사용할 수 없습니다. 다음 위치에 하드코딩되어 있습니다 init/Kconfig.

config KERNEL_UNCOMPRESSED
    bool "None"
    depends on HAVE_KERNEL_UNCOMPRESSED
    help
      Produce uncompressed kernel image. This option is usually not what
      you want. It is useful for debugging the kernel in slow simulation
      environments, where decompressing and moving the kernel is awfully
      slow. This option allows early boot code to skip the decompressor
      and jump right at uncompressed kernel image.

그러면 다음 질문에 대한 답을 얻을 수 있습니다. 아니요, 커널 이미지는 압축할 필요가 없으며 커널 구성은 이미지를 압축하지 않을 수 있는 숨겨진 가능성을 제공합니다. 그러나 표준 사용자의 경우 커널 이미지를 압축해야 합니다. 왜냐하면... 왜냐하면... 압축되지 않은 이미지는 다음과 같습니다.“보통 당신이 원하는 것은 아닙니다”…;-)

그리고:이 패치를 사용하면 압축되지 않은 이미지를 만들 수 있습니다.(make menuconfig를 통해 직접 제공되는 옵션) x86_64 아치에 오류가 있습니다. 해당 아치의 현재 상태는 알 수 없지만 실제로 s390 아치에서는 작업 중입니다( 참조 arch/s390/Kconfig).

관련 정보