리눅스 커널 컴파일은 시스템에 최적화된 커널을 직접 빌드하는 과정으로, 불필요한 기능을 제거하고 성능과 안정성을 향상시킬 수 있는 강력한 방법이다.
커널 컴파일을 하는 이유
- 시스템 최적화
- 사용하지 않는 기능을 제거해 커널 크기를 줄이고, 메모리 사용량을 최소화.
- 시스템에 꼭 필요한 기능만 포함시켜 성능을 극대화
- 사용하지 않는 드라이버와 기능을 제거하여 부팅 속도와 전반적인 성능을 향상시킬 수 있음.
- CPU 아키텍처 및 하드웨어에 맞게 최적화된 컴파일 옵션을 적용 가능.
- 새로운 기능 추가
- 최신 커널 버전으로 업그레이드해 새로운 하드웨어 지원 및 기능 활용.
- 최신 리눅스 커널을 직접 빌드하면 최신 드라이버, 보안 패치, 새로운 기능을 사용할 수 있음.
- 특정 기능(예: 실시간 커널, 보안 모듈)을 활성화.
- 최신 하드웨어 지원이 필요할 때 유용함.
- 보안 강화
- 기본 커널에는 일반적으로 모든 기능이 활성화되어 있어 보안 취약점이 발생할 가능성이 높음.
- 필요 없는 네트워크 프로토콜, 파일 시스템, 디버깅 기능 등을 제거하여 공격 표면을 줄일 수 있음.
- SELinux, AppArmor 같은 보안 기능을 직접 설정하여 강화 가능.
커널 컴파일 단계별 과정
1) 커널 설정 초기화
make mrproper
2) 커널 컴파일 옵션 설정
커널 컴파일 옵션을 설정한다. 텍스트 기반 메뉴를 사용해 설정할 수 있다.
make menuconfig
설정된 내용은 .conifg 파일에 기록이 된다.
menuconfig: 필요한 기능을 활성화하거나 비활성화할 수 있는 텍스트 기반 인터페이스.
주의: 불필요한 기능을 제거해 커널 크기를 최적화.
3) 커널 컴파일 옵션 설정
커널 이미지 파일(bzImage)을 생성한다.
make bzImage
4) 커널 모듈 컴파일
커널 모듈을 컴파일한다.
make modules
5) 커널 모듈 설치
커널 모듈을 시스템에 설치한다.
make modules_install
6) 커널 설치 및 GRUB 설정
커널 이미지와 관련 파일을 복사하고, GRUB 부트로더 설정을 업데이트한다.
make install
GRUB 설정 확인: /boot/grub2/grub.cfg 파일에 새로운 커널 항목이 추가되었는지 확인.
7) 시스템 재부팅
새로운 커널을 사용하기 위해 시스템을 재부팅한다.
reboot