Android TV Box Amlogic (s9xxx) パーティション作成メモ

Android TV Box A95XF3Air (Amlogic SoC) のLinux化に伴い、構築段階ではeMMC領域には手を付けずに、MicroSDカードにarmbianをインストールして、TV BoxはSDカードからOSを起動するようにしていた。
構築もある程度完了し、eMMCのほうがI/Oが断然速いので、eMMC上のandroidOSのバックアップを行いたく、
eMMC領域へ
 ・fdisk -l /dev/mmcblk1
 ・parted -l /dev/mmcblk1
 ・lsblk -f /dev/mmcblk1
などコマンド実行したが、パーティション情報は表示されなかった。

色々とネット検索した結果、Amlogic Socで使われている規格は、MBRでもGPTでもなく、独自のものであるらしい。
Amlogic Soc でのパーティション情報を確認するampart というコマンドも存在するが、利用方法がよく分からなかった。

以下の図が、MBR / GPT / Amlogic のパテーション構造。

MBR wiki
マスターブートレコード

GPT wiki
GUIDパーティションテーブル

7Ji / ampart GitHub
https://github.com/7Ji/ampart

7Ji's BlogAbout
https://7ji.github.io/embedded/2022/11/11/amlogic-booting.html

eMMC領域に手を加える時には

まず第1に注意しないといけないのは、Amlogic SoC 全てに当てはまるという訳ではない。
armbianからフォークされた有志の方々が、調査した実績(機種)を元にarmbianが起動したのであって、
Amlogicのホワイトペーパー(仕様書)は、google検索結果からは追えていない。

google検索エンジンは入力するキーワードで結果が変わり、表示順位も異なってくる。
検索結果が20件程度なら検索結果を1つずつ見る事も出来るが、現段階では仕様は分からず、実績ベースでの結果である事に留意しなければならない。

上図右の「Amlogicのパテーション構造」を見てもらえば分かる通り、Amlogicが種々の用途でeMMCの先頭領域を使用するようだ。
この情報を知らずにDOS/V機での経験で
・念のため先頭から1MBをddコマンドで取得 (これが間違い)
・fdiskコマンドでdosラベル (デフォルトの)2048セクター目から容量を確保。(これも間違い)
を行い、SDカードからeMMCへコピー。コピー完了後に再起動すると、見事に画面はブラックアウト状態。
本体のLEDランプすら点灯(ナイトライダーのように光が流れる)もしない。
文鎮化させてしまった。

それからは必死にネットで復旧手段を検索して、工場出荷時状態まで戻す事が出来た。
(ちなみに、双方の口がAタイプオスのケーブルが必要で、このケーブルが量販店でなかなか見かけない特殊ケーブル)

eMMCにインストールするには

Armbian_community_25.2.0-trunk.13_Aml-s9xx-box_bookworm_current_6.6.60.img.xz
をSDカードへ展開。SDカードで起動すると、
/root/install-aml.sh があるので、これを使うようだ。

シェルスクリプトなんで、コードを確認したところ、

echo "Start backup u-boot default"

dd if="${DEV_EMMC}" of=/root/u-boot-default-aml.img bs=1M count=4

echo "Start create MBR and partittion"

parted -s "${DEV_EMMC}" mklabel msdos
parted -s "${DEV_EMMC}" mkpart primary fat32 1000M 1512M
parted -s "${DEV_EMMC}" mkpart primary ext4 1513M 100%

echo "Start restore u-boot"

dd if=/root/u-boot-default-aml.img of="${DEV_EMMC}" conv=fsync bs=1 count=442
dd if=/root/u-boot-default-aml.img of="${DEV_EMMC}" conv=fsync bs=512 skip=1 seek=1

sync

echo "Done"
  1. 4MBのイメージを取得
  2. dosラベルを作成
  3. eMMC領域の1000MB~1512MBの512MBをfat32
  4. eMMC領域の1513MB~最後までの領域をext4

 でパーティションを作成し、ddで取得した4MBをMBRの各パーティション情報の領域は除外して戻している。

上記図(amlogic)では、132MiB以降がデータ領域の割当となっているが、とあるフォーラムでは700MBは空けておいたほうが良いとの書込みもあり、公開文書が追えないので経験に基づいた感覚なのだろう。
install-aml.sh でも、1GB確保している。

著者はeMMC容量が32GBのモデルであった為、1GBを使えないのは対して問題ではないが、eMMC 16GBモデルだとXwindow(desktop)をインストールするには、心許ない容量となるだろう。