1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

EMLinux 3.0 (202403) をQEMUでエミュレートしたRaspberry Pi 3で動かしてみた

Last updated at Posted at 2024-03-31

はじめに

サイバートラストが提供する組み込み/IoT機器向けのOSである「EMLinux」を、QEMUでエミュレートしたRaspberry Pi上で動かしてみました。

本記事では、以下に公開されている、EMLinuxの無償評価版を使用しました。

GitHubで公開されているEMLinuxを使う場合には以下の記事をご参照ください。

参考

EMLinuxのブログ

MIRACLE LINUX Users Meetup!!

構成図

+----------------------------------+
| +------------------------------+ |
| | +--------------------------+ | |
| | | +----------------------+ | | |
| | | | EMLinux 3.0 (202403) | | | |
| | | +----------------------+ | | |
| | | Rapsberry Pi 3           | | |
| | +--------------------------+ | |
| | QEMU                         | |
| +------------------------------+ |
| Ubuntu Server 22.04.4 LTS        |
+----------------------------------+

各ソフトウェアのバージョン

Ubuntu Server

$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.4 LTS"

Docker

$ docker version 
Client:
 Version:           24.0.5
 API version:       1.43
 Go version:        go1.20.3
 Git commit:        24.0.5-0ubuntu1~22.04.1
 Built:             Mon Aug 21 19:50:14 2023
 OS/Arch:           linux/amd64
 Context:           default

Server:
 Engine:
  Version:          24.0.5
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.3
  Git commit:       24.0.5-0ubuntu1~22.04.1
  Built:            Mon Aug 21 19:50:14 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.7.2
  GitCommit:        
 runc:
  Version:          1.1.7-0ubuntu1~22.04.2
  GitCommit:        
 docker-init:
  Version:          0.19.0
  GitCommit: 

Docker Compose

$ docker compose version 
Docker Compose version 2.20.2+ds1-0ubuntu1~22.04.1

QEMU

$ qemu-system-aarch64 --version 
QEMU emulator version 6.2.0 (Debian 1:6.2+dfsg-2ubuntu6.17)
Copyright (c) 2003-2021 Fabrice Bellard and the QEMU Project developers

前提条件

評価環境

項目 要件
OS Dockerが動作するLinux
CPU Intel 64対応プロセッサまたはAMD64対応プロセッサ (8スレッド以上を推奨)
RAM 8GiB以上 (16GiB以上を推奨)
Disk 30GiB以上の空き容量
その他 インターネットに接続可能であること
  • Proxyサーバがある場合、.bashrcなどに以下を設定し、再ログインしてください。
    $ cat .bashrc
    (snip)
    PROXY=http://<proxyサーバのIPアドレス>:<ポート番号>
    export http_proxy=${PROXY}
    export https_proxy=${PROXY}
    export ftp_proxy=${PROXY}
    export no_proxy='127.0.0.1'  
    

その他

  • 以降の作業は、Ubuntu Serverインストール時に作成したemlinuxユーザを使用しました。
  • emlinuxユーザのホームディレクトリは/home/emlinuxです。以降の作業は/home/emlinux上で行いました。

DockerおよびDocker Comoseのインストール

以下のコマンドを実行し、DockerおよびDocker Composeをインストールしてください。

sudo apt install -y docker.io docker-compose-v2

emlinuxユーザをdockerグループに追加してください。

sudo gpasswd -a emlinux docker

ログアウトし、再ログイン後、sudoなしでdockerコマンドを実行できることを確認してください。

$ docker ps 
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

Proxyサーバがある場合、Dockerにproxyサーバを設定してください。

sudo mkdir /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf <<EOF
[Service]
Environment="HTTP_PROXY=<proxyサーバのIPアドレス>:<ポート番号>"
Environment="HTTPS_PROXY=<proxyサーバのIPアドレス>:<ポート番号>"
EOF

dockerデーモンを再起動してください。

sudo systemctl daemon-reload
sudo systemctl restart docker

docker searchコマンドを実行し、proxyサーバが正しく設定されていることを確認してください。

$ docker search mariadb 
NAME                           DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mariadb                        MariaDB Server is a high performing open sou…   5713      [OK]       
(snip)

qemu-user-staticのインストール

x86_64の環境でarm64のバイナリをクロスビルドするために、qemu-user-staticをインストールしてください。

sudo apt install -y qemu-user-static

EMLinuxの展開

以下のページの「評価版お申込みフォーム」に必要事項を記入してください。

後日、申し込み時に入力いただいたメールアドレスに、ダウンロードURLを記載したメールが届きます。そのURLから EMLinux 3.0 をダウンロードしてください。なお、本記事では、EMLinux 3.0 (202403) を使用しています (EMLinuxは1ヶ月周期の定期リリースを行っており、yyyymmのようなバージョンが付いています) 。

EMLinux_3.0-202403.zipを/home/emlinuxにコピーしてください。

EMLinux_3.0-202403.zipを解凍してください。

cd /home/emlinux
unzip EMLinux_3.0-202403.zip
$ unzip EMLinux_3.0-202403.zip 
Archive:  EMLinux_3.0-202403.zip
   creating: EMLinux_3.0-202403/
   creating: EMLinux_3.0-202403/source/
  inflating: EMLinux_3.0-202403/source/emlinux-3.0-202403.tar.gz  
   creating: EMLinux_3.0-202403/doc/
  inflating: EMLinux_3.0-202403/doc/EMLinux_3.0-202403_Release_Notes.pdf  
  inflating: EMLinux_3.0-202403/doc/EMLinux_3.0-202403_User_Manual_ja.pdf  
  inflating: EMLinux_3.0-202403/doc/EMLinux_3.0-202403_Recipe_Guide_ja.pdf 

解凍後、sourceディレクトリに移動してください。

cd /home/emlinux/EMLinux_3.0-202403/source/

上記sourceディレクトリに保存されている emlinux-3.0-202403.tar.gzファイルを、tarコマンドで解凍してください。

tar xvf emlinux-3.0-202403.tar.gz

解凍後、以下のディレクトリに移動してください。

cd /home/emlinux/EMLinux_3.0-202403/source/emlinux-3.0-202403/repos/meta-emlinux/docker/

上記dockerディレクトリ内にある run.sh を実行してください。初回起動時にはコンテナの作成処理が行われます。コンテナ作成処理後、コンテナにログインした状態になります。

$ ./run.sh
(snip)
build@82fa043f8378:~/work$

local.confファイルの編集

以下のコマンドを実行し、ビルドのために必要な環境変数を設定してください。

source setup-emlinux build

viエディタでlocal.confファイルを開き、ファイルの末尾に以下を追記してください。

$ vi conf/local.conf
(snip)
MACHINE = "raspberrypi3bplus-64"
USERS += "emlinux"
USER_emlinux[password] = "emlinux"
USER_emlinux[flags] = "create-home clear-text-password"
USER_emlinux[home] = "/home/emlinux"
USER_emlinux[shell] = "/bin/bash"
IMAGE_INSTALL:append = " sshd-regen-keys"
IMAGE_PREINSTALL:append = " \
    openssh-server \
    connman \
"

EMLinuxのビルド

EMLinuxのビルドを行ってください。

bitbake emlinux-image-base

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

build@82fa043f8378:~/work$ exit 
exit

QEMUのインストール

QEMUをインストールしてください。

sudo apt install -y qemu-system-arm seabios

EMLinuxの起動

以下のディレクトリに移動してください。

cd /home/emlinux/EMLinux_3.0-202403/source/emlinux-3.0-202403/build

wicファイルのサイズを変更してください。1GiB, 2GiB, 4GiBのように、2の乗数のサイズとなるように変更してください。以下の例では、1GiBに変更しています。

qemu-img resize ./tmp/deploy/images/raspberrypi3bplus-64/emlinux-image-base-emlinux-bookworm-raspberrypi3bplus-64.wic 1G

viエディタでrun.shファイルを作成してください。

vi run.sh

run.shファイルに以下を記載してください。

qemu-system-aarch64 \
-m 1024 \
-M raspi3b \
-kernel ./tmp/deploy/images/raspberrypi3bplus-64/Image \
-dtb ./tmp/deploy/images/raspberrypi3bplus-64/bcm2837-rpi-3-b-plus.dtb \
-drive format=raw,file=./tmp/deploy/images/raspberrypi3bplus-64/emlinux-image-base-emlinux-bookworm-raspberrypi3bplus-64.wic \
-append "console=ttyAMA0 root=/dev/mmcblk0p2 rw rootwait rootfstype=ext4 dwc_otg.fiq_fsm_enable=0 bcm2708_fb.fbwidth=1280 bcm2708_fb.fbheight=720" \
-no-reboot \
-device usb-kbd \
-device usb-mouse \
-device usb-net,netdev=net0 \
-netdev user,id=net0,hostfwd=tcp::2222-:22 \
-nographic

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

chmod +x run.sh

run.shファイルを実行してください。

./run.sh
$ ./run.sh 
[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[    0.000000] Linux version 6.1.75-cip14 (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 0   1:00:00 +0000
[    0.000000] Machine model: Raspberry Pi 3 Model B+
[    0.000000] efi: UEFI not found.
[    0.000000] Reserved memory: created CMA memory pool at 0x0000000038000000, size 64 MiB
(snip)
  • FIXME: 現時点では、ログインプロンプトが表示されず、後述のsshでログインする必要があります。

別のターミナルを開き、sshで仮想マシンにアクセスできることを確認してください。

ssh emlinux@localhost -p 2222

さいごに

ビルドしたEMLinux 3.0 (202403) を、QEMUでエミュレートしたRaspberry Pi上で動かしてみました。お手元にRaspberry Piの実機が無くても、QEMUでお手軽に動かすことが可能です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?