はじめに
秋月謎SoC基板へsshログインできるよう、カスタマイズしてみる話です。
秋月謎SoC基板用の buildroot_am3352_aki をビルドしてみる(AWS EC2編)
あるいは
秋月謎SoC基板用の buildroot_am3352_aki をビルドしてみる(WSL2編)
の続きです。
設定
make
したときのディレクトリで、make menuconfig
を実行します
以下、変更項目を挙げていきます。スクショなしですいません。
(メニュー順に挙げます)
System configuration --->
() Root password
パスワードが設定されていない場合、sshでつながった直後に切られてしまうので、なんかしらパスワードを設定します。
akizuki
とでもしておきましょうか。
System configuration --->
() Network interface to configure through DHCP
起動時にDHCPで設定させるインターフェース名を指定します。
ここでは eth0
を指定します。
Target packages --->
Networking applications --->
[*] avahi
[*] IPv4LL network address configuration daemon
[*] mDNS/DNS-SD daemon
[*] libdns_sd compatibility (Bonjour)
[*] install default service definitions
外部からホスト名で接続できるようにするため、avahi を選択します。avahi を選択すると下の項目が増えます。とりあえず全部選択しておきす。
Target packages --->
Networking applications --->
[*] dropbear
[*] client programs
[*] disable reverse DNS lookups
[*] optimize for size
sshデーモンの軽量版、dropbear
を選択します。
disable reverse DNS lookups
は、ログに吐くときにホスト名を調べるのをサボって、コネクション時の引っ掛かり感をなくす設定と思います。
なお、dropbear
でなく openssh
を選んだらログインできませんでした。openssh
を使うには何らかの設定が必要と思います。(セキュリティレベルを落とすとか、ちゃんと鍵ファイルを置くとか、そんな感じの設定が必要なのかな?)
ビルド
ここで make
・・・したらドハマリしました。
make clean
してから、make
してください。
ここで make clean
をしない場合、/etc/network/interfaces
が書き換えられず、起動後に eth0
が上がってきません。
make
が終わったら、念のため /etc/network/interfaces
に eth0
の記述があることを確認しましょう。(デフォルトでは lo
の記述だけでした)
イメージファイル内のファイルシステムを作る元となるファイルはoutput/target/
配下にあります。
$ cat output/target/etc/network/interfaces
# interface file auto-generated by buildroot
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
pre-up /etc/network/nfs_check
wait-delay 15
hostname $(hostname)
正しく設定できていれば関係ない話ですが、起動後に eth0 が上がってきてない場合にコマンドから固定IPを振るには以下のようにします。
# ip link set eth0 up
# ip addr add 192.168.0.xxx/24 dev eth0
# ip route add default via 192.168.0.1
一行目は寝ているインターフェースを起こすものです。整った環境ではまず必要のないコマンドなので知らずにドハマリしました。これを打たずに ip addr add ~
するとコマンドは正常に通っているように見えるものの、ping で内部ネットワークにも届かないという症状になります。
ssh 接続
make
が終わったら、./output/images/sdcard.img
microSDに書き込み、謎基板に挿して起動してみましょう。
ホスト名は、変更していなければ buildroot
となっているので、sshの接続先の名前は buildroot.local
です。(ポートは当然 22 です。)
書くまでもないですが、ユーザー名は root
パスワードは先に設定したakizuki
です。
おまけ
Lチカ
led1 ~ led4 が定義されています。
led1 はmicroSDと電源LED(緑) との間。
led2 ~ led4 はmicroSDを挟んで反対側にあります。
LED1 ON
# echo 1 > /sys/class/leds/led1/brightness
LED1 OFF
# echo 0 > /sys/class/leds/led1/brightness
温度センサー
温度センサーのADC生値取得
# cat /sys/bus/iio/devices/iio:device0/in_voltage6_raw
おわりに
ドハマリした時間を供養するために記事を書きましたが、成功する手順だけ書くとかなりアッサリした記事になってしまいました。
なかなかルートイメージを作る機会はないと思いますが、この基板との出会いをきっかけに、buildrootの世界に触れてみてはいかがでしょうか。私もその一人です。