우분투에서 Preempt RT 커널을 설치하는 과정은 다음과 같은 단계로 구성된다. 이 절차를 따라가면서 실시간 커널을 성공적으로 설치할 수 있다.
1. Preempt RT 커널 패치 다운로드
Preempt RT 커널을 설치하려면 먼저 Linux 커널 소스에 Preempt RT 패치를 적용해야 한다. 다음은 필요한 파일을 다운로드하는 절차이다.
-
우분투 기본 커널 소스 다운로드
터미널에서 아래 명령어를 입력하여 현재 시스템에 맞는 기본 커널 소스를 다운로드한다.bash sudo apt-get update sudo apt-get install linux-source
이 명령은 기본 커널 소스를/usr/src/
디렉토리에 다운로드한다. -
Preempt RT 패치 다운로드
Linux 커널의 특정 버전에 맞는 Preempt RT 패치를 다운로드해야 한다. 커널 버전과 패치 버전은 반드시 일치해야 한다. 최신 패치를 다운로드하려면 아래 사이트에서 다운로드할 수 있다: - https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/
원하는 커널 버전에 맞는 .patch
파일을 다운로드한다.
2. 커널 소스 추출 및 패치 적용
다운로드한 커널 소스와 Preempt RT 패치를 사용하여 커널을 컴파일할 준비를 한다.
-
커널 소스 추출
/usr/src/
디렉토리로 이동하여 커널 소스를 추출한다.bash cd /usr/src/ tar xvf linux-source-<version>.tar.bz2 cd linux-source-<version>
<version>
부분은 다운로드한 커널 버전으로 대체한다. -
패치 적용
다운로드한 Preempt RT 패치를 커널 소스에 적용한다. 패치 파일이 있는 디렉토리로 이동한 후, 다음 명령을 사용하여 패치를 적용한다.bash patch -p1 < /path/to/patch-<version>-rt.patch
여기서/path/to/
는 패치 파일의 경로이며,<version>
은 커널 버전을 의미한다. 이 명령은 커널 소스에 실시간 패치를 적용한다.
3. 커널 설정
커널을 컴파일하기 전에, 설정을 통해 원하는 기능과 옵션을 선택할 수 있다.
-
기본 설정 파일 복사
기존 커널의 설정 파일을 복사하여 시작할 수 있다. 이는/boot/
디렉토리에서 찾을 수 있다.bash cp /boot/config-$(uname -r) .config
이 명령어는 현재 사용 중인 커널의 설정을 기반으로 새로운 커널 설정 파일을 생성한다. -
커널 설정 메뉴 실행
다음 명령어로 커널 설정 메뉴를 실행한다.bash make menuconfig
이 명령어를 실행하면 터미널에 커널 설정 메뉴가 나타난다. 여기서 다양한 옵션을 설정할 수 있다. 실시간 커널 설정에서는 아래와 같은 항목들을 주의 깊게 설정해야 한다: -
Processor type and features:
여기서Preemption Model
을 선택하여Fully Preemptible Kernel (RT)
을 활성화한다. - Timer frequency:
1000Hz로 설정하는 것이 일반적이다.
4. 커널 컴파일 및 설치
커널 설정을 완료한 후, 커널을 컴파일하고 설치하는 단계이다.
-
커널 컴파일
다음 명령어로 커널을 컴파일한다:bash make -j$(nproc)
이 명령은 시스템의 모든 코어를 사용하여 커널을 컴파일한다.-j$(nproc)
옵션은 병렬 컴파일을 위해 사용된다. -
모듈 설치
컴파일이 완료되면, 커널 모듈을 설치한다.bash sudo make modules_install
-
커널 설치
최종적으로 커널을 설치한다:bash sudo make install
이 명령어는 새로운 커널을/boot/
디렉토리에 설치하고, 부트로더에 커널을 추가한다.
5. GRUB을 통한 커널 선택 및 부팅
새로운 커널을 설치한 후, GRUB을 통해 해당 커널로 부팅을 설정할 수 있다.
-
GRUB 업데이트
새로운 커널을 인식하도록 GRUB을 업데이트한다:bash sudo update-grub
-
커널 선택 및 부팅
시스템을 재부팅하면 GRUB 메뉴에서 새로운 Preempt RT 커널을 선택할 수 있다. 원하는 커널을 선택하여 시스템을 부팅한다.
이상으로 우분투에서 Preempt RT 커널을 설치하는 방법에 대해 설명하였다.
6. 설치 확인 및 문제 해결
설치가 완료된 후, 새로운 커널이 올바르게 설치되었는지 확인해야 한다.
-
커널 버전 확인
시스템이 새로운 커널로 부팅되었는지 확인하기 위해 다음 명령어를 사용한다:bash uname -r
이 명령어는 현재 부팅된 커널의 버전을 출력한다. 출력된 버전이 Preempt RT 패치가 적용된 버전인지 확인한다. -
실시간 특성 확인
실시간 커널이 올바르게 동작하는지 확인하기 위해, 아래 명령어를 사용하여 실시간 특성을 확인할 수 있다:bash cyclictest -l 100000 -m
cyclictest
는 주기적으로 실시간 성능을 측정하여 레이턴시를 확인하는 유틸리티이다. 이 명령을 통해 시스템의 실시간 성능을 평가할 수 있다. 레이턴시가 낮게 유지되면 커널이 제대로 작동하고 있음을 의미한다.
7. 문제 발생 시 대응 방법
설치 과정에서 문제가 발생할 경우, 아래와 같은 문제 해결 방법을 시도할 수 있다.
-
부팅 불가 문제
새로운 커널로 부팅이 되지 않는다면, GRUB 메뉴에서 이전에 사용하던 안정적인 커널로 부팅할 수 있다. GRUB 메뉴에서 커널 목록을 확인하고 이전 커널을 선택한다. -
컴파일 오류
커널 컴파일 중 오류가 발생하는 경우, 로그 파일을 확인하여 오류의 원인을 파악한다. 오류 메시지를 기반으로 누락된 패키지나 설정 오류를 수정한다. 필요한 경우 패치 버전과 커널 소스 버전을 다시 확인하고 일치 여부를 확인한다. -
패치 충돌
특정 커널 버전과 Preempt RT 패치 버전이 충돌할 수 있다. 이 경우, 패치가 적용된 커널 소스를 다운로드하거나, 다른 커널 버전 또는 패치를 시도해 볼 수 있다.
8. 추가 패키지 설치
실시간 애플리케이션 개발을 위해 추가적으로 필요한 패키지를 설치할 수 있다. 대표적으로 libcgroup
, rt-tests
등이 있다.
sudo apt-get install libcgroup rt-tests
이 패키지들은 실시간 성능 테스트 및 그룹화된 자원 관리를 위한 도구를 제공한다.
9. 시스템 최적화
Preempt RT 커널이 설치된 후, 실시간 성능을 극대화하기 위해 시스템을 최적화할 수 있다. CPU 주파수 고정, C-state 비활성화, IRQ 핀 고정 등의 방법을 통해 실시간 성능을 개선할 수 있다. 이 부분에 대해서는 이후 장에서 더 자세히 다루겠다.