Wisdom’s Cloud
[LINUX] 15. 간단한 커널 컴파일 본문
모듈의 개념과 커널 컴파일의 필요성
-
우선 커널의 가장 큰 역할은 '하드웨어 지원'이다. 커널에 들어 있는 하드웨어를 제어하는 코드 중 어떤 부분은 항상 사용하는 것이 아니라 필요할 때만 가끔씩 사용하는 부분이 많다.
-
따라서 자주 사용하지 않고 가끔 사용하는 코드는 커널에 넣지 않고 별도로 보관했다가 필요할 때 호출해 사용하면 커널의 크기가 그렇게 커지지 않으면서 더 많은 하드웨어를 지원할 수 있게 되며, 이렇게 별도로 보관했다가 필요할 때마다 호출하여 사용하는 코드를 '모듈'이라고 부른다.
-
하지만 커널에 넣어야 할 코드와 모듈로 분리해야 할 코드들이 내 컴퓨터의 하드웨어 맞게 원하는 대로 완전 분리되어 있지 않다.
-
이럴 때는 커널을 최신 버전으로 업그레이드하지 않고, 커널에 포함될 것과 모듈로 분리할 것을 사용자가 원하는 대로 지정해 기존의 커널과 똑같은 버전을 다시 컴파일할 수 있으며, 이렇게 하면 같은 하드웨어 사양이라도 더 효율적인 성능을 발휘할 수 있게 된다.
-
또한 최근 출시된 하드웨어를 장착했을 때 기존의 커널을 지원하지 않지만 최신 커널을 지원할 수 있기 때문에 이럴 때는 http://www.kernel.org에서 최신 커널 소스를 다운로드해서 커널을 업그레이드할 필요가 있으며, 그 외 보안 문제 때문에 커널을 업그레이드하는 경우도 있다.
커널 컴파일
-
커널의 실체도 결국은 파일이므로, CentOS 8의 커널은 /boot/vmlinuz-4.18.0-80.el8.x86_64이며, 이번 실습에서 커널 컴파일 결과는 /boot/vmliuz-5.3.11 파일이 될 것이다.
-
또한 기존 모듈은 /lib/modules/4.18.0-80.el8.x86_64/ 디렉터리에 들어 있으며, 새로 컴파일했을 때의 결과 모듈은 /lib/modules/5.3.11/ 디렉터리가 될 것이다.
[실습 1] CentOS 8의 커널을 최신 커널로 업그레이드하자.
step 0 초기화한 Server를 실행하고 root 사용자로 접속하자.
step 1 설치된 커널 버전과 현재 최신 커널 버전을 확인하자.
step 2 커널 소스를 다운로드하자.
step 3 다운로드한 파일을 /usr/stc/ 디렉터리로 옮긴 후 압축을 풀자.
mv /root/다운로드/linux-5.10.12.tar.xz /usr/src/
cd /usr/src/
tar xfJ linux-5.10.12.tar.xz
cd linux-5.10.12/
ls
step 4 컴파일 환경을 설정하자.
# CONFIG_SYSTEM_TRUSTED_KEYRING=y
# CONFIG_SYSTEM_TRUSTED_KEYS="certs/rhel.pem"
step 5 본격적으로 컴파일을 진행하자.
* make 명령은 커널 컴파일 환경 설정대로 소스 파일을 실제 컴파일하는 과정이며,
make modules_install 명령은 컴파일된 모듈을 /lib/moduels/ 디렉터리에 설치하는 과정이고,
make install 명령은 실제 컴파일된 커널을 /boot 디렉터리에 설치하는 과정이다. *
step 6 새로운 커널로 부팅하자.
'LINUX > Beginner' 카테고리의 다른 글
[LINUX] 17. X 윈도 응용 프로그램 (0) | 2021.02.05 |
---|---|
[LINUX] 16. 그놈 데스크톱 환경 설정 (0) | 2021.02.04 |
[LINUX] 14. GRUB 부트로더 (0) | 2021.01.30 |
[LINUX] 13. 응급 복구 (0) | 2021.01.30 |
[LINUX] 12. 서비스, 소켓 (0) | 2021.01.30 |