Linux bzImage란? 압축 커널 이미지와 vmlinuz의 차이점

Linux Kernel을 공부하다 보면 vmlinuz, bzImage, zImage와 같은 비슷한 이름을 자주 접하게 됩니다. 특히 /boot 디렉터리에는 vmlinuz 파일이 존재하지만, 커널을 직접 컴파일할 때는 bzImage라는 파일이 생성됩니다. 이름이 비슷해 혼동하기 쉽지만 두 파일은 생성 과정과 사용 목적에서 차이가 있습니다.

이번 글에서는 bzImage가 무엇인지, vmlinuz와 어떤 관계인지, 그리고 커널 컴파일 과정에서 어떤 역할을 하는지 알아보겠습니다.

bzImage란?

bzImage(Big zImage) 는 Linux Kernel을 컴파일한 후 생성되는 압축된 부팅 가능한 커널 이미지입니다.

커널 소스 코드를 빌드하면 최종적으로 arch/x86/boot/bzImage 파일이 생성되며, 이 파일을 이용해 시스템을 부팅할 수 있습니다.

예를 들어 x86_64 환경에서는 다음 위치에 생성됩니다.

arch/x86/boot/bzImage

이 파일이 실제 배포판에서는 vmlinuz라는 이름으로 /boot 디렉터리에 설치됩니다.

bzImage라는 이름의 의미

많은 사람들이 bzImagebzbzip2 압축 방식이라고 오해합니다.

하지만 이는 사실이 아닙니다.

여기서 bzBig zImage의 약자입니다.

즉,

  • zImage → 초기 소형 커널 이미지
  • bzImage → 더 큰 커널 이미지를 지원하는 방식

이라는 의미입니다.

현재 대부분의 Linux 시스템에서는 bzImage 형식이 사용됩니다.

zImage와 bzImage의 차이

초기의 Linux Kernel은 zImage 형식을 사용했습니다.

하지만 Kernel 크기가 점점 커지면서 기존 방식으로는 부팅이 어려워졌고, 이를 해결하기 위해 bzImage가 등장했습니다.

항목zImagebzImage
지원 시기초기 Linux현재 대부분
커널 크기제한적대용량 지원
사용 여부거의 사용하지 않음표준 방식
부팅 가능 여부가능가능

현재 일반적인 Linux 서버에서는 zImage를 거의 사용하지 않습니다.

bzImage 생성 과정

커널을 직접 컴파일하면 다음과 같은 순서로 진행됩니다.

Kernel Source

↓

make menuconfig

↓

make

↓

bzImage 생성

↓

make modules

↓

make modules_install

↓

make install

↓

vmlinuz 생성

즉, bzImage는 컴파일 결과물이며, 설치 과정에서 vmlinuz 파일로 배치됩니다.

bzImage와 vmlinuz의 관계

많은 사용자가 가장 궁금해하는 부분입니다.

간단히 정리하면 다음과 같습니다.

Kernel Source

↓

make bzImage

↓

bzImage 생성

↓

make install

↓

/boot/vmlinuz 생성

즉,

  • bzImage : 컴파일 과정에서 만들어지는 커널 이미지
  • vmlinuz : 시스템이 실제 부팅에 사용하는 커널 이미지

실제로는 같은 Kernel 내용을 담고 있지만 사용되는 시점이 다릅니다.

커널 컴파일 예시

커널 소스 디렉터리에서 다음 명령을 실행합니다.

make menuconfig

컴파일

make -j$(nproc)

Kernel 이미지 생성 확인

ls arch/x86/boot/bzImage

설치

sudo make modules_install
sudo make install

설치가 완료되면 /boot 디렉터리에 새로운 vmlinuz 파일이 생성됩니다.

현재 사용 중인 Kernel 확인

현재 실행 중인 Kernel 버전 확인

uname -r

설치된 Kernel 이미지 확인

ls -lh /boot/vmlinuz*

GRUB에서 사용하는 Kernel 확인

Ubuntu

grep linux /boot/grub/grub.cfg

RHEL 계열

grep linux /boot/grub2/grub.cfg

bzImage 관련 실무 사례

직접 Kernel을 컴파일하는 경우는 많지 않지만 다음과 같은 상황에서는 자주 사용됩니다.

  • 커스텀 Kernel 개발
  • Device Driver 개발
  • Embedded Linux 개발
  • Android Kernel 수정
  • 성능 최적화 Kernel 제작
  • 최신 Kernel 테스트

일반적인 서버 운영에서는 배포판에서 제공하는 Kernel 패키지를 사용하는 경우가 대부분입니다.

자주 발생하는 문제

커널 컴파일 중 다음과 같은 문제가 발생할 수 있습니다.

  • 컴파일 실패
  • 필요한 라이브러리 부족
  • 디스크 공간 부족
  • Kernel 옵션 설정 오류
  • GRUB 미갱신
  • initramfs 미생성

새로운 Kernel을 설치한 뒤에는 반드시 GRUB와 initramfs가 정상적으로 생성되었는지 확인해야 합니다.

실무에서 자주 사용하는 명령어

현재 Kernel 확인

uname -r

커널 이미지 확인

ls -lh /boot/vmlinuz*

컴파일 결과 확인

ls arch/x86/boot/bzImage

GRUB 설정 확인

Ubuntu

grep linux /boot/grub/grub.cfg

Kernel 로그 확인

journalctl -k

자주 묻는 질문

bzImage와 vmlinuz는 같은 파일인가요?

내용은 거의 동일한 Kernel 이미지를 담고 있지만, bzImage는 컴파일 결과물이고 vmlinuz는 설치 후 부팅에 사용하는 파일입니다.

일반 사용자가 bzImage를 직접 사용할 일이 있나요?

거의 없습니다. 대부분의 사용자는 배포판에서 제공하는 Kernel 패키지를 사용하며, bzImage는 Kernel 개발이나 커스텀 빌드 시 주로 사용됩니다.

현재 Linux도 bzImage를 사용하나요?

네. 대부분의 x86 및 x86_64 Linux 배포판은 내부적으로 bzImage 형식의 커널을 생성하여 vmlinuz 형태로 설치합니다.

마무리

bzImage는 Linux Kernel을 컴파일했을 때 생성되는 부팅 가능한 압축 커널 이미지입니다. 이 파일은 설치 과정을 거쳐 /bootvmlinuz로 배치되며, 실제 부팅 시 GRUB에 의해 메모리로 로드됩니다. 일반 서버 운영에서는 직접 다룰 일이 많지 않지만, Kernel 컴파일과 부팅 구조를 이해하려면 반드시 알아두어야 하는 중요한 개념입니다.

댓글 남기기