기술 가이드

3 전통적인 방식으로 커널 빌드하기

5 min read 시스템 관리 업데이트됨 25 Sep 2025
전통 방식으로 리눅스 커널 빌드하기
전통 방식으로 리눅스 커널 빌드하기

간단 요약: 이 가이드는 어떤 리눅스 배포판에서도 적용할 수 있는 전통적인 커널 빌드 절차를 설명합니다. 커널 소스 다운로드, 패치 적용(선택 사항), 구성, 빌드 및 설치, 부팅 문제 해결과 롤백까지 실무 운영자 관점의 체크리스트와 플레이북을 포함합니다.

의도와 관련 키워드

주된 목표: 소스에서 리눅스 커널을 전통 방식으로 컴파일하고 시스템에 설치하는 방법을 설명합니다. 관련 키워드: 리눅스 커널 컴파일, 커널 소스 패치, initramfs 생성, GRUB 설정, 커널 구성

3 Building A Kernel — 개요

이 장은 어떤 리눅스 시스템에서도 사용할 수 있는 전통적인 커널 빌드 방법을 다룹니다. Fedora 전용 내용은 없으므로 이 방법으로는 커널 rpm 패키지가 생성되지 않습니다. 소스 기반으로 직접 빌드하여 시스템에 설치하는 전형적인 워크플로우를 따릅니다.

3.1 커널 소스 다운로드

원하는 커널을 /usr/src에 다운로드합니다. 예: linux-2.6.18.2.tar.bz2. 모든 2.6 커널은 http://www.kernel.org/pub/linux/kernel/v2.6/에서 찾을 수 있습니다.

예시 명령:

cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.2.tar.bz2

다운로드 후 압축을 풉니다. 그리고 소스 디렉터리로 향하는 심볼릭 링크를 만듭니다.

tar xjf linux-2.6.18.2.tar.bz2
ln -s linux-2.6.18.2 linux
cd /usr/src/linux

중요: /usr/src에 쓰기 권한이 필요합니다. 루트(root) 또는 sudo로 실행하세요.

3.2 커널 소스에 패치 적용(선택 사항)

하드웨어 드라이버, 가상화 지원 또는 최신 기능이 메인 라인에 아직 포함되지 않은 경우 패치를 적용해야 할 수 있습니다. 패치 파일을 /usr/src에 다운로드했다고 가정합니다(예: patch.bz2).

패치 적용 전 검증(드라이런):

bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run

오류가 없으면 실제 적용:

bzip2 -dc /usr/src/patch.bz2 | patch -p1

드라이런에서 오류가 발생하면 실제 적용을 하지 마십시오. 패치가 잘못되면 소스 트리가 손상될 수 있습니다.

프리패치(prepatch)를 적용해야 하는 경우도 있습니다. 예를 들어 2.6.19-rc5의 기능을 원하지만 전체 소스가 아직 릴리스되지 않았다면, patch-2.6.19-rc5.bz2를 2.6.18의 소스에 적용해야 합니다. 프리패치는 이전 정식 릴리스(3-part 버전)에 적용해야 하므로 대상 버전을 주의해서 선택하세요.

예시(2.6.19-rc5 패치를 2.6.18에 적용):

cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.19-rc5.bz2
cd /usr/src/linux
bzip2 -dc /usr/src/patch-2.6.19-rc5.bz2 | patch -p1 --dry-run
bzip2 -dc /usr/src/patch-2.6.19-rc5.bz2 | patch -p1

노트: 패치는 소스와 정확히 맞는 버전에 적용해야 합니다. 잘못된 버전에 패치하면 충돌이 발생합니다.

3.3 커널 구성

현재 작동 중인 커널의 설정을 새 커널의 기본으로 사용하는 것이 좋습니다. 이를 위해 기존 설정을 복사합니다.

make mrproper
cp /boot/config-`uname -r` ./.config

그런 다음 구성 인터페이스를 엽니다:

make menuconfig

Load an Alternate Configuration File에서 .config 파일을 선택합니다. 그런 다음 메뉴를 훑어보며 필요한 옵션을 조정합니다. 종료(Exit) 시 “Do you wish to save your new kernel configuration?”에는 “Yes”로 응답합니다.

커널 구성에서 대체 설정 파일 불러오기

menuconfig에서 설정 항목 확인 화면

구성을 저장할지 묻는 확인 대화상자

구성 팁:

  • 모듈로 빌드할 수 있는 드라이버는 M으로 하세요. 문제가 생겼을 때 모듈로 로드/언로드하기 쉽습니다.
  • CPU 아키텍처와 플랫폼(예: x86_64, i386, ARM)을 정확히 선택하세요.
  • 디버깅 기능(특히 kgdb, printk 레벨 등)은 개발/테스트 용도로만 활성화하세요.

중요: make mrproper는 기존 빌드 아티팩트를 정리합니다. 커스텀 패치나 파일이 있다면 백업하세요.

3.4 커널 빌드 및 설치

커널을 빌드하고 설치하려면 다음 세 명령을 실행합니다:

make all
make modules_install
make install

빌드 시간은 설정과 CPU 성능에 따라 수분에서 수시간까지 걸릴 수 있습니다. make install은 일반적으로 initramfs(또는 ramdisk)를 생성하고 /boot/grub/menu.lst를 자동으로 구성합니다.

설치 후 /boot/grub/menu.lst를 편집하여 새 커널이 기본으로 부팅되도록 default 값을 0으로 설정합니다.

vi /boot/grub/menu.lst

예시 menu.lst(일반적인 항목):

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
#          initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu

title Fedora Core (2.6.18.2)
        root (hd0,0)
        kernel /vmlinuz-2.6.18.2 ro root=/dev/VolGroup00/LogVol00
        initrd /initrd-2.6.18.2.img

title Fedora Core (2.6.18-1.2798.fc6)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-1.2798.fc6 ro root=/dev/VolGroup00/LogVol00
        initrd /initrd-2.6.18-1.2798.fc6.img

설치가 완료되면 시스템을 재부팅합니다:

shutdown -r now

부팅이 성공하면 현재 사용 중인 커널 버전을 확인합니다:

uname -r

예상 출력 예:

2.6.18.2

문제 해결 및 롤백

부팅이 실패하면 GRUB 메뉴를 통해 이전 커널로 부팅해야 합니다. 부팅 도중 다음과 같은 화면이 나오면 아무 키나 눌러 GRUB 메뉴를 불러오세요:

![부팅 시 GRUB 메뉴 진입 프롬프트 이미지](/files/95ea06bf-7f3f-4485-8395-db6d49f0042f.png)

GRUB 메뉴 화면 예시:

![GRUB 메뉴 선택 화면 이미지](/files/9ffb2a15-695e-4da9-95a1-1a1c62d7fa22.png)

이전(작동하던) 커널을 선택해 부팅합니다. 시스템이 정상적으로 시작되면 /boot/grub/menu.lst에서 문제 있는 커널 항목을 제거하거나, default 값을 이전 항목으로 되돌리세요.

중요: 새 커널이 실패할 가능성에 대비해 항상 이전 커널 항목을 삭제하기 전 백업을 유지하세요.

체크리스트: 빌드 전/중/후 (운영자용)

  • 빌드 전
    • /boot와 / 파티션의 여유 공간 확인
    • 현재 커널 구성 파일 /boot/config-uname -r 백업
    • 중요 데이터(특히 /etc/fstab, 부트로더 구성) 백업
    • 필요한 빌드 도구(compiler, make, ncurses-devel 등) 설치
  • 빌드 중
    • make menuconfig로 옵션 확인(특히 파일시스템과 블록 디바이스 설정)
    • 모듈로 빌드한 드라이버가 있는지 확인
    • 빌드 로그를 파일에 저장(예: make all 2>&1 | tee build.log)
  • 빌드 후
    • /boot에 vmlinuz 및 initrd가 정상 생성되었는지 확인
    • /boot/grub/menu.lst 변경 내용 검토
    • 리부팅 전 복구 계획(라이브 CD, 물리적 콘솔 접근) 준비

플레이북(SOP): 실패 시 롤백 단계

  1. 서버를 재시작합니다. 부팅 중 GRUB 프롬프트가 바로 나타나면 즉시 아무 키나 누릅니다.
  2. GRUB 메뉴에서 이전(성공했던) 커널을 선택해 부팅합니다.
  3. 루트로 로그인한 뒤 /boot/grub/menu.lst에서 문제 커널 항목을 주석 처리하거나 삭제합니다.
  4. 만약 initramfs 또는 모듈 충돌이라면 /lib/modules/에 새 커널 관련 폴더를 제거하세요.
  5. 재부팅하여 이전 상태가 복원되었는지 확인합니다.

테스트 및 수락 기준

  • 커널 컴파일 완료 상태이며 부팅 시 커널 버전이 기대값과 일치해야 함 (uname -r)
  • 주요 서비스를 정상 기동(예: 네트워크, 파일시스템 마운트, 주요 데몬)
  • 중요 하드웨어(네트워크 어댑터, 스토리지 컨트롤러)가 정상 동작
  • 로그(/var/log/messages 또는 journalctl)에 커널 패닉/치명적 에러 없음

간단 치트시트(자주 쓰는 명령)

  • 소스 준비 및 정리:
    • make mrproper
    • make menuconfig
  • 빌드 및 설치:
    • make all
    • make modules_install
    • make install
  • 부팅 확인:
    • uname -r
    • dmesg | head
  • 패치 적용 드라이런:
    • bzip2 -dc /path/to/patch.bz2 | patch -p1 –dry-run

의사결정 흐름(머신 상태 확인 → 빌드 여부 결정)

flowchart TD
  A[현재 커널 안정적?] -->|예| B{새 기능 필요?}
  A -->|아니오| C[문제 해결 우선]
  B -->|예| D[새 커널 빌드]
  B -->|아니오| E[현 유지]
  D --> F[테스트 환경에서 먼저 검증]
  F -->|성공| G[운영에 배포]
  F -->|실패| H[롤백 및 수정]

역할별 체크리스트

  • 시스템 관리자
    • 부팅 복구 수단 준비(라이브 USB/시리얼 콘솔)
    • GRUB 설정 편집 및 백업
  • 개발자
    • 커널 옵션 변경 기록
    • 빌드 로그와 테스트 시나리오 제공
  • QA/테스터
    • 부하 테스트, 드라이버 테스트, 서비스 연속성 점검

보안 및 개인정보 관련 주의사항

  • 테스트 중이거나 디버깅용으로 활성화한 네트워크 서비스는 공개 네트워크에 노출하지 마십시오.
  • 커널에 새로운 모듈을 추가할 때 서명이나 신뢰할 수 있는 출처를 확인하세요.

대안(언제 전통 빌드가 실패하는가)

  • 대다수 배포판에서 패키지 관리자를 통한 커널 패키지 제공이 더 안전하고 관리가 쉽습니다.
  • 모듈 의존성, 배포판 특화 패치나 init 시스템 통합이 필요한 경우 배포판용 커널 패키지를 빌드하거나 사용하세요.

짧은 요약

  • 소스 다운로드 →(선택) 패치 적용 → 구성 → 빌드 → 설치 → 부팅 확인의 순서로 진행합니다.
  • 항상 이전 커널을 보존하고, 빌드 로그와 백업을 준비하세요.

4 링크

공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

Windows 10 업데이트로 24GB 디스크 공간 확보하는 방법
시스템 관리

Windows 10 업데이트로 24GB 디스크 공간 확보하는 방법

자영업 택배기사로 안정적 수입 얻는 방법
직업

자영업 택배기사로 안정적 수입 얻는 방법

Microsoft Edge에서 캐시 지우는 방법
브라우저

Microsoft Edge에서 캐시 지우는 방법

My Family Cinema APK 안전 설치 가이드
앱 설치

My Family Cinema APK 안전 설치 가이드

Single Wrench: 비즈니스용 안전한 파일 공유
리뷰

Single Wrench: 비즈니스용 안전한 파일 공유

전통 방식으로 리눅스 커널 빌드하기
시스템 관리

전통 방식으로 리눅스 커널 빌드하기