본문 바로가기

Programming

Linux Kernel compile and update

커널 컴파일관련된 내용은 구글링하면 많이 나오지만 개인적으로 팁등과 함께 정리해본다. 먼저 기존 리눅스가 있을때 새로운 커널소스를 받아 컴파일하고 설치하면 재부팅시 부트로더가 기존커널과 새로운 커널중 어떤것으로 부팅할지 선택할 수 있게된다.


1. kernel.org 에서 원하는 커널소스버전 다운로드



2. make menuconfig 로 커널컴파일 옵션을 설정한뒤에 make 

참고로 make 시 ARCH=x86 등 컴파일시간을 줄이기위해 원하는 ARCH 옵션만 주는게 좋음

이 과정이 징그럽게 오래걸림... 특히 drivers 밑에 있는것들을 모두 컴파일하는데 엄청난 시간이 소요되는데, 그부분을 선택적으로 컴파일하는 요령이 있는지 잘 모르겠음


3. make modules_install install

ko 파일들을 모두 인스톨하고 마지막에 생성된 커널이미지(bzImage) 를 알아서 /boot 에 넣어주고 grub.cfg 자동설정해주고 초기 램디스크까지 모두 자동으로 설정해줌.


4. update-grub

grub 부트로더 설정을 업데이트해줘서 새로 컴파일한 커널과 기존커널을 모두 인식하게 해줌.


참고로 initrd 는 그대로 두고 vmlinuz 만 다른곳에서 컴파일한 결과물로 바꿔치기하고 재부팅을 해보면 바꿔친 커널이미지로 부팅이 되긴 된다.  하지만 busybox 쉘로만 부팅되고 GUI OS 가 뜨지를 않는다.  원인은 아무래도 바꿔친 커널 이미지가 다른 ko 드라이버들과 같은 컴파일 옵션과 같은 컴파일러로 컴파일되지 않았기때문에 호환되지 않는것 때문인것 같다.



'Programming' 카테고리의 다른 글

IDA/gdb Debugging After Attaching  (0) 2014.03.03
Building KVM from source in Ubuntu  (1) 2014.02.13
QEMU Internals  (0) 2014.01.02
Secret of SET_FS and KERNEL_DS in Linux Kernel  (0) 2013.12.31
Apache2 SSL Configuration  (0) 2013.11.28