【試行錯誤】M5Stack MP135でElixirを動かした時のメモ

[【M5Stack MP135】LivebookでLチカ（LED点滅）してみた](https://qiita.com/GeekMasahiro/items/1987ed321baa43724039)この記事を書く前に試行錯誤した時のメモです。

何かの参考になるかもしれないので、残しておきます。


## 起動

![WIN_20240903_19_15_22_Pro.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532235/e728c894-cfcd-b20f-33f3-5f2fee687995.jpeg)

![DSC_0689.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532235/889f80b0-b40b-49f5-2cef-2e37d5c256e8.jpeg)

```
# mount
/dev/root on / type ext4 (rw,relatime)
devtmpfs on /dev type devtmpfs (rw,relatime,size=145268k,nr_inodes=36317,mode=755)
proc on /proc type proc (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620,ptmxmode=666)
tmpfs on /dev/shm type tmpfs (rw,relatime,mode=777)
tmpfs on /tmp type tmpfs (rw,relatime)
tmpfs on /run type tmpfs (rw,nosuid,nodev,relatime,mode=755)
sysfs on /sys type sysfs (rw,relatime)
# df
Filesystem     1K-blocks   Used Available Use% Mounted on
/dev/root         414888 369224     13408  97% /
devtmpfs          145268      0    145268   0% /dev
tmpfs             225856      0    225856   0% /dev/shm
tmpfs             225856     76    225780   1% /tmp
tmpfs             225856     48    225808   1% /run
#
```

付属のSDカードに入っているOSはbuild root版。
[m5stackのサイトのDownload image](https://docs.m5stack.com/en/guide/linux/coremp135/image)から、M5_CoreMP135_debian12_20240628をダウンロードする。
7zを解凍して、 balenaEtcher image burning toolでSDカードに書き込む。

パーティションの拡張

デフォルトのパーティションは、小さいSDカードにも収まるように最小限のパーティションになっている。

```
root@CoreMP135:/home/m5# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       975M  820M   88M  91% /
devtmpfs        157M     0  157M   0% /dev
tmpfs           221M     0  221M   0% /dev/shm
tmpfs            89M  788K   88M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            45M     0   45M   0% /run/user/0
tmpfs            45M     0   45M   0% /run/user/1001
root@CoreMP135:/home/m5#
```
初期状態では、rootパーティションが1Gしかない。
```/usr/local/m5stack/resize_mmc.sh```を実行してSDカードの最大サイズまでパーティションを拡大する
resize_mmc.sh実行後再起動するとパーティションサイズが拡張されます。
rebootコマンドで再起動したら起動せず、一度電源をOFFして再度起動したらうまく行きました。

Elixirをインストールする
```
apt update
apt install erlang-dev elixir
```

```
root@CoreMP135:/home/m5# elixir -v
Erlang/OTP 25 [erts-13.1.5] [source] [32-bit] [smp:1:1] [ds:1:1:10] [async-threads:1]

Elixir 1.14.0 (compiled with Erlang/OTP 24)
root@CoreMP135:/home/m5#
```

Livebookのインストールに必要なパッケージをインストール
```
sudo apt install erlang-inets erlang-os-mon erlang-runtime-tools erlang-ssl erlang-xmerl erlang-dev erlang-parsetools
```

Livebookのインストール
```
mix do local.rebar --force, local.hex --force
mix escript.install hex livebook
```

次のエラーが発生
```
** (Mix) You're trying to run :livebook on Elixir v1.14.0 but it has declared in its mix.exs file it supports only Elixir ~> 1.16
```

# asdfでelixirをインストールする

コンパイルに必要なパッケージのインストール(erlangのインストール時に必要)
```
apt-get update
apt-get -y install build-essential autoconf m4 libncurses-dev libwxgtk3.2-dev libwxgtk-webview3.2-dev libgl1-mesa-dev libglu1-mesa-dev libpng-dev libssh-dev unixodbc-dev xsltproc fop libxml2-utils openjdk-17-jdk
```

asdfを使って、elixirをインストール
```
git clone https://github.com/asdf-vm/asdf.git ~/.asdf
echo . $HOME/.asdf/asdf.sh >> ~/.bashrc
ログインし直す
asdf plugin add erlang https://github.com/asdf-vm/asdf-erlang.git
asdf plugin add elixir
asdf list-all erlang
asdf install erlang 27.0.1
asdf list-all elixir
asdf install elixir 1.17.2-otp-27
asdf global erlang 27.0.1
asdf global elixir 1.17.2-otp-27
```
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

livebookをインストール
```
mix do local.rebar --force, local.hex --force
mix escript.install hex livebook

# Start the Livebook server
livebook server

# See all the configuration options
livebook server --help
```

次のコマンドで起動できた
```
/root/.asdf/installs/elixir/1.17.2-otp-27/.mix/escripts/livebook server --ip 0.0.0.0
```


git clone https://github.com/livebook-dev/livebook.git
cd livebook
mix deps.get
mix setup
mix phx.server
apt install inotify-tools
mix phx.server
ELIXIR_ERL_OPTIONS="-epmd_module Elixir.Livebook.EPMD" mix phx.server

asdf plugin add nodejs
asdf list-all nodejs
asdf install nodejs 22.8.0
asdf global nodejs 22.8.0
ELIXIR_ERL_OPTIONS="-epmd_module Elixir.Livebook.EPMD" mix phx.server
cd assets
npm install
npm urn deploy
cd ..
ELIXIR_ERL_OPTIONS="-epmd_module Elixir.Livebook.EPMD" mix phx.server
config/dev.exs の127,0,0,1を0,0,0,0に変える
ELIXIR_ERL_OPTIONS="-epmd_module Elixir.Livebook.EPMD" mix phx.server