우분투에서 Preempt RT 커널을 설치하는 과정은 다음과 같은 단계로 구성된다. 이 절차를 따라가면서 실시간 커널을 성공적으로 설치할 수 있다.

1. Preempt RT 커널 패치 다운로드

Preempt RT 커널을 설치하려면 먼저 Linux 커널 소스에 Preempt RT 패치를 적용해야 한다. 다음은 필요한 파일을 다운로드하는 절차이다.

  1. 우분투 기본 커널 소스 다운로드
    터미널에서 아래 명령어를 입력하여 현재 시스템에 맞는 기본 커널 소스를 다운로드한다. bash sudo apt-get update sudo apt-get install linux-source 이 명령은 기본 커널 소스를 /usr/src/ 디렉토리에 다운로드한다.

  2. Preempt RT 패치 다운로드
    Linux 커널의 특정 버전에 맞는 Preempt RT 패치를 다운로드해야 한다. 커널 버전과 패치 버전은 반드시 일치해야 한다. 최신 패치를 다운로드하려면 아래 사이트에서 다운로드할 수 있다:

  3. https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/

원하는 커널 버전에 맞는 .patch 파일을 다운로드한다.

2. 커널 소스 추출 및 패치 적용

다운로드한 커널 소스와 Preempt RT 패치를 사용하여 커널을 컴파일할 준비를 한다.

  1. 커널 소스 추출
    /usr/src/ 디렉토리로 이동하여 커널 소스를 추출한다. bash cd /usr/src/ tar xvf linux-source-<version>.tar.bz2 cd linux-source-<version> <version> 부분은 다운로드한 커널 버전으로 대체한다.

  2. 패치 적용
    다운로드한 Preempt RT 패치를 커널 소스에 적용한다. 패치 파일이 있는 디렉토리로 이동한 후, 다음 명령을 사용하여 패치를 적용한다. bash patch -p1 < /path/to/patch-<version>-rt.patch 여기서 /path/to/는 패치 파일의 경로이며, <version>은 커널 버전을 의미한다. 이 명령은 커널 소스에 실시간 패치를 적용한다.

3. 커널 설정

커널을 컴파일하기 전에, 설정을 통해 원하는 기능과 옵션을 선택할 수 있다.

  1. 기본 설정 파일 복사
    기존 커널의 설정 파일을 복사하여 시작할 수 있다. 이는 /boot/ 디렉토리에서 찾을 수 있다. bash cp /boot/config-$(uname -r) .config 이 명령어는 현재 사용 중인 커널의 설정을 기반으로 새로운 커널 설정 파일을 생성한다.

  2. 커널 설정 메뉴 실행
    다음 명령어로 커널 설정 메뉴를 실행한다. bash make menuconfig 이 명령어를 실행하면 터미널에 커널 설정 메뉴가 나타난다. 여기서 다양한 옵션을 설정할 수 있다. 실시간 커널 설정에서는 아래와 같은 항목들을 주의 깊게 설정해야 한다:

  3. Processor type and features:
    여기서 Preemption Model을 선택하여 Fully Preemptible Kernel (RT)을 활성화한다.

  4. Timer frequency:
    1000Hz로 설정하는 것이 일반적이다.

4. 커널 컴파일 및 설치

커널 설정을 완료한 후, 커널을 컴파일하고 설치하는 단계이다.

  1. 커널 컴파일
    다음 명령어로 커널을 컴파일한다: bash make -j$(nproc) 이 명령은 시스템의 모든 코어를 사용하여 커널을 컴파일한다. -j$(nproc) 옵션은 병렬 컴파일을 위해 사용된다.

  2. 모듈 설치
    컴파일이 완료되면, 커널 모듈을 설치한다. bash sudo make modules_install

  3. 커널 설치
    최종적으로 커널을 설치한다: bash sudo make install 이 명령어는 새로운 커널을 /boot/ 디렉토리에 설치하고, 부트로더에 커널을 추가한다.

5. GRUB을 통한 커널 선택 및 부팅

새로운 커널을 설치한 후, GRUB을 통해 해당 커널로 부팅을 설정할 수 있다.

  1. GRUB 업데이트
    새로운 커널을 인식하도록 GRUB을 업데이트한다: bash sudo update-grub

  2. 커널 선택 및 부팅
    시스템을 재부팅하면 GRUB 메뉴에서 새로운 Preempt RT 커널을 선택할 수 있다. 원하는 커널을 선택하여 시스템을 부팅한다.

이상으로 우분투에서 Preempt RT 커널을 설치하는 방법에 대해 설명하였다.

6. 설치 확인 및 문제 해결

설치가 완료된 후, 새로운 커널이 올바르게 설치되었는지 확인해야 한다.

  1. 커널 버전 확인
    시스템이 새로운 커널로 부팅되었는지 확인하기 위해 다음 명령어를 사용한다: bash uname -r 이 명령어는 현재 부팅된 커널의 버전을 출력한다. 출력된 버전이 Preempt RT 패치가 적용된 버전인지 확인한다.

  2. 실시간 특성 확인
    실시간 커널이 올바르게 동작하는지 확인하기 위해, 아래 명령어를 사용하여 실시간 특성을 확인할 수 있다: bash cyclictest -l 100000 -m cyclictest는 주기적으로 실시간 성능을 측정하여 레이턴시를 확인하는 유틸리티이다. 이 명령을 통해 시스템의 실시간 성능을 평가할 수 있다. 레이턴시가 낮게 유지되면 커널이 제대로 작동하고 있음을 의미한다.

7. 문제 발생 시 대응 방법

설치 과정에서 문제가 발생할 경우, 아래와 같은 문제 해결 방법을 시도할 수 있다.

  1. 부팅 불가 문제
    새로운 커널로 부팅이 되지 않는다면, GRUB 메뉴에서 이전에 사용하던 안정적인 커널로 부팅할 수 있다. GRUB 메뉴에서 커널 목록을 확인하고 이전 커널을 선택한다.

  2. 컴파일 오류
    커널 컴파일 중 오류가 발생하는 경우, 로그 파일을 확인하여 오류의 원인을 파악한다. 오류 메시지를 기반으로 누락된 패키지나 설정 오류를 수정한다. 필요한 경우 패치 버전과 커널 소스 버전을 다시 확인하고 일치 여부를 확인한다.

  3. 패치 충돌
    특정 커널 버전과 Preempt RT 패치 버전이 충돌할 수 있다. 이 경우, 패치가 적용된 커널 소스를 다운로드하거나, 다른 커널 버전 또는 패치를 시도해 볼 수 있다.

8. 추가 패키지 설치

실시간 애플리케이션 개발을 위해 추가적으로 필요한 패키지를 설치할 수 있다. 대표적으로 libcgroup, rt-tests 등이 있다.

sudo apt-get install libcgroup rt-tests

이 패키지들은 실시간 성능 테스트 및 그룹화된 자원 관리를 위한 도구를 제공한다.

9. 시스템 최적화

Preempt RT 커널이 설치된 후, 실시간 성능을 극대화하기 위해 시스템을 최적화할 수 있다. CPU 주파수 고정, C-state 비활성화, IRQ 핀 고정 등의 방법을 통해 실시간 성능을 개선할 수 있다. 이 부분에 대해서는 이후 장에서 더 자세히 다루겠다.