본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

리눅스 커널 소스를 받아 필요한 기능을 골라 새 커널 이미지와 모듈을 만드는 과정이다. 새 하드웨어 지원, 불필요한 기능 제거, 보안 패치 적용 등을 위해 수행한다.

커널 버전 확인

편집 원본 편집
$ uname -r
4.18.0-477.10.1.el8_8.x86_64
$ cat /proc/version
  • 버전은 주 번호.부 번호.패치 번호 형식이다. 예: 4.18.0
  • 2.6 버전까지는 부 번호가 짝수면 안정 버전, 홀수면 개발 버전이었으나 3.0 이후로는 이 구분을 쓰지 않는다.
  • 공식 소스는 https://www.kernel.org 에서 받는다.
순서 명령 설명
1 tar xvf linux-x.y.z.tar.xz -C /usr/src 소스 압축 해제
2 make mrproper 이전 설정 파일(.config)과 빌드 결과를 모두 지운다.
3 make menuconfig 등 커널 기능을 선택해 .config 파일을 만든다.
4 make (또는 make bzImage) 커널 이미지를 컴파일한다. 결과: arch/x86/boot/bzImage
5 make modules 모듈로 선택한 기능을 컴파일한다.
6 make modules_install 모듈을 /lib/modules/버전/ 에 설치한다.
7 make install 커널 이미지와 System.map을 /boot에 복사하고 initramfs와 부트로더 항목을 만든다.
  • 최근 커널은 make 한 번으로 이미지와 모듈을 함께 빌드한다. 병렬 빌드는 make -j$(nproc)을 쓴다.
  • 빌드에는 gcc, make, ncurses-devel, bison, flex, elfutils-libelf-devel, openssl-devel 등이 필요하다.

정리 명령 비교

편집 원본 편집
명령 지우는 범위
make clean 대부분의 빌드 결과물. .config는 남긴다.
make mrproper clean + .config와 각종 설정 파일
make distclean mrproper + 편집기 백업 파일, 패치 잔여 파일
명령 방식
make config 텍스트로 항목마다 질문에 답한다.
make menuconfig 텍스트 메뉴 (ncurses 필요)
make nconfig 개선된 텍스트 메뉴
make xconfig X 윈도 GUI (Qt)
make gconfig X 윈도 GUI (GTK)
make oldconfig 기존 .config를 기준으로 새로 생긴 항목만 묻는다.
  • 각 항목에서 y는 커널에 포함, m은 모듈로 빌드, n은 제외이다.

부트로더 등록

편집 원본 편집
  • GRUB2 환경에서는 make install이 항목을 자동으로 추가한다.
  • 직접 설정을 다시 만들 때는 grub2-mkconfig를 쓴다.
# grub2-mkconfig -o /boot/grub2/grub.cfg
# patch -p1 < patch-x.y.z
  • 절차 순서 : mrproper → menuconfig → make(bzImage) → modules → modules_install → install
  • clean / mrproper / distclean의 차이
  • 설정 도구 이름과 필요한 환경 (xconfig는 Qt, gconfig는 GTK)
  • 커널 이미지 위치 arch/x86/boot/bzImage, 모듈 위치 /lib/modules/버전