0.はじめに
0-1.背景
大変ありがたいことに、Atmark-TechnoさんのWebでも紹介されていたALGYANイベントの
「Armadillo-IoTゲートウェイ G4 LANモデル開発セットを抽選で2名様にプレゼントする企画」に当選しました。
Atmark-Technoさんの告知
以前からALGYANさんにはハンズオンイベントなどで大変お世話になっているのですが、こんな大物のプレゼント当選は初めてです。
ALGYAN7周年IoT祭2022
で、こんな条件がありました。
てなわけで、久しぶりのQIITA記事は「Armadillo-IoT G4開封の儀」です。
0-2.ALGYANでの實吉さんのプレゼン
ALGYANイベントでの實吉さんのプレゼン資料は以下のように大変興味深い内容でした。
プレゼン資料
大変興味深い内容だったんですが、、、
- 超盛り沢山なイベントだったので、實吉さんプレゼン時点では既に知恵熱出まくり状態
- 生来くじ運悪いタイプなので、Armadilloプレゼント応募に申し込んだことも忘れてた
ってな訳で、正直言うと「BaseOSに BootloderとOSが2面あるところは、Nerversと同じだなぁ~」くらいの印象しか残ってません m(_ _)m
Nerves-JP
そもそもArmadilloってプロが使うやつで、ラズパイで悪戦苦闘してる自分には別世界の話って思いもありましたし・・・
こんな事になるならちゃんと集中して聞いておきたかった(^^;
1.開封の儀
ALGYANさんからクロネコヤマトで届きました
Armadillo以外にも色々いただきました
Armadillo開封しました
素朴な印象:
- さすがプロの使うやつやぁ〜
- ケースがしっかりしとる
- ケーブルもしっかりしとる
- 電源がゴツい・・・
はい、物理的に開封しましたよ〜(^^;
流石にこれで終わりでは申し訳ないので、以下マニュアルをベースに、Armadillo IoT G4の売り(?)のBaseOS やPodmanコンテナにご挨拶するところまでは進めたいと思います。
Armadillo-IoT ゲートウェイ G4 製品マニュアル
2.開発環境(ATDE)で躓く
2-1.Windows VMware Player準備
マニュアルp35にこんな記述が・・・
開発環境(ATDE)はVMware Playerのvmx+vmdkで提供されてるようですが、Macではダメですか・・・
我が家のWindowsマシンは 旧型MacbookのBOOTCAMP環境なのでそっちでトライすることに。
Docker使うようになって、MacでもVirtualBoxはセキュリティ系「やられVM」作る時くらいしか使わなくなってたので、久しぶりにWindows10 + VMware PlayerインストールしてVMware画面見ました。
でもなんで、Mac + VMware Fusionじゃだめなんでしょうね?
2-2.ATDEが起動出来ません orz
ぬうぉおおお
マニュアルp40に記載のある画面が出てATDEが起動出来ないので、
まぁこれは我が家の環境のせいなんでしょうねぇ・・・Appleからも見放されてるLate 2011マシンなので仕方ないです。
かと言ってメインマシンのiMac(こちらはLate 2013^^;) をBOOTCAMP起動する訳にもいかないし。
2-3.ATDE使わないご挨拶方法
マニュアル読み進めると、ATDE起動 > GNOME Terminal で minicom使って、USBシリアルアクセスするのが最初のステップのようです。
これならMac screenコマンドでも出来そうです。
3.Macからご挨拶
3-1. screenでご挨拶
minicomに設定するパラメータをscreenコマンド引き数で指定するとこんな感じです
screen /dev/tty.usbserial-1430 115200,cs8,-parenb,-cstopb
ちなみに、/dev/tty.usbserial-1430 ってデバイス名は、USBケーブルの装着前後でlsコマンドで調べています。
iMac:~ kenzo$ ls -l /dev/tty.usb*
gls: cannot access '/dev/tty.usb*': No such file or directory
iMac:~ kenzo$ ls -l /dev/tty.usb*
crw-rw-rw- 1 root wheel 18, 2 6 4 10:03 /dev/tty.usbserial-1430
で、ログイン画面にご挨拶できました。
iMac:~ kenzo$ screen /dev/tty.usbserial-1430 115200,cs8,-parenb,-cstopb
Welcome to Alpine Linux 3.14
Kernel 5.10.52-1-at on an aarch64 (/dev/ttymxc1)
armadillo login:
早速お約束です。
rmadillo:~$ cat /etc/os-release
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.14.3
PRETTY_NAME="Alpine Linux v3.14"
HOME_RL="https://alpinelinux.org/"
BG_REPORT_RL="https://bugs.alpinelinux.org/"
armadillo:~$ uname -a
Linux armadillo 5.10.52-1-at #2-Alpine SMP PREEMPT Thu Dec 2 00:04:57 TC 2021 aarch64 GN/Linux
LANケーブルを挿してみます。
1239.552929] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[ 1239.559965] fec 30be0000.ethernet eth0: Link is p - 100Mbps/Full - flow control rx/tx
armadillo:~$ ip a
1: lo: <LOOPBACK,P,LOWER_P> mtu 65536 qdisc noqueue state NKNOWN qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MLTICAST,P,LOWER_P> mtu 1500 qdisc mq state P qlen 1000
link/ether 00:11:0c:33:00:f4 brd ff:ff:ff:ff:ff:ff
inet 192.168.3.54/24 brd 192.168.3.255 scope global dynamic noprefixroute eth0
valid_lft 86328sec preferred_lft 86328sec
inet6 2400:2412:3020:7700:5a05:92cd:e875:f5d2/64 scope global dynamic noprefixroute
valid_lft 14329sec preferred_lft 12529sec
inet6 fe80::308:e04f:c0cc:b547/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: eth1: <NO-CARRIER,BROADCAST,MLTICAST,P> mtu 1500 qdisc mq state DOWN qlen 1000
link/ether 00:11:0c:33:00:f5 brd ff:ff:ff:ff:ff:ff
sudoコマンドが無いのでlogout & rootでログインしてping確認も出来ました。
armadillo:~# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=117 time=7.473 ms
64 bytes from 8.8.8.8: seq=1 ttl=117 time=7.230 ms
64 bytes from 8.8.8.8: seq=2 ttl=117 time=6.934 ms
^C
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 6.934/7.212/7.473 ms
折角rootで入ったのでLチカもやってみます。
armadillo:~# echo 0 > /sys/class/leds/led1/brightness
armadillo:~# echo 1 > /sys/class/leds/led1/brightness
3-2. sshでご挨拶
LANも使えるのでsshd導入して、iMacからsshアクセスすることにします。
再起動時にも使えるようにおまじないも入れます。
rc-update add sshd
persist_file /etc/runlevels/default/sshd
ご挨拶できました。
iMac:~ kenzo$ ssh atmark@192.168.3.54
atmark@192.168.3.54's password:
Welcome to Alpine!
The Alpine Wiki contains a large amount of how-to guides and general
information about administrating Alpine systems.
See <http://wiki.alpinelinux.org/>.
Please note this system is READ-ONLY with a read-write overlayfs,
after updating password make sure to save new password with
# persist_file /etc/shadow
You can change this message by editing /etc/motd.
armadillo:~$
4.Podmanコンテナにご挨拶
4-1.そもそもPodmanって何?
参考: Podman
- Red Hat社が開発したコンテナ管理ツールです。
- コマンド引数は docker コマンドとほぼ互換です。
- root権限が無くても一般ユーザでも利用可能です。
最後のは別途試すとして、まずはdockerコマンドでお馴染みの hello_world からやってみます。
4-2. hello_world
armadillo:~# podman run docker.io/hello-world:latest
Trying to pull docker.io/library/hello-world:latest...
Getting image source signatures
Copying blob 7050e35b49f5 done
Copying config 46331d942d done
Writing manifest to image destination
Storing signatures
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(arm64v8)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
Dockerコマンドと同じやねー
rmadillo:~# podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
armadillo:~# podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8a427d580a86 docker.io/library/hello-world:latest /hello 51 seconds ago Exited (0) 50 seconds ago agitated_archimedes
armadillo:~# podman image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/hello-world latest 46331d942d63 2 months ago 15.8 kB
これもDockerコマンドと同じ。覚えることが少ないのは助かります(^^;
4-3.docker.io/alpine
マニュアル p90 9.1 HowToで docker.io/alpineが紹介されているので触ってみます。
armadillo:~# podman run -it --rm docker.io/alpine ls /
Trying to pull docker.io/library/alpine:latest...
Getting image source signatures
Copying blob b3c136eddcbf done
Copying config 6e30ab57ae done
Writing manifest to image destination
Storing signatures
bin dev etc home lib media mnt opt proc root run sbin srv sys tmp usr var
armadillo:~# podman run -it --rm docker.io/alpine ls /bin
arch cp false ionice ls mpstat pwd sleep usleep
ash date fatattr iostat lsattr mv reformime stat watch
base64 dd fdflush ipcalc lzop netstat rev stty zcat
bbconfig df fgrep kbd_mode makemime nice rm su
busybox dmesg fsync kill mkdir pidof rmdir sync
cat dnsdomainname getopt link mknod ping run-parts tar
chattr dumpkmap grep linux32 mktemp ping6 sed touch
chgrp echo gunzip linux64 more pipe_progress setpriv true
chmod ed gzip ln mount printenv setserial umount
chown egrep hostname login mountpoint ps sh uname
ashがあるようなので起動してみます。
armadillo:~# podman run -it --rm docker.io/alpine ash
/ #
/ # cat /etc/os-release
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.16.0
PRETTY_NAME="Alpine Linux v3.16"
HOME_URL="https://alpinelinux.org/"
BUG_REPORT_URL="https://gitlab.alpinelinux.org/alpine/aports/-/issues"
/ #
めでたくPodmanコンテナにもご挨拶できました。
5.終わりに
Armadillo-ioT G4 という素晴らしいプレゼントをいただいたALGYAN様・Atmark-Techno様に改めて感謝です。ありがとうございます!
まずは「開封の儀」って事で、Armadillo-IoT G4の BaseOSとPodmanコンテナにご挨拶してみました。
とは言え、BaseOSの2面のBootloderとOSとか、Podmanコンテナの永続化など本当に面白そうな所はこれからです。
ご挨拶が済んだらもう友達なので、じっくり膝付き合わせてお付き合いしたいと思います。
あ、本来はNPUが魅力なはずなので、
NXP製i.MX 8M Plus搭載
こんなAWSサンプルにも挑戦してみたいです。(もちろんAzureサンプルがあればそちらも試します:p)
Armadillo-IoT G4 を用いた物体認識プログラムの動作確認と AWS 各サービスの利用による分析方法
ではでは、開封の儀はここまでです。めでたしめでたし。