4장. 서버를 구축하는 데 알아야 할 필수 개념과 명령 (16) - 커널 컴파일

728x90
반응형

출처 : https://www.youtube.com/watch?v=UNCWsMrRVrs&list=PLVsNizTWUw7FqN2gq79Cb3R6qkS7mqOJk&index=28

 

모듈의 개념과 커널 컴파일의 필요성

모듈이란 필요할 때마다 호출하여 사용되는 코드이다.

 

이전에는 운영체제의 기능을 커널에 모두 넣었지만 하드웨어가 증가함에 따라 커널이 무거워지게 되었다. 그래서 운영체제의 필수적인 기능들만 커널에 집어넣고 언제 사용할지 모르는 유동적인 기능은 모듈에 넣어서 분리시켰다.

 

자세한 내용은 운영체제 항목 참조

 

우리가 Rocky Linux 9을 설치하면 커널과 모듈이 정해져있지만, 우리가 필요에 따라 커널에 있는 것을 모듈로 뺄수도 있고, 모듈에 있는 것을 커널에 넣을 수도 있다. 이것이 커널 컴파일이다.

 

 

커널 컴파일

커널 컴파일은 커널 버전을 업그레이드할 수 있다. 커널 컴파일을 업그레이드하는 순서는 다음과 같다.

 

 

  1. 현 커널 버전 확인
  2. 커널 소스 다운로드
  3. 커널 소스 압축풀기
  4. 커널 설정 초기화
  5. 커널 환경 설정
  6. .config 편집 및 이전 정보 삭제
  7. 커널 컴파일 및 설치
  8. 새로운 커널로 부팅

 

커널 업그레이드 실습

 

실습 목표

  • 최신의 커널로 업그레이드하는 방법을 익힌다.

 

실습

 

 

본 실습을 진행하기에 앞서 커널 컴파일은 꽤 오랜 시간이 걸릴 수 있기 때문에 컴퓨터 사양에 따라 램을 추가적으로 할당해주는 것을 추천드립니다. 제 컴퓨터는 램이 32GB 이므로 8기가로 설정을 변경하고 진행해 보도록 하겠습니다.

 

 

터미널에서 uname -r 명령어를 입력해 Rocky Linux 9.0의 커널 버전을 확인한다.

 

 

Firefox 웹 브라우저를 열고 kernel.org 로 들어가면 현재 Linux의 최신 커널 버전을 다운로드 받을 수 있다. 강의에서는 혹시 모를 에러를 방지하기 위해 카페에서 파일을 다운받지만 블로그 주인장은 실제로 커널 컴파일을 하는 상황에 대비하기 위해 최신버전으로 진행해 보도록 하겠다.

 

 

커널 최신버전을 다운로드 받은 다음 다운로드 디렉토리로 이동한다. 그 다음 ls -l 명령어를 입력하면 linux~.tar.xz 파일이 다운로드 되어있을 것이다.

 

이 파일을 /usr/src/ 로 옮긴 다음 해당 디렉토리로 이동하고 tar xfJ linux~.tar.xz 명령을 입력해서 압축을 푼다.

 

압축이 모두 풀리면 linux~ 디렉토리로 이동하고 ls 를 하면 리눅스 소스 코드들을 볼 수 있다.

 

 

커널 설정을 초기화하기에 앞서 관련 패키지를 먼저 설치하자.

 

dnf -y install gcc gcc-c++ make bison flex elfutils-libelf-devel openssl-devel dwarves 명령어를 입력해 필요한 패키지를 설치한다.

 

 

dnf -y install qt5* 명령을 입력해 추가적으로 qt5와 관련된 패키지를 설치한다.

 

 

관련 패키지가 모두 설치되면 해당 디렉토리에서 make mrproper 명령을 입력해 커널 설정을 초기화한다.

 

 

 

 

 

커널 환경을 설정하기 위해 make xconfig 명령을 입력한다. 그러면 위 그림과 같이 Kernel Configuration 창이 열린다.

 

 

processor type and features -> Process family에서 Generic-x86-64 를 선택한다.

 

 

File systems의 DOS/FAT/EXFAT/NT Filesystems -> NTFS file system support와 밑의 항목들을 모두 체크해준다. 그러면 NTFS 파일 시스템으로 포맷된 USB도 바로 읽기/쓰기를 할 수 있게 된다.

 

저장한 다음 Kernel Configuration을 닫는다.

 

 

gedit .config 명령을 입력해 gedit 에디터로 .config 파일을 실행한다. 그리고 CONFIG_SYSTEM_TRUSTED_KEYRING=y와 CONFIG_SYSTEM_TRUSTED_KEYS="certs/rocky.pem" 행 앞에 #을 붙여서 주석처리한다. 저장하고 에디터를 종료한다.

 

ctrl + f 를 사용하면 쉽게 찾을 수 있다.

 

 

make clean 명령을 입력해 이전의 컴파일 정보를 삭제한다.

 

 

이제 커널 컴파일 및 설치를 한다. 총 3개의 명령을 입력해야하는데 각 명령들의 실행 시간이 오래걸리므로 

make; make modules_install; make install 과 같이 세미콜론(;)으로 구분지어 세 명령을 한꺼번에 실행한다.

 

make : 커널 컴파일 환경 설정대로 소스 파일을 실제 컴파일

make modules_install : 컴파일된 모듈을 /lib/modules/ 디렉토리에 설치

make install : 실제 컴파일된 커널을 /boot 디렉토리에 설치

 

 

Additional X.509 ~~ 행에서 명령 실행이 잠시 멈추면 Enter 를 눌러 계속 컴파일을 진행하면 된다.

 

컴퓨터 성능에 따라 완료되기까지 굉장히 오랜 시간이 걸릴 수 있다.

 

설치를 완료하고 재부팅을 하면 GRUB2 부트로드에서 새로 설치한 커널 버전이 표시가 된다. 즉, 커널을 업그레이드하면 기존에 있던 버전이 사라지지않고 새로운 버전이 추가가 되는 형식이다.

 

 

 

728x90
반응형