2020. 1. 13. 18:07ㆍEngineering/Linux Kernel
Content
1. Introduction
2. Kernel 구성하기 (Configuration)
3. Kernel 빌드하기
4. Kernel 설치하기
5. Kernel 버전 확인하기
Linux Kernel을 빌드하고 설치하는 과정을 실습을 통해 이해합니다.
1. Introduction
커널이란 운영체제의 핵심 부분을 말하죠.
리눅스는 이러한 커널의 여러가지 종류 중 하나 입니다.
그러나 일반적인 사용자들은 리눅스 커널 보다는,
리눅스 '배포판'들에 더 친숙합니다.
우분투, 레드햇, 페도라, 데비안 등등의 것들입니다.
리눅스 커널보다 더욱 친숙 하시죠?
리눅스 '배포판'은 리눅스 커널을 기초로,
리눅스 시스템을 기본적으로 운영할 수 있는 여러 가지 시스템 프로그램(대표적으로 쉘을 이야기할 수 있음), 및 설치 프로그램들을 통합적으로 모아 놓은 것입니다.
그리고 이 배포판을 사람들은 흔히 OS, 운영체제 라고도 부릅니다.
이러한 리눅스 배포판은 커널과 시스템 프로그램들이 구분되어 있기 때문에,
필요에 따라 커널만을 업데이트 할 수 있습니다.
OS 전체를 다시 새로 다운 받을 필요가 없는 것이지요!
(Window의 경우는 새로운 OS 버전으로 OS 전체를 재설치할 필요가 있습니다.)
그럼, 커널 업데이트가 용이한 리눅스 OS의 장점을 활용하기 위해서는
어떻게 새로운 버전의 커널을 빌드하고 설치하는지 알아야 하겠죠!
그 방법을 이번 글에서 소개 하겠습니다.
리눅스 커널 빌드 및 설치 과정은 크게 아래와 같이 3 단계 입니다.
1) 커널 구성 (Configuration)
2) 커널 빌드
3) 커널 설치
위 단계별로 실습을 진행할텐데요.
실습에 앞서 실습 환경을 준비해주시기 바랍니다.
가장 먼저, 리눅스계열 배포판이 설치된 PC를 준비해주세요.
이때, 디스크 용량이 넉넉잡아 40GB 정도 필요합니다.
커널 빌드시에 생성되는 파일들의 용량이 꽤 큽니다.
그다음은, 설치하고자 하는 커널 소스를 다운다운로드하고, 풀어줍니다.
커널 소스는 여기서 받으실 수 있습니다. https://www.kernel.org/
커널 소스를 저장할 경로는 어디든 관계 없습니다.
저는 아래와 같이 linux-5.4.10 버전을 다운 받았습니다.
2. 커널 구성하기 (Configuration)
커널 구성은 빌드하려는 커널의 세부 설정을 잡는 과정입니다.
영어로는 Configuration 이라고 부릅니다.
커널 소스에 이미 Makefile이 작성되어 있기 때문에, make config 명령어 한 줄만 실행하면 커널 구성 작업이 시작됩니다.
$ make config
($make menuconfig 명령을 사용하면, 모든 설정값을 메뉴 UI를 통해 선택할 수 있습니다.)
이때, 시스템에 존재하는 하드웨어, 네트워크 등의 특성에 맞게 여러가지 설정 옵션들을 선택해야 하며.
설정 값들은 커널 소스 폴더에 .config 라는 이름의 파일로 저장됩니다.
그러나, 이러한 설정 값들은 양이 너무 방대할 뿐만 아니라.
자신의 시스템 내 존재하는 하드웨어나 네트워크 정보에 대한 지식이 필요합니다.
따라서 깔끔한 리눅스 커널을 만들기 위해 수많은 옵션들에 올바른 설정 값을 선택하기란 쉽지 않습니다.
그래서 보통은 자신의 배포판이 사용한 config. 설정을 그대로 사용하는 것이 좋습니다.
배포판의 config. 설정 파일은 /boot 디렉토리 내에 존재하므로, 이를 복사해 사용하면 됩니다.
제가 사용한 배포판의 경우 /boot 디렉토리에 아래사진과 같이 4.4.0-x 버전에 대한 config. 파일들이 존재하고 있습니다.
자 그럼, 이들 중 하나의 config. 파일을 커널 소스파일 경로로 복사합니다.
mv /boot/config-4.4.0-145-generic [KERNEL_SRC_DIR]/.config
파일이 제대로 옮겨 졌는지 확인 해보시구요!
잘 옮겨졌으면, 다음 단계로 넘어 갑시다.
2. 커널 빌드하기
커널 빌드도 마찬가지로, 커널 소스 파일 내에 Makefile이 함께 제공되므로 make 명령이면 바로 수행 됩니다.
$ make -j8
커널 빌드 과정은 굉~장히 오래 걸립니다.
시간을 넉넉히 잡으시고 기다려 주세요!
이때, 빌드 관련 툴들이 미리 설치되어 있어야 합니다.
$ sudo apt-get install ncurses-dev libssl-dev
이외에도 다양한 툴들이 필요하니,
특정 명령어를 찾을 수 없는 에러가 난다면
그때그때필요한 툴들을 설치하시기 바랍니다.
3. 커널 설치하기
커널이 정상적으로 빌드 되었으면 커널을 설치할 차례입니다.
커널 빌드 후 여러가지 모듈들이 생성되는데 이 모듈 요소들을 알려주고,
부팅 시커널이 자동 적재될 수 있도록 설정하는 것이 커널 설치 과정입니다.
먼저 커널 모듈들의 요소를 알려주는 과정입니다.
이번엔 명령어 두 개가 필요합니다.
$ make modules
완료될 때까지 조금 기다려주세요.
다음으로,
$ make modules_install
조금 기다리셨다가 완료가 되셨으면!
마지막으로 부팅 시커널이 자동 적재될 수 있도록,
부트스트랩 루틴에게 새로운 커널의 위치를 알리는 과정은 아래와 같은 명령으로 수행됩니다.
$ make install
일정 시간기다립니다.
정상적으로 완료 되면, 이제 재부팅이 필요합니다.
새로 부팅하는 과정에서 새로운 커널로 자동 적재가 실행됩니다.
부팅해봅시다!
$ sudo reboot
5. 커널 버전 확인하기
재부팅이 완료되면,
새로 받은 5.4.10 버전의 커널이 제대로 동작하고 있는지 확인해 봐야겠죠.
아래 명령어를 통해 현재 적재된 커널 버전을 확인할 수 있습니다.
$ uname -a
타-란-!
Linux-5.4.10 버전의 커널이 정상적으로 적재 되었습니다!
수고하셨습니다!!
'Engineering > Linux Kernel' 카테고리의 다른 글
[Linux Kernel] 커널의 개념과 리눅스 커널의 구조 (9) | 2020.02.18 |
---|