기술 가이드

커널 빌드 및 설치 가이드 (LILO 설정 포함)

4 min read 시스템 관리 업데이트됨 09 Oct 2025
Mandriva 커널 빌드 및 설치 가이드
Mandriva 커널 빌드 및 설치 가이드

개요

이 문서는 Mandriva 계열 시스템에서 소스에서 커널을 빌드하고, 생성된 RPM을 설치하며, mkinitrd로 초기 램디스크를 만들고 LILO 부트로더를 구성해 새 커널로 부팅하는 과정을 단계별로 설명합니다. 핵심 명령과 점검 목록, 실패 시 대처 방법과 수용 기준도 포함되어 있습니다.

중요: 아래 명령은 루트 권한으로 실행해야 합니다. 빌드와 설치는 시스템에 영향을 주므로 백업과 복구 수단을 준비하세요.

5. 커널 빌드

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

make rpm

설명: make rpm은 현재 커널 소스 설정을 이용해 src.rpm과 아키텍처별 RPM 패키지를 생성합니다.

주의: 컴파일은 커널 설정과 CPU 성능에 따라 수십 분에서 수 시간까지 걸릴 수 있습니다. 중간에 실패하면 빌드 로그를 확인하고 필요한 의존성을 설치하세요.

6. 새 커널 설치

빌드가 성공하면 src.rpm과 일반 rpm 패키지가 생성됩니다. src.rpm은 보통 /usr/src/rpm/SRPMS/에 생성됩니다. 이름을 확인하려면:

ls -l /usr/src/rpm/SRPMS/

예시: 시스템에 따라 kernel-2.6.18.3default-1.src.rpm 같은 이름일 수 있습니다.

아키텍처별 바이너리 RPM은 /usr/src/rpm/RPMS/i386/, /usr/src/rpm/RPMS/i586/, /usr/src/rpm/RPMS/i686/, /usr/src/rpm/RPMS/x86_64/ 등 위치에 생성됩니다. 예를 들어 i386 폴더를 확인하려면:

ls -l /usr/src/rpm/RPMS/i386/

찾은 RPM 파일(예: kernel-2.6.18.3default-1.i386.rpm)을 설치하려면 해당 디렉터리로 이동 후 설치하세요:

cd /usr/src/rpm/RPMS/i386/
rpm -ivh kernel-2.6.18.3default-1.i386.rpm

설치 팁: 설치한 RPM을 다른 Mandriva 시스템으로 복사하여 동일하게 설치하면 해당 시스템에서도 재컴파일할 필요가 없습니다.

다음으로 새 커널에 필요한 초기 램디스크(initrd)를 생성합니다. 그렇지 않으면 대개 시스템이 새 커널로 부팅하지 못합니다. 예:

mkinitrd /boot/initrd-2.6.18.3-default.img 2.6.18.3-default

설명: 첫 번째 인수는 생성될 initrd 이미지 경로, 두 번째는 커널 버전(또는 이미지 이름)입니다.

7. LILO 부트 로더 구성

새 커널이 부팅되도록 LILO를 구성해야 합니다.

우선 /boot의 내용을 확인해 새 커널 이미지(vmlinuz-*)와 initrd 이미지를 찾습니다:

ls -l /boot

그런 다음 /etc/lilo.conf를 편집합니다. 기존에 정상적으로 부팅되는 커널 항목(stanza)을 참고하여 새 항목을 추가하세요. 새 항목은 가능한 맨 위에 두고 label 값은 고유하게 지정합니다(예: linux-2.6.18.3-default). default 항목에 같은 라벨 이름을 넣으면 시스템 재시작 시 새 커널이 기본으로 부팅됩니다.

vi /etc/lilo.conf

예: 기존 lilo.conf(추가 전)

# File generated by DrakX/drakboot
# WARNING: do not forget to run lilo after modifying this file

default="linux"
boot=/dev/sda
map=/boot/map
keytable=/boot/us.klt
menu-scheme=wb:bw:wb:bw
compact
prompt
nowarn
timeout=100
message=/boot/message
image=/boot/vmlinuz
        label="linux"
        root=/dev/sda6
        initrd=/boot/initrd.img
        append=" resume=/dev/sda5 splash=silent"
        vga=788
image=/boot/vmlinuz
        label="linux-nonfb"
        root=/dev/sda6
        initrd=/boot/initrd.img
        append=" resume=/dev/sda5"
image=/boot/vmlinuz
        label="failsafe"
        root=/dev/sda6
        initrd=/boot/initrd.img
        append=" failsafe resume=/dev/sda5"

그리고 새 항목을 추가한 후 예시(추가 후):

# File generated by DrakX/drakboot
# WARNING: do not forget to run lilo after modifying this file

default="linux-2.6.18.3-default"
boot=/dev/sda
map=/boot/map
keytable=/boot/us.klt
menu-scheme=wb:bw:wb:bw
compact
prompt
nowarn
timeout=100
message=/boot/message
image=/boot/vmlinuz-2.6.18.3-default
        label="linux-2.6.18.3-default"
        root=/dev/sda6
        initrd=/boot/initrd-2.6.18.3-default.img
        append=" resume=/dev/sda5 splash=silent"
        vga=788
image=/boot/vmlinuz
        label="linux"
        root=/dev/sda6
        initrd=/boot/initrd.img
        append=" resume=/dev/sda5 splash=silent"
        vga=788
image=/boot/vmlinuz
        label="linux-nonfb"
        root=/dev/sda6
        initrd=/boot/initrd.img
        append=" resume=/dev/sda5"
image=/boot/vmlinuz
        label="failsafe"
        root=/dev/sda6
        initrd=/boot/initrd.img
        append=" failsafe resume=/dev/sda5"

편집을 마쳤으면 다음을 실행하여 LILO를 적용합니다:

lilo

그런 다음 시스템을 재부팅합니다:

shutdown -r now

부팅 후 새 커널이 사용되는지 확인하려면:

uname -r

출력 예:

2.6.18.3-default

부팅에 실패하면 시스템을 재부팅한 뒤 LILO 메뉴가 나타날 때 이전(작동하는) 커널을 선택하여 부팅하세요. 문제를 해결한 뒤 /etc/lilo.conf에서 실패한 커널 항목을 제거하고 다시 lilo를 실행해야 합니다.

LILO 부팅 메뉴 스크린샷

8. 링크

점검 체크리스트 (역할 기반)

시스템 관리자:

  • /usr/src/rpm/SRPMS와 /usr/src/rpm/RPMS/*에서 빌드된 파일 확인
  • rpm -ivh로 RPM 설치
  • mkinitrd로 initrd 생성
  • /etc/lilo.conf 편집 후 lilo 실행
  • 재부팅 및 uname -r 확인

운영자(현장):

  • 재부팅 시 콘솔 접근 확보
  • 이전 커널로 부팅 가능한지 확인
  • 부팅 불가 시 로그(Serial, dmesg 없음) 확보

개발자/빌드 담당:

  • 빌드 실패 시 빌드 로그와 의존성 확인
  • .config 설정과 모듈 의존성 점검

수용 기준

  • 시스템이 재부팅되어 사용자 세션을 정상적으로 시작할 것
  • uname -r이 새 커널 버전을 표시할 것
  • 필수 모듈(예: 파일시스템, 디스크 컨트롤러)이 정상적으로 로드될 것
  • 복구 시 이전 커널로 부팅 가능할 것

트러블슈팅(자주 발생하는 문제와 해결책)

  1. 커널이 부팅되지 않음

    • 원인: 잘못된 initrd, 잘못된 root 디바이스, 잘못된 label
    • 해결: mkinitrd로 올바른 initrd 생성, /etc/lilo.conf의 image/initrd/root 값을 확인, lilo 재실행
  2. 잘못된 아키텍처의 RPM 설치

    • 원인: i386용을 x86_64에 설치하거나 반대의 경우
    • 해결: 올바른 아키텍처의 RPM을 사용하거나 해당 아키텍처에서 재빌드
  3. lilo 실행 시 오류

    • 원인: /boot 파티션 경로 문제 또는 map 파일 충돌
    • 해결: /boot 마운트 상태 확인, map 파일 및 boot 장치 설정 검토
  4. 모듈 관련 문제(네트워크, 디스크 등)

    • 원인: .config에 필요한 드라이버가 내장되지 않았거나 initrd에 포함되지 않음
    • 해결: 커널 설정에서 드라이버를 내장(built-in)하거나 initrd에 모듈 추가 후 재생성

대체 접근법

  • 미리 빌드된 공식/서드파티 커널 RPM을 사용하는 방법: 빠르지만 커널이 시스템 맞춤 구성이 아닐 수 있음.
  • GRUB 사용: GRUB이 시스템에 설치되어 있다면 /etc/grub.conf 또는 /boot/grub/grub.cfg를 편집해 새 커널을 추가할 수 있음.
  • dracut 사용: mkinitrd 대신 dracut을 사용하는 배포판도 있음(시스템에 따라 다름).

간단한 방법론(순서 요약)

  1. 소스에서 make rpm 실행
  2. /usr/src/rpm/RPMS/에서 RPM 설치
  3. mkinitrd로 initrd 생성
  4. /etc/lilo.conf에 새 image 항목 추가 및 default 갱신
  5. lilo 실행
  6. 재부팅 및 uname -r로 확인

테스트 케이스

  • TC1: RPM 설치 후 /boot에 vmlinuz-버전 파일 존재 확인
  • TC2: mkinitrd로 생성된 initrd 파일이 /boot에 존재하고 크기가 0이 아님
  • TC3: lilo 실행 시 오류 없이 완료
  • TC4: 재부팅 후 uname -r이 새 버전 출력
  • TC5: 부팅 불가 시 LILO 메뉴에서 이전 커널로 부팅 가능

한 줄 용어집

  • RPM: Red Hat 계열 패키지 포맷
  • src.rpm: 소스 패키지 RPM
  • initrd: 초기 램디스크(커널 부팅 시 필요한 초기 파일 시스템)
  • LILO: Linux Loader(구형 부트로더)
  • mkinitrd: initrd 이미지를 생성하는 툴

요약

  • make rpm으로 패키지를 만들고 rpm으로 설치하세요.
  • mkinitrd로 initrd를 생성한 뒤 /etc/lilo.conf에 새 항목을 추가하고 lilo를 실행하세요.
  • 재부팅 후 uname -r로 새 커널을 확인하세요. 문제가 생기면 LILO 메뉴에서 이전 커널로 복구하세요.
공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

Debian 11에 Podman 설치 및 사용하기
컨테이너

Debian 11에 Podman 설치 및 사용하기

Apt-Pinning 간단 소개 — Debian 패키지 우선순위 설정
시스템 관리

Apt-Pinning 간단 소개 — Debian 패키지 우선순위 설정

OptiScaler로 FSR 4 주입: 설치·설정·문제해결 가이드
그래픽 가이드

OptiScaler로 FSR 4 주입: 설치·설정·문제해결 가이드

Debian Etch에 Dansguardian+Squid(NTLM) 구성
네트워크

Debian Etch에 Dansguardian+Squid(NTLM) 구성

안드로이드 SD카드 설치 오류(Error -18) 완전 해결
안드로이드 오류

안드로이드 SD카드 설치 오류(Error -18) 완전 해결

KNetAttach로 원격 네트워크 폴더 연결하기
네트워킹

KNetAttach로 원격 네트워크 폴더 연결하기