M5Stack CoreMP135にさわる（その２：DebianのBuild）

# M5Stack CoreMP135にてDebianをBuild
「[その１](https://qiita.com/infinite1oop/items/f0a5f29acdc20310823a)」に続いて、DebianをBuildした時のメモ。今回も、Buffalo製WiFiドングル「WLI-UC-GNM2」（rt2870）もBuild対象として含める。

## Build方法を探す
本家サイトでも見つからず（探し方が悪い？）、、であったが、
```
$ git clone https://github.com/m5stack/CoreMP135_buildroot-external-st.git
```
でダウンロードした中に、
```
$ ls CoreMP135_buildroot-external-st/tools/
creat_coremp135_buidlroot_image.sh  creat_coremp135_debian12_image.sh  overlay_debian12
```
とあったので、「creat_coremp135_debian12_image.sh」を実行することにした。（同時に「creat_coremp135_buidlroot_image.sh」も実行される。）

## Build
```
$ cd CoreMP135_buildroot-external-st/tools/
$ sudo ./creat_coremp135_debian12_image.sh
$ cd build_coremp135_debian12/
$ sudo dd if=./M5_CoreMP135_debian12_20240830.img of=/dev/sdc bs=4M
```
マイクロSDカードに書き込み完了。

## すでに必要なものは組み込まれていた
「[その１](https://qiita.com/infinite1oop/items/f0a5f29acdc20310823a)」同様、Configurationしなおし＆再Buildの予定でったが、
```
# dmesg
...

[  850.813037] usb 2-1.3: new high-speed USB device number 5 using ehci-platform
[  851.325682] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[  851.384057] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[  851.406707] cfg80211: loaded regulatory.db is malformed or signature is missing/invalid
[  851.682949] usb 2-1.3: reset high-speed USB device number 5 using ehci-platform
[  851.842471] ieee80211 phy0: rt2x00_set_rt: Info - RT chipset 3070, rev 0201 detected
[  851.873591] ieee80211 phy0: rt2x00_set_rf: Info - RF chipset 0005 detected
[  851.874176] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
[  851.933093] usbcore: registered new interface driver rt2800usb
[  852.360340] ieee80211 phy0: rt2x00lib_request_firmware: Info - Loading firmware file 'rt2870.bin'
[  852.365827] ieee80211 phy0: rt2x00lib_request_firmware: Info - Firmware detected - version: 0.36
```
該当WiFiモジュールは、すでに組み込まれていた（rt2870.bin）。さらに、
```
# ps ax | grep supplicant
  287 ?        Ss     0:00 /sbin/wpa_supplicant -u -s -O DIR=/run/wpa_supplicant GROUP=netdev
  583 pts/0    S+     0:00 grep supplicant
```
WiFiサプリカントも起動している。Network Managerも組み込まれたいた。なので、即、接続してみる。
```
# nmcli device wifi connect SSID-da password himitsu-da
Device 'wlan0' successfully activated with '07718764-6c71-484a-80fd-a37e03XXUUZZ'.

# dmesg
...

[ 1136.936523] wlan0: authenticate with 82:22:a7:AA:BB:DD
[ 1137.011772] wlan0: send auth to 82:22:a7:AA:BB:DD (try 1/3)
[ 1137.013521] wlan0: authenticated
[ 1137.034747] wlan0: associate with 82:22:a7:AA:BB:DD (try 1/3)
[ 1137.070339] wlan0: RX AssocResp from 82:22:a7:AA:BB:DD (capab=0x1431 status=0 aid=3)
[ 1137.079104] wlan0: associated
[ 1137.385009] cryptd: max_cpu_qlen set to 1000
[ 1137.632569] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
```
接続成功。
```
# ifconfig

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.109  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 2408:211:7ee:9400:39:4881:PPPP:ZZZZ  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::a96:85ad:PPPP:ZZZZ  prefixlen 64  scopeid 0x20<link>
        ether 84:af:ec:DD:EE:GG  txqueuelen 1000  (Ethernet)
        RX packets 11  bytes 2253 (2.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 32  bytes 5204 (5.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
```
IPアドレスも取得できていた。

## 多少深掘
Build後の話。
```
$ ls CoreMP135_buildroot-external-st/tools/
build_coremp135_buidlroot  creat_coremp135_buidlroot_image.sh  overlay_debian12
build_coremp135_debian12   creat_coremp135_debian12_image.sh
```
Buildの結果として、「build_coremp135_buidlroot」と「build_coremp135_debian12」とのディレクトリあり。後者にはMakefileが見つからないが、前者には見つかる。
```
$ ls -l CoreMP135_buildroot-external-st/tools/build_coremp135_buidlroot/CoreMP135_buildroot/Makefile
-rw-r--r-- 1 root root 46532  8月 30 07:48 CoreMP135_buildroot-external-st/tools/build_coremp135_buidlroot/CoreMP135_buildroot/Makefile
$
$ cd CoreMP135_buildroot-external-st/tools/build_coremp135_buidlroot/CoreMP135_buildroot/
undeux3@lyon:~/proj/CoreMP135/CoreMP135_buildroot-external-st/tools/build_coremp135_buidlroot/CoreMP135_buildroot
```
Configurationを確認。
```
$ make ARCH=arm menuconfig
```
![buildrootには含まれていないが.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634816/7fbe76df-e908-ad35-1c3e-7bcaece72ca7.png)
「rt2870.bin」は選択されていなかった。なので、buildrootではなく、Debianパッケージに含まれているだろうと推測。

```
$ ls CoreMP135_buildroot-external-st/tools/build_coremp135_debian12/
M5_CoreMP135_debian12_20240830.img           debian-minimal-armhf  rootfs_overlay
debian-12.1-minimal-armhf-2023-08-22.tar.xz  rootfs
```
xz圧縮されているファイル内に何かしら情報があると推測。本ファイルを展開。
```
$ ls -l usr/lib/firmware/rt2870.bin 
-rw-r--r-- 1 root root 8192  5月  2  2023 usr/lib/firmware/rt2870.bin
$ file usr/lib/firmware/rt2870.bin 
usr/lib/firmware/rt2870.bin: data
```
見つかった。日付的にも、新たなにBuildしたわけではなく、持ってきただけのようだ。

ある程度の事情を把握。

## 最後にメモ
BuildしたイメージのID rootに対するパスワードは”root”であった。