<* 커널 컴파일 하기 *>
우분투 환경에서 리눅스 커널 컴파일과 시스템 호출 구현을 해보도록 한다 .
1) 커널 소스 다운로드
Firefox를 켜고
http://kernel.org 이곳에 들어가서 커널 소스를 다운받는다.
이 사이트에서 받은 소스를 내 컴퓨터에 설치할 수 있게 만드는 과정을 커널 컴파일 이라고 한다.
► [tarball]을 눌러 tar.xz 파일로 다운받는다.
4.19.x 버전을 다운받았는데, 버전은 크게 상관없기 때문에 원하는 버전으로 다운받으면 된다.
$ cd ~
$ mkdir Kernel_Work
$ cd Kernel_Work
$ w get
https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.14.9.tar.xz
2) 필요 패키지 설치
- 다음 명령어를 통해 커널 컴파일시 필요한 주요 패키지를 설치할 수 있다.
$ sudo apt-get update
$ sudo apt-get install build-essential libncurses5 libncurses5-dev bin86 kernel-package libssl-dev bison flex libelf-dev
3) 커널 압축 해제
$ cd ~/Kernel_Work
$ sudo tar -xvf linux-4.19.282.tar.xz -C/usr/src
4) 커널 컴파일 환견 설정
$ cd /usr/src/linux-4.19.0
$ make menuconfig
► 메뉴를 보면서 환경 설정을 한다.
► 좌우방향키로 움직이면 된다.
► Load 클릭 후 .config 파일을 불러온다. 후에 Save 누르고 저장 후 Exit로 나간다.
► "End of the configuration" 문구가 확인되면 설정이 잘 적용된 것이다.
-------------------------------------------------------------------
--> 현재 커널의 config 파일 복사
► 현재 커널의 configuration 파일을 복사하면 환경 설정을 하지 않아도 된다.
► 먼저, 현재 커널의 버전을 'uname -a' 명령어로 확인한 다음 현재 커널의 configuration 파일을 복사한다.
$ cd /usr/src/linux-4.19.0
$ sudo cp /boot/config-5.15.0-71-generic ./.config
----------------------------------------------------------------------------------------------------------------------------------
5) 커널 컴파일
• 커널 컴파일은 시간이 많이 걸리는 작업이다.
- 짧게 걸리면 1시간 안쪽이고 오래걸리면 수시간이 소요된다.
① 먼저 CPU 코어 개수를 확인해준다.
$ grep -c processor /proc/cpuinfo
코어 개수가 출력된다.
② 커널 컴파일을 할 때 사용하는 명령어는 아래와 같이 크게 2가지가 있다.
$ sudo make-kpkg -j* --initrd --revision=1.0 kernel_image # 1번
$ sudo make -j* # 2번 -*에 코어 개수를 입력하면 된다. (나의 경우 4코어이므로 -j4)
6) 커널 설치
커널 컴파일 시 어떤 명령어를 사용했냐에 따라 커널 설치 시 사용하는 명령어도 달라진다.
"$ sudo make-kpkg -j* --initrd --revision=1.0 kernel_image" 사용했을 시
$ sudo dpkg -i 커널이미지파일명
"$ sudo make -j*" 사용했을 시
$ sudo make modules_install install
7) GRUB설정을 변경
$ sudo vim /etc/default/grub
GRUB_TIMEOUT_STYLE=menu # 수정
GRUB_TIMEOUT=10 # 수정
GRUB_TERMINAL=console # 추가
► 변경 내용 적용 후 재시작 한다.
$ sudo update-grub