こんにちは!「Zephyr OS入門」連載の第2回です。
[第1回:Zephyr OSとは?] では、Zephyr OSの概要や対応アーキテクチャ、豊富な標準ドライバの魅力について解説しました。
「さっそく触ってみたいけれど、まだ手元にマイコンボードがない…」
「Windowsマシンを使っているけれど、環境構築でハマりたくない…」
そんな方でも大丈夫!今回はWindowsのWSL2(Ubuntu)を利用し、実機マイコン不要の仮想環境(QEMUエミュレータ)上でZephyr OSを動かしていきます。
この記事の手順を一緒に進めながら、開発環境の構築と「Hello World」の実行まで一気にチャレンジしてみましょう!
今回のゴール
- WSL2(Ubuntu) 内にビルドツール群を導入する
- Zephyr専用の管理ツール「west」と「Zephyr SDK」をセットアップする
- 仮想ボード(
qemu_x86)向けにサンプルプログラムをビルドする - QEMU上で「Hello World!」の出力を確認する
Step 1:WSL2の有効化と必要パッケージの導入
まずはWindows上でLinux(Ubuntu)を動かすための事前準備を行います。
1. 推奨のUbuntuバージョンについて
Zephyr OSの開発環境には、長期サポート版(LTS)である Ubuntu 22.04 LTS または Ubuntu 24.04 LTS の利用を推奨します。
すでにWSL環境をお持ちの方は、ターミナルで以下のコマンドを実行してUbuntuのバージョンを確認しておきましょう。
lsb_release -a(※ Description: Ubuntu 22.04.x LTS または 24.04.x LTS と表示されれば問題ありません)

2. WSL2(Ubuntu)の起動
まだWSL2を導入していない方は、管理者権限のPowerShellで以下を実行してPCを再起動します。
# WSL2のインストール(標準で最新のUbuntu LTSが自動導入されます)
wsl --install3. 必要パッケージの一括インストール
Ubuntuターミナルが開いたら、以下のコマンドでシステム更新とビルドに必要な各種ツール(CMake, Ninja, Python等)を一括インストールします。
sudo apt update && sudo apt upgrade -y
sudo apt install -y git cmake ninja-build gperf \
ccache dfu-util device-tree-compiler wget \
python3-dev python3-pip python3-venv file make gcc \
gcc-multilib g++-multilib libsdl2-dev libmagic1Step 2:Python仮想環境の作成と「west」の導入
Zephyrプロジェクトでは、リポジトリの取得やビルド、書き込みなどを一括管理する 「west」 という専用ツールを使用します。Pythonの仮想環境(venv)を作成してセットアップを進めましょう。
1. 仮想環境(venv)の作成と有効化
作業用ディレクトリ(~/zephyr-workspace)を作成し、仮想環境に入ります。
mkdir -p ~/zephyr-workspace
cd ~/zephyr-workspace
# Python仮想環境の作成
python3 -m venv .venv
# 仮想環境の有効化
source .venv/bin/activate
※ ターミナルの先頭に (.venv) と表示されれば準備完了です。

2. west のインストールとワークスペース初期化
# west ツールのインストール
pip install west
# Zephyr のソースコード(マニフェスト)を取得して初期化
west init zephyrproject
cd zephyrproject
# 依存モジュール(HALや外部ライブラリ等)の一括ダウンロード(数分かかります)
west update
3. Python依存ライブラリのインストール
# Zephyrが必要とするPythonパッケージを一括インストール
pip install -r zephyr/scripts/requirements.txtStep 3:Zephyr SDK(コンパイラ&QEMU)の導入
次に、各種CPU用のコンパイラやエミュレータ(QEMU)が含まれた 「Zephyr SDK」 をインストールします。
# zephyrproject ディレクトリ内で実行
west sdk install実行すると自動で、CPUを判断して必要なパッケージをdownloadしてくれます。
Step 4:仮想環境(QEMU)で「Hello World」をビルド&実行!
いよいよ「Hello World」を動かしてみましょう!
Zephyrのソースコードには標準でたくさんのサンプル(samples/)が用意されています。今回はその中から samples/hello_world を使用します。
1. ビルドの実行
ターゲットとなるボード(-b オプション)に、x86用のQEMU仮想ボード qemu_x86 を指定してビルドを行います。
# zephyrproject/zephyr ディレクトリへ移動
cd zephyr
# qemu_x86 向けに hello_world サンプルをビルド
west build -b qemu_x86 samples/hello_worldターミナルに Generating files from /xxx/zephyr-workspace/zephyrproject/zephyr/build/zephyr/zephyr.elf for board: qemu_x86/atom と表示されればビルド成功です!
2. QEMU上でプログラムを実行!
続いて、ビルドしたバイナリをそのままQEMU上で起動します。
west build -t run実行すると、ターミナル上に以下のような文字列が出力されます!

画面上に 「Hello World! qemu_x86」 と出力されました!これで、仮想OS上でZephyr RTOSが正常にブートし、タスクを実行できたことが確認できました。
💡 QEMUの終了方法(重要)
QEMUが起動するとターミナルがQEMUのコンソール画面と繋がった状態になり、そのままでは通常のコマンド入力画面に戻れません。
QEMUを終了させるには、キーボードで以下のように操作します。
Ctrl+Aを押したあと、指を離してXを押す
これでQEMUプロセスが終了し、通常のターミナルに戻ることができます。
補足&トラブルシューティング
Q1. 次回ターミナルを開いたときはどうすればいい?
新しいUbuntuターミナルを開いた際は、作成したPython仮想環境の有効化を行ってください。
cd ~/zephyr-workspace
source .venv/bin/activateQ2. 他の仮想ボード(ARMなど)で動かしてみたい!
Zephyrはボード名を切り替えるだけで、全く同じコードを別アーキテクチャのQEMU上で動かせます。例えば ARM Cortex-M3 の仮想環境で動かす場合は、以下のように -p always(クリーンビルド)を付けて実行できます。
# ARM Cortex-M3 仮想環境(qemu_cortex_m3)でビルド&実行
west build -p always -b qemu_cortex_m3 samples/hello_world
west build -t run出力が Hello World! qemu_cortex_m3 に変わるのを確認してみると、Zephyrのマルチプラットフォーム対応の柔軟性が体感できます!

まとめ
今回は、Windowsマシン上で 「WSL2(Ubuntu 22.04/24.04 LTS)を使用したZephyr OSの開発環境構築」 から 「QEMU上でのHello World実行」 までを実際に手を動かしながら体験しました!
- WSL2(Ubuntu) を使えばLinuxと同じ手軽なコマンドで環境構築が可能
westツールを使ってプロジェクトや依存関係をスマートに管理- QEMU を使えば、実機マイコンが手元になくてもすぐに挙動確認ができる
次回は、RTOSの真骨頂である 「マルチタスクとマルチスレッド機能(タスク間通信・セマフォなど)」 について、実際にコードを書きながら深掘りしていきます!お楽しみに!

コメント