QNX 가상 머신 이미지 생성 및 실행 (QEMU + mkqnximage 활용법)
QNX는 실시간 운영체제(RTOS)로, 자동차, 의료기기, 산업용 장비 등에서 많이 사용된다. 이번 글에서는 QNX 가상 머신 이미지를 만들어 QEMU에서 실행하는 전체 과정을 소개한다. 실습 중심으로 따라 할 수 있게 정리했으며, mkqnximage 명령어를 활용한다.
실습 환경
- QNX SDP (Software Development Platform): 8.0 버전
- QEMU: x86 타겟 호스트 OS: Ubuntu 24.04
- 이미지 생성 도구: mkqnximage
QNX SDP 8.0 평가판 버전을 무료로 받아서 설치하는 방법은 2025.03.07 - [Automotive] - 비상업적 용도를 위한 QNX SDP 8.0 무료 라이선스 글을 참고하면 된다.
mkqnximage 소개
mkqnximage 명령어는 QNX OS 가상 머신 이미지를 쉽게 생성하고 실행할 수 있도록 도와준다. 윈도우와 리눅스에서 사용할 수 있으며 가상 머신 환경은 QEMU, Virtualbox, VMware x86-64 이미지를 지원한다.
$ mkqnximage --type=vmware|vbox|qemu [--build] [--clean]
[--config=file[:file]...] [--defaults [=option]]
[--extra-dirs=none|directory_list] [--getip]
[--graphics [= yes | no ]] [--help [=option|brief]]
[--hostname=hostname][--options]
[--policy=none|path] [--repos=dir[:dir]...]
[--run [= options | -h ]] [--stop]
[--wipe]
자세한 명령어와 사용방법에 대한 자세한 내용은 QNX 문서를 참고하기 바란다.
mkqnximage를 이용한 QEMU x86-64 이미지 생성
mkqnximage 명령어를 사용하기 전에 QNX SDP 디렉토리에서 qnxsdp-env.bat (윈도우) 또는 qnxsdp-env.sh (리눅스) 환경설정을 반드시 먼저 해주어야 한다.
mkqnximage 명령어를 사용하여 QEMU x86-64 이미지를 생성한다. 이후 아래와 같은 디렉토리 구조 및 파일들이 생성되며 --run 옵션을 추가로 주면 QEMU에서 실제로 실행이 된다.
QEMU 빌드 및 이미지 디렉토리 구조
local과 output 디렉토리가 생성이 된다.
- custom한 내용을 추가하고 싶으면 local/snippets 하위의 파일들을 수정하면 된다.
- output 디렉토리 밑에는 procnto-smp-instr.sym (디버깅용 심볼 포함 커널 파일) 과 ifs.bin (부팅 파일)이 생성되어 있는 것을 볼 수 있다.
- output/build 디렉토리 하위에는 이미지를 빌드하기 위한 파일들이 있다.
mkqnximage로 생성된 이미지에는 기존 파일의 내용을 추가하거나 새로운 파일을 넣는 것이 가능하다. 이를 통해 예를 들어 부팅 시 새로운 서비스를 시작하도록 설정할 수 있다.
이러한 변경을 하려면 local/snippets 디렉터리에 있는 '스니펫(snippet)' 파일들을 수정하면 된다. 자주 사용하는 스니펫 파일들은 기본적으로 생성되어 있으며, 필요에 따라 더 만들 수도 있다.
각 스니펫 파일 이름은 해당 파일이 어떤 역할을 하는지를 나타내는 접두사(prefix)와, 고유한 이름을 위한 접미사(suffix)로 구성된다. 접미사는 보통 .custom이지만, 다른 값을 사용할 수도 있다. 예를 들어, 시스템 파티션에 파일을 추가하려면 local/snippets/system_files.custom 파일을 수정하면 되고, IFS에 파일을 추가하려면 local/snippets/ifs_files.custom 파일을 수정하면 된다.
더 자세한 내용은 https://www.qnx.com/developers/docs/8.0/com.qnx.doc.neutrino.utilities/topic/m/mkqnximage.html 의 "Customizing an image" 절을 참고하면 된다.
output/build 디렉토리를 보여주고 실제 QEMU 이미지 파일을 생성하는데 필요한 build 파일 및 sh 파일이 있다. 필요에 따라서 이 파일들을 수정한 후 --build 옵션으로 빌드를 하면 수정사항이 반영이 되어 이미지가 생성된다.
QEMU 이미지 실행
mkqnximage 명령어를 실행할 때 --run 옵션을 주면 QEMU 환경에서 이미지가 실행된다.
QEMU가 실행된 것을 볼 수 있다. 종료하고 싶으면 Ctrl + a를 누른후 x 키를 누르면 된다.
정리
QNX에서 mkqnximage 명령을 통해 QEMU x86-64 이미지를 만들고 실행하는 방법 및 커스텀 하는 방법에 대해서 알아보았다. 하드웨어 준비가 되기전에 개발을 시작하기 위해서 가상환경은 큰 도움이 되기 때문에 이 방법을 알아두면 정말 유용하다.
mkqnximage로 실행하는 환경은 QNX 개발환경인 vscode (플러그인 설치 필요) 및 Momentics 에 통합되어 있으니 IDE와 함께 사용하면 더욱 편하게 개발을 할 수 있다.
참고로, 공식적으로 QEMU에서 그래픽 가속 지원은 하지 않는다. 하지만 QNX 에 직접 컨텍해서 이야기 해보면 .... :)