座談会で、@cinimlさんが、自前ビルドにはツールが入ってない的なことを言ってたので調べた。

このページからリリース版のFWがダウンロードできる。
Module LLM ファームウェアアップグレードガイド
https://docs.m5stack.com/ja/guide/llm/llm/image
ものはこれ。
https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/linux/llm/M5_LLM_ubuntu2022-02_20241203-mini.axp
落とす。
kinneko@llmbuild:~/imgtest$ curl -OL https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/linux/llm/M5_LLM_ubuntu2022-02_20241203-mini.axp
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1538M 100 1538M 0 0 10.4M 0 0:02:27 0:02:27 --:--:-- 10.0M
先日の座談会で、でべさんに、自分でビルドしたファームイメージには、ax_なんとか系のツールがなにもはいっていないという話を聞いた。
なんかクソデカいんだけど... miniって名前にあるのにな。
kinneko@llmbuild:~/imgtest$ ls -lh
total 1.6G
-rw-rw-r-- 1 kinneko kinneko 1.6G Feb 7 04:25 M5_LLM_ubuntu2022-02_20241203-mini.axp
zipであるのは間違いないようだ。
kinneko@llmbuild:~/imgtest$ file M5_LLM_ubuntu2022-02_20241203-mini.axp
M5_LLM_ubuntu2022-02_20241203-mini.axp: Zip archive data, at least v2.0 to extract, compression method=deflate
展開する。
kinneko@llmbuild:~/imgtest$ unzip M5_LLM_ubuntu2022-02_20241203-mini.axp
Archive: M5_LLM_ubuntu2022-02_20241203-mini.axp
inflating: AX630C_emmc_arm64_k419.xml
inflating: eip_ax620e.bin
inflating: fdl_AX630C_emmc_arm64_k419_signed.bin
inflating: fdl2_signed.bin
inflating: spl_AX630C_emmc_arm64_k419_signed.bin
inflating: ddrinit_AX630C_emmc_arm64_k419_signed.bin
inflating: atf_bl31_signed.bin
inflating: atf_b_bl31_signed.bin
inflating: u-boot_signed.bin
inflating: u-boot_b_signed.bin
inflating: axera_logo.bmp
inflating: axera_logo.bmp.1
inflating: optee_signed.bin
inflating: optee_signed.bin.1
inflating: AX630C_emmc_arm64_k419_signed.dtb
inflating: AX630C_emmc_arm64_k419_signed.dtb.1
inflating: boot_signed.bin
inflating: boot_signed.bin.1
inflating: ubuntu_rootfs_sparse.ext4
kinneko@llmbuild:~/imgtest$ ls -alh
total 4.7G
drwxrwxr-x 2 kinneko kinneko 4.0K Feb 7 04:27 .
drwxr-x--- 13 kinneko kinneko 4.0K Feb 7 04:19 ..
-rw-rw-r-- 1 kinneko kinneko 20K Nov 20 06:46 atf_b_bl31_signed.bin
-rw-rw-r-- 1 kinneko kinneko 20K Nov 20 06:46 atf_bl31_signed.bin
-rw-rw-r-- 1 kinneko kinneko 23K Nov 20 06:46 AX630C_emmc_arm64_k419_signed.dtb
-rw-rw-r-- 1 kinneko kinneko 23K Nov 20 06:46 AX630C_emmc_arm64_k419_signed.dtb.1
-rw-rw-r-- 1 kinneko kinneko 7.6K Dec 5 09:03 AX630C_emmc_arm64_k419.xml
-rw-r--r-- 1 kinneko kinneko 1.1M Nov 20 06:46 axera_logo.bmp
-rw-r--r-- 1 kinneko kinneko 1.1M Nov 20 06:46 axera_logo.bmp.1
-rw-rw-r-- 1 kinneko kinneko 5.7M Nov 20 06:46 boot_signed.bin
-rw-rw-r-- 1 kinneko kinneko 5.7M Nov 20 06:46 boot_signed.bin.1
-rw-rw-r-- 1 kinneko kinneko 1.0K Nov 20 06:46 ddrinit_AX630C_emmc_arm64_k419_signed.bin
-rw-rw-r-- 1 kinneko kinneko 77K Nov 20 06:46 eip_ax620e.bin
-rw-rw-r-- 1 kinneko kinneko 1012K Nov 20 06:46 fdl2_signed.bin
-rw-rw-r-- 1 kinneko kinneko 90K Nov 20 06:46 fdl_AX630C_emmc_arm64_k419_signed.bin
-rw-rw-r-- 1 kinneko kinneko 287K Nov 20 06:46 optee_signed.bin
-rw-rw-r-- 1 kinneko kinneko 287K Nov 20 06:46 optee_signed.bin.1
-rw-rw-r-- 1 kinneko kinneko 256K Nov 20 06:46 spl_AX630C_emmc_arm64_k419_signed.bin
-rw-rw-r-- 1 kinneko kinneko 561K Nov 20 06:46 u-boot_b_signed.bin
-rw-rw-r-- 1 kinneko kinneko 561K Nov 20 06:46 u-boot_signed.bin
-rw-r--r-- 1 kinneko kinneko 3.2G Dec 5 09:04 ubuntu_rootfs_sparse.ext4
ubuntu_rootfs_sparse.ext4が3.2Gもあるのがデカさの原因のようだ。スパース展開すると30GBくらいになるのかな。
スパースファイルをext4イメージに変換する。結構時間かかる。デカいものな。
kinneko@llmbuild:~/imgtest$ simg2img ubuntu_rootfs_sparse.ext4 ubuntu_rootfs.ext4
まぁ、こんなサイズになるよね。eMMCが32Gなので、それ以上ではないけど。
kinneko@llmbuild:~/imgtest$ ls -alh ubuntu_rootfs*
-rw-rw-r-- 1 kinneko kinneko 29G Feb 7 04:35 ubuntu_rootfs.ext4
-rw-r--r-- 1 kinneko kinneko 3.2G Dec 5 09:04 ubuntu_rootfs_sparse.ext4
ちゃんとext4イメージとして認識している。
kinneko@llmbuild:~/imgtest$ file ubuntu_rootfs.ext4
ubuntu_rootfs.ext4: Linux rev 1.0 ext4 filesystem data, UUID=57f8f4bc-abf4-655f-bf67-946fc0f9f25b (extents) (large files)
マウントしてみる。
kinneko@llmbuild:~/imgtest$ sudo mkdir /mnt/2nd
kinneko@llmbuild:~/imgtest$ sudo mount -o loop ./ubuntu_rootfs.ext4 /mnt/2nd
まぁ、普通だね。
kinneko@llmbuild:~/imgtest$ ls /mnt/2nd/
bin dev home lost+found mnt param root sbin srv tmp var
boot etc lib media opt proc run soc sys usr
リストを保管する。
kinneko@llmbuild:~/imgtest$ cd /mnt/2nd/
kinneko@llmbuild:/mnt/2nd$ sudo find ./ > ~/2nd.list
kinneko@llmbuild:/mnt/2nd$ head ~/2nd.list
./
./bin
./boot
./dev
./dev/null
./etc
./etc/.pwd.lock
./etc/.rc.local.b
./etc/NetworkManager
./etc/NetworkManager/dispatcher.d
buildrootでビルドしたubuntuイメージを持ってくる。
どこにやったっけ?
kinneko@llmbuild:/mnt/2nd$ cd ~/imgtest
kinneko@llmbuild:~/imgtest$ sudo find / | grep "axp$"
2つあった。新しいほうでいいか。
/home/kinneko/LLM_buildroot-external-m5stack/tools/build_Module_LLM_ubuntu22_04/M5_LLM_ubuntu22.04_20250131.axp
/home/kinneko/M5LLM3/LLM_buildroot-external-m5stack/tools/build_Module_LLM_ubuntu22_04/M5_LLM_ubuntu22.04_20250204.axp
kinneko@llmbuild:~/imgtest$ mkdir self
kinneko@llmbuild:~/imgtest$ cd self/
kinneko@llmbuild:~/imgtest/self$ cp ~/M5LLM3/LLM_buildroot-external-m5stack/tools/build_Module_LLM_ubuntu22_04/M5_LLM_ubuntu22.04_20250204.axp ./
おかしいな。さっきのと比べてデカくないよ?
kinneko@llmbuild:~/imgtest/self$ unzip M5_LLM_ubuntu22.04_20250204.axp
Archive: M5_LLM_ubuntu22.04_20250204.axp
inflating: optee_signed.bin.1
inflating: fdl2_signed.bin
inflating: atf_bl31_signed.bin
inflating: u-boot_signed.bin
inflating: u-boot_b_signed.bin
inflating: ddrinit_AX630C_emmc_arm64_k419_signed.bin
inflating: axera_logo.bmp.1
inflating: boot_signed.bin
inflating: AX630C_emmc_arm64_k419.xml
inflating: axera_logo.bmp
inflating: boot_signed.bin.1
inflating: AX630C_emmc_arm64_k419_signed.dtb
inflating: AX630C_emmc_arm64_k419_signed.dtb.1
inflating: rootfs_sparse.ext4
inflating: atf_b_bl31_signed.bin
inflating: spl_AX630C_emmc_arm64_k419_signed.bin
inflating: eip_ax620e.bin
inflating: optee_signed.bin
inflating: fdl_AX630C_emmc_arm64_k419_signed.bin
スパースファイルのファイル名が違っている。サイズもだいぶ小さい。
kinneko@llmbuild:~/imgtest/self$ ls -alh rootfs_sparse.ext4
-rw-r--r-- 1 kinneko kinneko 579M Feb 4 06:09 rootfs_sparse.ext4
スパースファイルを展開してみる。
kinneko@llmbuild:~/imgtest/self$ simg2img rootfs_sparse.ext4 rootfs.ext4
kinneko@llmbuild:~/imgtest/self$ ls -alh rootfs*
-rw-rw-r-- 1 kinneko kinneko 29G Feb 7 04:53 rootfs.ext4
-rw-r--r-- 1 kinneko kinneko 579M Feb 4 06:09 rootfs_sparse.ext4
マウントするか。
kinneko@llmbuild:~/imgtest/self$ sudo mkdir /mnt/self
kinneko@llmbuild:~/imgtest/self$ sudo mount -o loop ./rootfs.ext4 /mnt/self
ファイルリストを取る。
kinneko@llmbuild:~/imgtest/self$ sudo mkdir /mnt/self
kinneko@llmbuild:~/imgtest/self$ sudo mount -o loop ./rootfs.ext4 /mnt/self
kinneko@llmbuild:~/imgtest/self$ cd /mnt/self/
kinneko@llmbuild:/mnt/self$ sudo find ./ > ~/self.list
kinneko@llmbuild:/mnt/self$ head ~/self.list
./
./lost+found
./bin
./boot
./dev
./dev/null
./etc
./etc/.pwd.lock
./etc/ModemManager
./etc/ModemManager/connection.d
2つのファイルリストができたので、差分を取る。
kinneko@llmbuild:~$ diff 2nd.list self.list
ここに貼るのはデカいので、gistに置く。
M5LLMの2nd FWとbuildrootで作成したFWの違い
https://gist.github.com/kinneko/0d22813a3088c4df93e245bf68f65dd6
多くはパッケージ構成の違いと、pipかなにかで入っているpythonライブラリの違いなんだけど、optとかに入っているllm-*とかはごっそりないね。

100円投げ銭 https://kinneko.booth.pm/items/1963720
オリジナル投稿:
#M5StackLLM ビルドしたイメージとの差|kinneko|pixivFANBOX
https://kinneko.fanbox.cc/posts/9344180



