採用情報

お問い合わせ

BLOG

EMLinux

2024 年 10 月 01 日

組込み Linux「EMLinux」を使ってみよう

はじめに

本記事では、前回の記事「 商用組込み Linux: EMLinux のご紹介」でご紹介した EMLinux を作成し、Web サーバである NGINX を EMLinux 上で動かします。手順の概要は以下になります。

  1. EMLinux の作成 ( 以降、EMLinux のビルドと呼びます )
  2. EMLinux のビルド設定をカスタマイズし NGINX をインストール

また本記事では、EMLinux および NGINX の動作確認のために、仮想マシンを作成できる OSS の QEMU を使います。

EMLinux の入手からビルド環境のセットアップまで

まず、ビルド環境を準備します。以下の記事の「評価環境の用意」から「EMLinux 3.0 のビルド ( ビルド用コンテナの起動前まで )」までの手順を実行し、EMLinux のディレクトリを展開してください。

なお、本記事では QEMU で EMLinux を動かすため、Raspberry Pi の実機をご用意いただく必要はありません。また、本記事では執筆時点の最新バージョンである EMLinux 3.1-202409 を使いました。

EMLinux を展開したディレクトリに移動してください。本記事では、以下のディレクトリに展開しました。

cd /home/emlinux/EMLinux_3.1-202409/source/emlinux-3.1-202409/

EMLinux のビルド用コンテナを起動するために、以下のディレクトリに移動してください。

cd repos/meta-emlinux/docker

EMLinux のビルド用コンテナを起動してください。

./run.sh

EMLinux のビルド用コンテナにログイン後、work ディレクトリに以下のファイルが保存されています。

build@37a3c680506c:~/work$ $ ls -l
total 8
drwxr-xr-x 9 build build 4096 Sep  5 08:02 repos
lrwxrwxrwx 1 build build   40 Sep  5 08:02 setup-emlinux -> repos/meta-emlinux/scripts/setup-emlinux
drwxr-xr-x 2 build build 4096 Sep  5 08:02 setup-hooks

EMLinux のビルド設定のカスタマイズ

work ディレクトリにて、以下のコマンドを実行してください。

build@37a3c680506c:~/work$ source setup-emlinux build

上記実行後、build ディレクトリに自動で移動します。

build@37a3c680506c:~/work/build$

vim コマンドで、conf/local.conf ファイルを開いてください。

build@37a3c680506c:~/work/build$ vim conf/local.conf

conf/local.conf ファイルの末尾に以下を追記してください。

MACHINE = "qemu-arm64"
IMAGE_PREINSTALL:append = " \
    nginx \
"

上記を指定することで、NGINX がインストールされた ARM64 版の OS を作成することができます。

以下のように bitbake コマンドを実行し、EMLinux のビルドを実行します。

build@37a3c680506c:~/work/build$ bitbake emlinux-image-base

ビルドが完了しましたら、exit コマンドでコンテナからログアウトしてください。

build@37a3c680506c:~/work/build$ exit

QEMU で EMLinux を起動する

QEMU で EMLinux を起動するために必要なパッケージ(ソフトウェア)をインストールしてください。

$ sudo apt install qemu-system-arm seabios

build ディレクトリに移動してください。本記事では、/home/emlinux ディレクトリ配下で作業を行ったため、build ディレクトリは以下になります。

cd /home/emlinux/EMLinux_3.1-202409/source/emlinux-3.1-202409/build

vim などで run-vm.sh ファイルを作成し、run-vm.sh を以下のように編集してください。

$ vim run-vm.sh
qemu-system-aarch64 \
-device virtio-net-device,netdev=net0,mac=52:54:00:12:35:02 \
-netdev user,id=net0,hostfwd=tcp::2280-:80 \
-drive id=disk0,file=./tmp/deploy/images/qemu-arm64/\
emlinux-image-base-emlinux-bookworm-qemu-arm64.ext4,if=none,format=raw \
-device virtio-blk-device,drive=disk0 -show-cursor -device VGA,edid=on \
-device qemu-xhci \
-device usb-tablet \
-device usb-kbd \
-object rng-random,filename=/dev/urandom,id=rng0 \
-device virtio-rng-pci,rng=rng0 \
-nographic \
-machine virt \
-cpu cortex-a57 \
-m 512 \
-serial mon:stdio \
-serial null \
-kernel ./tmp/deploy/images/qemu-arm64/\
emlinux-image-base-emlinux-bookworm-qemu-arm64-vmlinux \
-initrd ./tmp/deploy/images/qemu-arm64/\
emlinux-image-base-emlinux-bookworm-qemu-arm64-initrd.img \
-append 'root=/dev/vda rw highres=off console=ttyS0 mem=512M ip=dhcp console=ttyAMA0'

上記の実行例では、ポート番号 2280 で受け付けた要求を、仮想マシンである EMLinux のポート番号 80 (NGINX の既定のポート番号 ) に転送します。

run-vm.sh ファイルに実行権限を付与してください。

$ chmod +x run-vm.sh

run-vm.sh を実行し、QEMU で EMLinux を起動してください。

$ ./run-vm.sh 

起動完了後、ユーザ名 root、パスワード root でログインしてください。

[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x411fd070]
[    0.000000] Linux version 6.1.102-cip26 (isar-users@googlegroups.com) (aarch64-linux-gnu-gcc (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT Thu, 01 Jan 1970 01:00:00 +0000
[    0.000000] Machine model: linux,dummy-virt
[    0.000000] Memory limited to 512MB
(sinp)
EMLinux 3.1 EMLinux3 ttyAMA0
EMLinux3 login: root
Password: 

systemctl コマンドで、NGINX が起動していることを確認してください。

root@EMLinux3:~# systemctl status nginx 
● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: active (running) since Mon 2024-09-09 01:19:21 UTC; 1min 2s ago
(sinp)

ホストマシン(本記事では、Ubuntu Server 20.04)にログインしてください。Firefox などのウェブブラウザで http://localhost:2280 にアクセスし、以下のように NGINX の Welcome メッセージが出力されることを確認してください。

Welcome to nginx の画面

さいごに

いかがでしたでしょうか? Docker や QEMU が動作する Linux のマシンさえあれば、EMLinux をビルドし、動作させることが簡単にできます。

本記事を読んで、EMLinux を試してみたいと思われた方は、「EMLinux 無償評価版」をぜひ利用ください。

本記事では NGINX のみをインストールしましたが、実際の製品では、複数の Debian パッケージやお客様固有のパッケージのインストール、それらパッケージの設定ファイルの編集などが必要になります。また、お客様の製品に必要なパッケージや設定をまとめたシステムイメージを製品ごとに作成することも可能です。EMLinux のカスタマイズについてお困りの場合には、サイバートラストにご相談ください。

EMLinux についてのご質問はこちら

関連リンク
CentOS 7 延長サポートサービス
デジタルトランスフォーメーションのための電子認証基盤 iTrust
SSL/TLS サーバー証明書 SureServer Prime