Xenomai 개요

Xenomai는 실시간 성능을 강화하기 위해 리눅스 커널에 패치를 적용한다. 이를 통해 리눅스 시스템에서도 하드 리얼타임 기능을 제공할 수 있다. 다음 섹션에서는 Xenomai 리눅스 커널 패치 과정을 단계별로 설명한다.

필수 사항

Xenomai를 설치하고 설정하기 전에 다음과 같은 사항이 준비되어 있어야 한다:

단계 1: 커널 소스 코드 다운로드

먼저 리눅스 커널 소스 코드를 다운로드한다. 일반적으로 사용되는 방법은 wget을 사용하여 적절한 버전의 소스 코드를 다운로드하고 이를 압축해제하는 것이다.

wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.10.tar.xz
tar -xf linux-5.10.tar.xz
cd linux-5.10

단계 2: Xenomai 소스 코드 다운로드

Xenomai 소스 코드를 다운로드하고 압축을 푼다. Xenomai 역시 wget을 이용해 다운로드 할 수 있다.

wget https://xenomai.org/downloads/xenomai/stable/xenomai-3.1.tar.bz2
tar -xjf xenomai-3.1.tar.bz2
cd xenomai-3.1

단계 3: 커널 패치 적용

이제 Xenomai에서 제공하는 패치를 커널 소스에 적용한다. 다음 명령을 통해 패치를 적용한다:

cd xenomai-3.1
./scripts/prepare-kernel.sh --linux=../linux-5.10 --arch=x86_64 --ipipe=./kernel/cobalt/arch/x86/patches/ipipe-core-5.10.27-x86-20210429.patch

위 명령에서 --linux는 커널 소스 위치를, --arch는 아키텍처를, --ipipe는 Xenomai 패치 파일을 지정해준다.

단계 4: 커널 구성 설정

다음으로 커널을 구성한다. 구성 단계에서는 Xenomai 관련 설정을 활성화해야 한다.

cd ../linux-5.10
make menuconfig

menuconfig 인터페이스에서 Xenomai/cobalt 항목을 찾아서 활성화한다. Processor family와 같은 다른 옵션도 환경에 맞게 설정한다.

단계 5: 커널 컴파일 및 설치

커널 구성 설정이 완료되면 이제 커널을 컴파일하고 설치한다. 필요한 모듈들도 함께 컴파일한다.

make -j$(nproc)
make modules_install
make install

위 명령은 현재 시스템의 CPU 코어 수를 최대한 활용하여 빠르게 커널을 컴파일한다.

단계 6: 부트로더 설정

새로운 커널을 사용하도록 부트로더를 설정한다. 대부분의 리눅스 배포판에서는 grub을 사용한다. 다음 명령을 실행하여 부트로더를 업데이트 한다:

update-grub

새로 설치된 커널이 부팅 목록에 추가되었는지 확인하고 시스템을 재부팅한다.

reboot

재부팅 후 그럽 메뉴에서 새로 컴파일한 Xenomai 커널을 선택하여 부팅한다.

단계 7: Xenomai 사용자 공간 라이브러리 설치

시스템이 재부팅되어 새로운 Xenomai 커널로 부팅되었다면 이제 Xenomai 사용자 공간 라이브러리를 설치할 차례이다.

cd xenomai-3.1
./scripts/bootstrap
./configure
make -j$(nproc)
sudo make install

위 명령을 통해 Xenomai 소스 코드로부터 사용자 공간 라이브러리를 컴파일하여 설치한다.

단계 8: Xenomai 동작 확인

마지막으로, Xenomai가 제대로 동작하는지 확인한다. 우선 /proc/xenomai 디렉토리가 존재하는지 확인한다.

ls /proc/xenomai

이 디렉토리가 존재하면 Xenomai가 제대로 설치된 것이다. Xenomai 실시간 테스트 프로그램도 실행해볼 수 있다.

cd /usr/xenomai/bin
./latency

이 명령은 Xenomai의 실시간 성능을 테스트하는 간단한 프로그램을 실행한다. 출력된 결과에서 실시간 성능을 확인할 수 있다.


여기까지가 Xenomai를 사용하여 리눅스 커널을 패치하고 구성하는 전체 과정이다. 각 단계마다 주의 깊게 따라하면 Xenomai를 사용하여 리눅스에서 하드 리얼타임 기능을 활용할 수 있다.