데비안 방식 커널 컴파일

2025. 8. 2. 08:07리눅스 실제 사용 팁

프리랜서 생활을 하면서 리눅스 및 데비안에 관해 조금이나마 알고 있었던 지식들이 잊혀져 갔다. 언제부터였는지 까마득하다. 오랜만에 커널컴파일을 해본다.

 

데비안에서 준비한 커널을 다운로드해서 컴파일하는 과정을 기록해본다.

 

Debian Linux Kernel Handbook v1.0.21 에서 본 방식이다.

apt-get install linux-source-{version}

 

{version} 부분은 다운로드할 버전을 넣으면 된다. 근데 마냥 다 되는 게 아니고 패키지 저장소에 있는 것만 되기 때문에 현 시점에서 리눅스 커널 최신 버전은 6.16 이지만,

 

사용 중인 trixie (testing) 에서 지원하는 linux-source-{version} 패키지 버전은 6.12 뿐이므로 고르고 말고 할 것 없이 그냥 이것을 설치한다.

aptitude search ~nlinux-source
--
(출력)
p   linux-source                              - Linux kernel source (meta-package)                 
i   linux-source-6.12                         - Linux kernel source for version 6.12 with Debian pa

apt install linux-source-6.12
--
(설명)
리눅스 커널 소스는 전통적으로 /usr/src 밑에 다운로드 된다.

[/usr/src]
ls -l
합계 147584
drwxr-xr-x  2 root root      4096  8월  2일  06:42 linux-config-6.12
-rw-r--r--  1 root root 151115396  7월 16일  16:13 linux-source-6.12.tar.xz

tar xJf linux-source-6.12.tar.xz
--
(설명)
알파벳 대문자 'J' 옵션이 xz 압축해제 기능이다.
참고로 소문자 'j' 옵션은 bzip2 압축해제 기능임.

[/usr/src/linux-source-6.12]
cp ../config.amd64_none_amd64.xz .
unxz config.amd64_none_amd64.xz
cp config.amd64_none_amd64 .config
--
(설명)
unxz 로 xz 압축을 해제한다.
'.config' 은 리눅스 커널 소스 옵션이 저장되는 파일이다.
앞서 linux-source-{버전} 패키지를 설치할 때 데비안 커널에 맞춤설정된 파일이 linux-config-6.12/ 밑에 들어 있다.
원하는 파일을 커널 소스 DIR 아래에 '.config' 으로 이름을 변경하면 `make menuconfig` 실행 시 해당 설정을 불러온다.

apt install libncurses-dev
--
(설명)
ncurses 라이브러리는 리눅스 터미널에서 CUI 화면을 그려준다. 커널 옵션을 선택하는 방식은 여러가지가 있는데
리눅스 터미널에서 괘선으로 그려진 네모난 상자 안에서 스페이스 바 또는 알파벳 Y/N/M 으로 기능을 선택하려면
libncurses-dev 패키지가 설치되어 있어야 한다.

make menuconfig
--
(설명)
CUI 방식의 menuconfig 화면을 연다.

 

요렇게 생긴 화면이 실행된다

 

 

Device Drivers 카테고리로 가서 내 노트북에서 장애가 생기는 무선랜 모듈을 찾아본다.

 

 

설정을 마쳤으면 맨 앞으로 돌아와서 Save 를 선택하고 엔터를 친다. (지금은 예전의 패키가 사라져서 복잡한 메뉴화면을 볼 엄두가 나질 않네...) 최종적으로 Exit 를 통해 빠져 나온다, 선택내역은 '.config' 파일에 저장된다.

 

vi .config

 

메뉴 꾸러미 보기가 두려워서 .config 파일을 직접 편집하련다.

 

옵션 이름을 알고 있으면 여기서 검색한 후 '=' 뒤에 y / n / m 으로 기능선택을 하면 된다. m 은 메모리에 적재하거나 내릴 수 있는 모듈이다.

 

제대로 선택해는지 알 수 없다. menuconfig 에서는 ? 를 누르면 해당 기능에 대한 설명을 볼 수 있는데 이렇게 파일을 직접 편집할 때는 볼 수 없다.

 

make bindeb-pkg 로 바이너리 패키지를 빌드한다.

 

원하는 기능이 오류없이 실행되면 더할 나위 없겠지만 일단 컴파일 과정에서 오류만 발생하지 말거라...