Armadilloフォーラム

ABOSで出荷されたeMMCをDebianに書き換える

hagihara

2024年12月24日 11時48分

お世話になっております。

Armadillo-610の出荷時のOSがABOSに変更されるとのことで、それをDebianに書き換えることを試みております。
※ABOSが書き込まれたArmadilloは、御社の営業担当者から評価ボードと共にお借りして使用しております。
しかし、ブートローダーの書き換えが上手くいっておりません。

以下の手順でeMMCの書き換えをしています。

(1)
SDカードから起動し、mmcblk0を以下のDebian出荷時のパーティション構成に再設定します(fdiskを使用)

mmcblk0 179:0 0 3.5G 0 disk
tqmmcblk0p1 179:1 0 32M 0 part
tqmmcblk0p2 179:2 0 3.4G 0 part
mqmmcblk0p3 179:3 0 128M 0 part

(2)
mmcblk0p2にrootfsを展開します。

(3)
以下のコマンドでブートローダーをmmcblk0に書き込みます。
sudo dd if=./u-boot.imx of=/dev/mmcblk0 bs=1k seek=1 conv=fsync

(4)
電源を切り、eMMC起動にして電源を入れます。しかし、この際以下のブートローダーのログが表示されます。これはABOSで使用されているブートローダーと思われます。 (3)でDebianのブートローダーを書き込んでいるつもりですが、元々書かれていたブートローダーが消えていないようです。

U-Boot 2020.04-at24 (Jun 25 2024 - 05:19:56 +0000)

CPU: i.MX6ULL rev1.1 at 396 MHz
Model: Atmark Techno Armadillo-600 Series
DRAM: 512 MiB
setup_rtc_disarm_alarm: Can't find bus
WDT: Started with servicing (10s timeout)
PMIC: PFUZE3000 DEV_ID=0x30 REV_ID=0x11
MMC: FSL_SDHC: 0, FSL_SDHC: 1
Loading Environment from MMC... OK
In: mxc_serial
Out: mxc_serial
Err: mxc_serial
switch to partitions #0, OK
mmc0(part 0) is current device
flash target is MMC:0
Net: eth0: ethernet@2188000
Fastboot: Normal
Normal Boot
Hit any key to stop autoboot: 0
switch to partitions #0, OK
mmc0(part 0) is current device
rollback() Rollback target is not ready, refusing to rollback.
could not get rtc device: invalid date will be used in logs
Saving Environment to MMC... Writing to redundant MMC(0)... OK
resetting ...

ABOSからDebianへの書き換え方法についてご教示いただけますと幸いです。
よろしくお願いいたします。

==========
製品型番:Armadillo-610
Debian/ABOSバージョン:
カーネルバージョン:
3G/LTE モジュール情報 (Debianのみ):
その他:
==========

コメント

古関です。

以下のどちらかをお試しいただけますでしょうか。

■ インストールディスクイメージ作成ツール v1.3.0以降でU-Boot含めて再インストール
https://armadillo.atmark-techno.com/files/downloads/armadillo-610/make-…

■ mmc-utilsでeMMCのブートパーティション変更
debianのSDブートディスクを作成し起動、以下のコマンドを実行。

# apt-get install mmc-utils
# mmc bootpart enable 0 0 /dev/mmcblk0
# poweroff
電源切断・接続

Debian環境ではeMMCユーザーパーティション(/dev/mmcblk0)からU-Bootを起動します。
Armadillo Base OS環境ではeMMCのブートパーティション0,1(/dev/mmcblk0boot0 or /dev/mmcblk0boot1)から起動します。
この切り替え作業が必要です。

at_kojiro.yamada

2024年12月24日 18時21分

おそらく、ブートローダーを読み出すパーティションを boot partition 0または 1 から user partition ※に変更していないことが原因です。

v1.3.0 以上の make-install-disk-image を使ってインストールディスクを作成すれば、この問題は解消されるかと思います。
変更内容はシンプルで、make-install-disk-image の core/images/install.sh::setup_bootloader() の末尾に mmc bootpart enable 0 0 ${DEV_EMMC} が追加されただけです。 (この install.sh はインストールディスクの /images ディレクトリに配置されます。)

ABOSのリリース以前はブートローダーを読み出すパーティションは必ず user partition だったので上述の処理は不要でしたが、
ABOSのリリース以後は ABOS が boot partition を使うよう設定を変更してしまうため、この処理が必要になりました。

※それぞれのパーティション と デバイスファイルは以下の関係になっています。
boot partition0 = mmcblkNboot0
boot partition1 = mmcblkNboot1
user partition = mmcblkN

古関様、山田様

ご提示いただいた方法で解決いたしました。

迅速なご回答ありがとうございました。