Xenomai 빌드 및 컴파일

Xenomai는 리눅스 커널 패치세트로, 실시간 응답성과 성능을 개선하는 데 사용된다. Xenomai의 빌드 및 컴파일 과정은 몇 가지 단계로 이루어져 있다. 아래에서는 Xenomai를 빌드하고 컴파일하는 방법을 상세히 설명하겠다.

1. 준비

우선, Xenomai를 빌드하고 컴파일하기 위해 필요한 도구와 의존성 패키지를 설치해야 한다. 다음 명령어를 사용해서 필요한 패키지를 설치할 수 있다.

sudo apt-get update
sudo apt-get install build-essential libncurses5-dev libssl-dev bison flex

2. Xenomai 다운로드

Xenomai 소스코드를 다운로드해야 한다. 최신 버전의 Xenomai 소스코드는 Xenomai 공식 사이트에서 확인할 수 있다. 예를 들어, Xenomai 3.1을 다운로드하는 경우 다음 명령어를 사용한다.

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

3. 커널 패치

다운로드한 Xenomai 소스코드에는 커널 패치가 포함되어 있다. 이를 사용하여 리눅스 커널을 패치한다. 먼저 리눅스 커널 소스코드를 다운로드하고 추출한다.

wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.94.tar.xz
tar xJf linux-4.19.94.tar.xz
cd linux-4.19.94

그 다음, Xenomai에서 제공하는 커널 패치를 적용한다.

cd ../xenomai-3.1
./scripts/prepare-kernel.sh --arch=x86_64 --linux=../linux-4.19.94 --adeos=ksrc/arch/x86/patches/ipipe-core-4.19.94-x86-2020-01-02.patch
cd ../linux-4.19.94

4. 커널 구성

Xenomai 설정을 포함한 커널 설정을 구성한다. 먼저 기본 커널 설정을 로드한다.

make menuconfig

이후 Xenomai 관련 설정을 확인하고 수정할 수 있다. 예를 들어, "General setup" -> "Preemption Model"에서 "Fully Preemptible Kernel (RT)"로 설정한다.

5. 커널 빌드 및 설치

패치된 리눅스 커널을 빌드하고 설치한다.

make -j$(nproc)
sudo make modules_install
sudo make install

이 과정이 완료되면 새로운 커널 이미지가 /boot 디렉토리에 생성된다.

6. 실시간 커널 설치

U-Boot을 사용하는 경우 부팅 환경 설정을 업데이트해야 한다. 일반적인 경우, '/etc/default/grub' 파일을 열어 새로운 커널을 기본 커널로 설정한다.

sudo nano /etc/default/grub

다음 줄을 추가하거나 수정한다.

GRUB_DEFAULT=0

'update-grub' 명령을 사용하여 GRUB 구성 파일을 업데이트한다.

sudo update-grub

시스템을 재부팅하고 새로운 커널로 부팅한다.

sudo reboot

시스템이 재부팅되면 새로운 커널로 부팅되고 Xenomai가 적용된 실시간 커널 환경이 설정된다. 이제 Xenomai를 제대로 설치했는지 확인하기 위해 몇 가지 테스트를 수행할 수 있다.

7. Xenomai 설치 확인

재부팅 후 터미널을 열고 Xenomai가 올바르게 설치되었는지 확인한다. 예를 들어, 다음 명령어를 사용하여 Xenomai 구성 요소를 검사할 수 있다.

dmesg | grep Xenomai

dmesg 출력에 "Xenomai" 관련 내용이 나타나면 성공적으로 설치된 것이다. 추가로, latency, switchtest 등 Xenomai에서 제공하는 기본 테스트를 실행하여 시스템의 실시간 성능을 확인할 수 있다.

cd /usr/xenomai/bin
sudo ./latency

이 명령어는 실시간 응답 시간을 측정하며, 응답 시간이 예상 범위 내에 있는지 확인할 수 있다.

Xenomai 사용자 공간 설치

사용자 공간 도구를 설치하여 Xenomai 환경을 완성한다. Xenomai 환경이 시스템 커널에서 뿐만 아니라 사용자 공간에서도 제대로 동작하도록 하기 위해 필요한 도구를 설치한다.

cd /path/to/xenomai-3.1
cd user-space
./configure
make -j$(nproc)
sudo make install

이 과정이 끝난 후, /usr/xenomai/bin 디렉토리에는 Xenomai 관련 유틸리티들이 설치되어 있게 된다. 여기에는 xeno-config, xeno-test, alchemy 등의 도구가 포함된다.

Xenomai 첫 실습

이제 간단한 Xenomai 프로그램을 작성하여 Xenomai 환경을 테스트할 수 있다. 예시로, 간단한 실시간 태스크를 작성해 봅시다.

#include <stdio.h>
#include <stdlib.h>
#include <alchemy/task.h>

RT_TASK demo_task;

void helloWorld(void *arg)
{
    printf("Hello, Xenomai!\n");
}

int main(int argc, char *argv[])
{
    rt_task_create(&demo_task, "Hello Xenomai Task", 0, 50, 0);
    rt_task_start(&demo_task, &helloWorld, NULL);

    pause();
    return 0;
}

위의 예제 코드를 hello.c 파일로 저장한 다음, 이를 컴파일하고 실행해 본다.

gcc hello.c -o hello -lxenomai
sudo ./hello

성공적으로 컴파일되고 실행되면 "Hello, Xenomai!"라는 메시지가 출력된다. 이는 Xenomai 실시간 태스크가 정상적으로 실행되고 있음을 의미한다.


Xenomai 설치 및 설정 과정은 커널 패치, 빌드, 설치 및 사용자 공간 도구 설치 과정을 포함한다. 이를 통해 리눅스 시스템이 실시간 응답성을 갖추게 된다. 이후 간단한 Xenomai 프로그램을 작성하여 실시간 환경을 테스트할 수 있다.