👋 커널이란 무엇인가요?
리눅스 커널 컴파일을 시작하기 전에 먼저 "커널이 뭐야?" 라는 궁금증부터 풀고 가볼게요.
🧠 커널(Kernel)은 운영체제의 핵심(심장) 입니다!
운영체제(OS)는 크게 두 부분으로 나뉘어요:
- 커널(Kernel): 하드웨어와 가장 가까이 있는 핵심 소프트웨어
- 쉘(Shell) 또는 GUI: 사용자가 보는 터미널, 데스크탑 환경 등
📦 커널의 역할
🖥️ 하드웨어 제어 | CPU, 메모리, 저장장치, 네트워크, USB 등 제어 |
📲 프로그램 실행 관리 | 여러 프로그램이 동시에 잘 돌아가도록 스케줄링 |
🔐 보안과 권한 관리 | 누가 어떤 파일이나 장치를 쓸 수 있는지 결정 |
💬 소통 중개자 | 프로그램이 "프린터 써줘!"라고 하면, 커널이 프린터에게 전달 |
💡 비유로 이해하기
커널은 운영체제의 번역가이자 관리자예요.
사용자는 "이 파일 열어줘!"라고 요청하면,
커널이 하드웨어와 직접 대화해서 파일을 찾아주는 거죠.
🤔 왜 커널을 직접 컴파일하나요?
대부분의 리눅스 배포판은 이미 커널을 설치해줍니다.
그런데 직접 커널을 컴파일하면 이런 장점이 있어요:
- 🎯 불필요한 기능 제거로 시스템을 가볍게!
- ⚡ 최적화된 성능 (내 CPU/장치에 맞는 커널 설정)
- 🧪 최신 기능 사용 (공식 배포보다 더 새로운 버전 사용 가능)
- 💻 리눅스를 더 깊이 이해할 수 있음
리눅스를 좀 더 내 입맛에 맞게, 가볍고 빠르게 만들 수 있는 방법 중 하나는 직접 커널을 컴파일하는 것입니다. 이 포스팅에서는 Ubuntu 기준으로, 리눅스 커널을 직접 다운로드하고, 설정하고, 컴파일해서 설치하는 전 과정을 아주 쉽게 알려드립니다.
✅ 1단계: 개발 도구 및 필요한 패키지 설치
커널을 컴파일하려면 먼저 빌드에 필요한 패키지를 설치해야 합니다.
sudo apt update
sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev bc
build-essential
: gcc 컴파일러 등 필수 개발 툴libncurses-dev
: 커널 설정 화면(UI)을 구성하는 라이브러리libssl-dev, libelf-dev
: 보안 및 모듈 처리에 필요한 라이브러리bc
: 커널 컴파일 중 사용되는 계산기 프로그램
✅ 2단계: 커널 소스 다운로드
리눅스 커널은 https://kernel.org 에서 공식적으로 배포됩니다.
cd ~
wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.8.1.tar.xz
tar -xf linux-6.8.1.tar.xz
cd linux-6.8.1
💡 최신 버전은 kernel.org에서 직접 확인하세요.
✅ 3단계: 기존 설정 파일 복사 (중요)
cp /boot/config-$(uname -r) .config
현재 사용하는 커널 설정을 복사하는 것입니다.
✅ 4단계: 커널 설정 (커스텀 설정)
make menuconfig
텍스트 기반의 설정 화면이 뜹니다.
- Processor type and features: CPU 아키텍처나 멀티코어 설정
- Device Drivers: USB, 사운드, 블루투스 등 드라이버 설정
- File systems: ext4, Btrfs, NTFS 등 파일 시스템 선택
- Networking support: 필요 없는 네트워크 비활성화
조작 방법:
🟡 스페이스바: ON/OFF
🟡 화살표 키: 이동
🟡 엔터: 하위 항목 진입
🟡 ESC 두 번: 이전 메뉴로
🟡 Exit → Save: 저장 후 나가기
💡 초보자 팁: 모르면 기본 설정 그대로 두세요!
✅ 5단계: 커널 컴파일 (시간이 오래 걸립니다)
make -j$(nproc)
CPU 코어 수만큼 병렬 빌드합니다. 예: 4코어라면 make -j4
⏱️ 10~40분 소요. 컴퓨터 사양에 따라 다름
✅ 6단계: 모듈 설치 및 커널 설치
sudo make modules_install
sudo make install
/boot 디렉토리에 아래 파일들이 생성됩니다:
vmlinuz-6.8.1
initrd.img-6.8.1
System.map-6.8.1
✅ 7단계: 부트로더 업데이트 및 재부팅
sudo update-grub
sudo reboot
부팅 후 커널 버전을 확인하세요:
uname -r
출력이 6.8.1이면 성공!
✅ 8단계: 부팅 실패 대비책
- GRUB 화면에서 이전 커널 선택 가능하도록 유지
- 부팅 실패 시 → GRUB에서 이전 커널 선택
- 문제 해결 후 /boot에서 문제 커널 제거
💡 추가 팁: 최소 커널 만들기 (초보자 추천 X)
IoT/임베디드용으로 최소 커널을 빌드할 수도 있지만, 너무 많은 기능을 꺼두면 부팅이 안 될 수 있습니다.
✅ 정리 요약
단계 | 설명 |
---|---|
1 | 필수 패키지 설치 |
2 | 커널 소스 다운로드 |
3 | 기존 커널 설정 복사 |
4 | make menuconfig 로 설정 |
5 | make -j$(nproc) 로 컴파일 |
6 | make modules_install & make install |
7 | update-grub 후 재부팅 |
8 | uname -r로 커널 버전 확인 |
🏁 마무리하며
커널을 직접 컴파일하면, 시스템에 대한 이해도도 높아지고, 내 입맛대로 커스터마이징할 수 있는 능력도 생깁니다.
처음엔 어렵게 느껴지지만, 직접 해보면 의외로 재미있고 뿌듯한 과정이 될 거예요 😊
필요하시면:
- PDF 버전 제공
- 설정값 백업 및 자동화 스크립트
- 최소 커널 빌드 예제
'운영체제 > 리눅스(CentOS)' 카테고리의 다른 글
리눅스 시스템 부팅 과정 완전정복 (0) | 2025.04.18 |
---|---|
리눅스에서 RAID 설정과 관리하기 (RAID 0, 1, 5, 10 설정 방법) (0) | 2025.04.15 |
리눅스 파일 시스템과 LVM 완벽 가이드 (0) | 2025.04.10 |
🐧 리눅스 Bash 스크립트 작성법 (기초 문법과 예제) (0) | 2025.04.09 |
🛡️ 리눅스 보안 모듈 기초: SELinux와 AppArmor (0) | 2025.04.08 |