はじめに
秋月電子で謎の基板が売り出されていました。(現在売り切れ)
これを解析して動かした方がいらしゃいます。
これをAWS EC2でビルドしてみようという記事です。
前提知識
ラズパイなどのイメージをSDに書き込んだことがある
dialog(raspi-config みたいな画面)の操作ができる
AWS EC2を使える
buildroot は初めて
(つまりは3日前の自分)
EC2準備
EC2のインスタンスタイプはArm系で最新のc7gがコスパ的にいいかと思います。
ビルド時間を計測したところ、次のようになりました。
インスタンスタイプ | vCPU | ビルド時間 |
---|---|---|
c7g.xlarge | 4 | 16分 |
c7g.2xlarge | 8 | 10分 |
mシリーズはメモリが過剰かもしれません。っていうかm7gはまだ無いみたいです。
純粋にコンパイルしているときは、ほぼ100%使ってくれますが、なにかのcheckやファイルのダウンロードなどで空き時間が増えるため、コア数が増えるほど速くはなるもののコスパは悪くなります。
あと、これを試すときに気づきましたが、Amazon Linux 2 後継の Amazon Linux 2023 が使えるようになっています。ここでは 2023 のほうを使っています。2023にするとTeraTermで接続できなくなるのですが、TeraTerm5(今のところベータ版)を使うと接続できます。
ディスクはデフォルトの8GBで足りますが、結構ギリギリです。make menuconfig
で機能を追加すると足りなくなってきます。
パッケージのインストール
ビルドに必要なパッケージをインストールします。
$ sudo yum -y groupinstall "Development Tools"
$ sudo yum -y install openssl-devel ncurses-devel
groupinstall "Development Tools"
は、make などの全部入りです。
openssl-devel
は、無いとビルド時にヘッダが見つからないというエラーがでます。
ncurses-devel
は、make menuconfig
するときに必要となります。
ソースの入手とビルド
ソースを取得します。ディレクトリは1階層作られるので、明示的に作成しておく必要はないでしょう。
$ git clone https://github.com/bakueikozo/buildroot_am3352_aki
作られたディレクトリに移動します。
$ cd buildroot_am3352_aki
ビルドします。
$ make akiduki_am3352_defconfig
$ make
先に書いたビルド時間は、このmake
の時間です。
-j
オプションを付けて高速化したほうがいいのでは?と思いましたが、buildroot側で良きに計らってくれるみたいなので、付けなくていいっぽいです。make menuconfig
の中にジョブ数を指定するところがあり、デフォルトでは自動になっています。
正常にビルドできたら、最後のメッセージは以下のようになります。
INFO: hdimage(sdcard.img): adding partition 'u-boot' (in MBR) from 'boot.vfat' ...
INFO: hdimage(sdcard.img): adding partition 'rootfs' (in MBR) from 'rootfs.ext4' ...
INFO: hdimage(sdcard.img): adding partition '[MBR]' ...
INFO: hdimage(sdcard.img): writing MBR
$
成果物は、./output/images/sdcard.img
です。
$ ls -la ./output/images/sdcard.img
-rw-r--r-- 1 username username 79692288 Mar 26 06:17 ./output/images/sdcard.img
これをSDに書き込み、謎基板に挿して起動してみましょう。
シリアルコンソールは 115200bps です。
なお、ログインプロンプトが出た数秒後、3Gモジュールの認識メッセージが被ります。
つづき
dhcp,mdns,ssh を有効にしたイメージを作り、有線LAN経由でログインしてみます。
USBシリアル変換などを持っていなくてもログインできるようになります。