#M5StackLLM ビルドしたイメージとの差

 座談会で、@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