리눅스 커널 컴파일과 적용
안녕하세요. 땅파서 남주자 오늘은 리눅스 커널 컴파일하는 방법과 빌드된 커널 이미지를 적용하는 방법에 대해 알아 보겠습니다.
1. 현재 적용된 버전 확인
먼저 현재 적용되어 있는 리눅스 커널 버전을 확인하는 방법입니다.
아래의 그림과 같이 uname -a 명령을 실행하면 커널버전과 빌드날짜, 플랫폼 정보가 나옵니다.
적용되어 있는 버전은 3.11.0-15-generic 버전인 2014년 1월 30일에 빌드된 커널 이미지임을 확인할 수 있습니다.
/boot 디렉토리의 파일들을 보면 아래의 그림과 같이 크게 abi, config, initrd, System.map, vmlinuz로 구성되어 있습니다. 위에서 확인한 커널 버전과 같이 모두 3.11.0-15-generic으로 되어 있습니다. 간단히 보면 abi(Application Binary Interface)는 커널모듈 개발시 사용가능한 인터페이스들의 목록을 갖고, config는 빌드시 사용된 menuconfig 설정, initrd는 부팅시 사용할 램디스크 이미지, System.map은 커널 이미지의 심볼테이블 정보, vmlinuz는 실제 커널이미지로 구성됩니다.
2. 커널 컴파일
현재 적용되어 있는 커널의 빌드에 사용되었던 설정파일을 이용해서 컴파일 해 봅시다.
먼저 리눅스 커널 소스를 다운받아서 압축을 풀어놓은 디렉토리로 이동합니다.
아래의 명령을 실행하여 현재적용된 빌드설정을 복사합니다.
cp /boot/config-$(uname -r) .config
또는
cp /boot/config-`uname -r` .config
두번째 방법 사용할 경우 따옴표(')가 아니라 그레이브(`)임을 주의하세요.
위의 그림과 같이 .config 파일로 복사된 것을 확인할 수 있습니다.
아래의 명령을 실행하면 빌드설정 메뉴화면이 나타납니다.
make menuconfig
미리 복사해 놓은 .config 의 설정이 반영되어 있는것을 확인 할 수 있습니다. 간단히 방향키를 'Exit'로 이용하여 엔터키를 치고 빠져나올 수 있습니다. 자 이제 빌드 준비를 모두 마쳤습니다.
아래의 명령을 실행하여 커널 컴파일을 실행합니다.
make all
컴파일 시간이 컴퓨터 사양에 따라 다르지만 꽤 걸립니다. 잠시 관심을 다른곳에 돌리시고 마음편히 기다립시다.
컴파일이 완료되면, 자 이제 바로 적용해 봅시다. 아래의 명령을 실행하여 커널이미지를 적용합니다.
make modules_install
make install
위의 명령어를 실행하고 나면 컴파일한 커널모듈과 커널이미지에 대한 업그레이드가 완료된 상태입니다.
/boot 디렉토리를 확인해 보면 최신 커널 4.10.10이 적용되어 있음을 확인할 수 있습니다.
3. 새로운 커널이미지로 부팅 (재시작)
새로 컴파일한 커널이 적용되었고 이제 시스템을 재부팅해서 새로운 커널이미지로 부팅합니다.
reboot
또는
shutdown -r now
부팅 완료후 1번 과정에서 적용된 커널버전을 확인했던 방법으로 uname -a 명령으로 잘 적용됬는지 확인해 봅시다.
위의 그림과 같이 커널 4.10.10으로 잘 반영되어 있는것을 확인할 수 있습니다.