Armadilloフォーラム

Armadillo Base OSのブートディスクイメージの作成が上手くいかない

hagihara

2023年7月27日 18時57分

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

armadillo-610_product_manual_ja-3.0.0.pdfの「10.5. SDブートの活用」を実践していますが、ブートディスクイメージの作成が上手くいきません。

「10.5.1. ブートディスクの作成」の手順1のコマンドとログを以下に示します。
※マニュアルには--board a640とありましたがスクリプトを確認してa600にしています。

atmark@atde9:~/workspace/armadillo/build-rootfs-v3.17-at.7$ sudo ./build_image.sh --board a600 --boot ../u-boot-a600-v2020.04-at16.imx 
use default(outdir=/home/atmark/workspace/armadillo/build-rootfs-v3.17-at.7)
use default(output=baseos-600-3.17.4-at.7.20230727.img)
Warning: Partition table header claims that the size of partition table
entries is 0 bytes, but this program  supports only 128-byte entries.
Adjusting accordingly, but partition table may be garbage.
Warning: Partition table header claims that the size of partition table
entries is 0 bytes, but this program  supports only 128-byte entries.
Adjusting accordingly, but partition table may be garbage.
Creating new GPT entries in memory.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.
Setting name!
partNum is 0
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
mke2fs 1.46.2 (28-Feb-2021)
Found a gpt partition table in baseos-600-3.17.4-at.7.20230727.img
Discarding device blocks: done                            
Creating filesystem with 307200 1k blocks and 76912 inodes
Filesystem UUID: 2f1b6ea2-f2e4-405b-89ee-635d0b0de993
Superblock backups stored on blocks: 
        8193, 24577, 40961, 57345, 73729, 204801, 221185
 
Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done 
 
 
Successfully built /home/atmark/workspace/armadillo/build-rootfs-v3.17-at.7/baseos-600-3.17.4-at.7.20230727.img

手順5のコマンドとログを以下に示します。

atmark@atde9:~/workspace/armadillo/build-rootfs-v3.17-at.7$ sudo dd if=./baseos-600-3.17.4-at.7.20230727.img of=/dev/sdb bs=1M oflag=direct status=progress
333447168 bytes (333 MB, 318 MiB) copied, 63 s, 5.3 MB/s
321+0 レコード入力
321+0 レコード出力
336592896 bytes (337 MB, 321 MiB) copied, 63.9944 s, 5.3 MB/s

書き込みはできていますが、gdsikでマイクロSDカードのパーティションを確認すると、以下のようにrootfs_0のパーティションしかありません。

atmark@atde9:~/workspace/armadillo/build-rootfs-v3.17-at.7$ sudo gdisk -l /dev/sdb
GPT fdisk (gdisk) version 1.0.6
 
Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present
 
Found valid GPT with protective MBR; using GPT.
Disk /dev/sdb: 31281152 sectors, 14.9 GiB
Model: SD/MMC          
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): BFB7FB09-30AA-4B35-BE11-B4C54F92F4DA
Partition table holds up to 128 entries
Main partition table begins at sector 20448 and ends at sector 20479
First usable sector is 20480, last usable sector is 657374
Partitions will be aligned on 2048-sector boundaries
Total free space is 22495 sectors (11.0 MiB)
 
Number  Start (sector)    End (sector)  Size       Code  Name
   1           20480          634879   300.0 MiB   8300  rootfs_0

マニュアルに記載されているパーティション構成にするにはどうすればよいでしょうか。
手順の間違いや抜けなどあればご教示いただきたいです。

よろしくお願いいたします。

コメント

アットマークテクノの古賀です。

hagiharaさん:
>armadillo-610_product_manual_ja-3.0.0.pdfの「10.5. SDブートの活用」を実践していますが、ブートディスクイメージの作成が上手くいきません。
>
>「10.5.1. ブートディスクの作成」の手順1のコマンドとログを以下に示します。
>※マニュアルには--board a640とありましたがスクリプトを確認してa600にしています。

>手順5のコマンドとログを以下に示します。

atmark@atde9:~/workspace/armadillo/build-rootfs-v3.17-at.7$ sudo dd if=./baseos-600-3.17.4-at.7.20230727.img of=/dev/sdb bs=1M oflag=direct status=progress
333447168 bytes (333 MB, 318 MiB) copied, 63 s, 5.3 MB/s
321+0 レコード入力
321+0 レコード出力
336592896 bytes (337 MB, 321 MiB) copied, 63.9944 s, 5.3 MB/s

>
>書き込みはできていますが、gdsikでマイクロSDカードのパーティションを確認すると、以下のようにrootfs_0のパーティションしかありません。

atmark@atde9:~/workspace/armadillo/build-rootfs-v3.17-at.7$ sudo gdisk -l /dev/sdb
GPT fdisk (gdisk) version 1.0.6
...
Found valid GPT with protective MBR; using GPT.
Disk /dev/sdb: 31281152 sectors, 14.9 GiB
Model: SD/MMC          
...
>Main partition table begins at sector 20448 and ends at sector 20479
>First usable sector is 20480, last usable sector is 657374
>Partitions will be aligned on 2048-sector boundaries
>Total free space is 22495 sectors (11.0 MiB)
>
>Number  Start (sector)    End (sector)  Size       Code  Name
>   1           20480          634879   300.0 MiB   8300  rootfs_0
>

>
>マニュアルに記載されているパーティション構成にするにはどうすればよいでしょうか。
>手順の間違いや抜けなどあればご教示いただきたいです。

「SDブートの実行」の手順で、上記のマイクロSDカードからSDブートしてみてください。
SDブートが完了したら、poweroff を実行して Armadillo の電源を切り、マイクロSDカードを取り外してから、ATDE に接続して gdisk でパーティションを再度確認してみていただけますか。

>「SDブートの実行」の手順で、上記のマイクロSDカードからSDブートしてみてください。
>SDブートが完了したら、poweroff を実行して Armadillo の電源を切り、マイクロSDカードを取り外してから、ATDE に接続して gdisk でパーティションを再度確認してみていただけますか。

Armadillo-610の拡張ボードで起動を試しました。
以下のように Starting kernel ... と表示されたまま先に進みませんでした。

U-Boot 2020.04-at16 (Jun 28 2023 - 16:16:51 +0900)
 
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
mmc1 is current device
flash target is MMC:1
Net:   eth0: ethernet@2188000
Fastboot: Normal
Saving Environment to MMC... Writing to redundant MMC(1)... OK
Normal Boot
Hit any key to stop autoboot:  0
switch to partitions #0, OK
mmc1 is current device
6861600 bytes read in 312 ms (21 MiB/s)
Booting from mmc ...
36414 bytes read in 19 ms (1.8 MiB/s)
Loading fdt boot/armadillo-610.dtb
## Booting kernel from Legacy Image at 80800000 ...
   Image Name:   Linux-5.10.185-1-at
   Created:      2023-07-07   7:06:17 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    6861536 Bytes = 6.5 MiB
   Load Address: 82000000
   Entry Point:  82000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 83500000
   Booting using the fdt blob at 0x83500000
   Loading Kernel Image
   Loading Device Tree to 9ef1e000, end 9ef49fff ... OK
 
Starting kernel ...

at_dominique.m…

2023年7月28日 11時07分

hagiharaさん、

お世話になっています、
アットマークテクノのマルティンです。

> 「10.5.1. ブートディスクの作成」の手順1のコマンドとログを以下に示します。
> ※マニュアルには--board a640とありましたがスクリプトを確認してa600にしています。

この点はすみません、月曜日にマニュアルの更新が予定されていて、そちらに a600 と直しています。

> atmark@atde9:~/workspace/armadillo/build-rootfs-v3.17-at.7$ sudo ./build_image.sh --board a600 --boot ../u-boot-a600-v2020.04-at16.imx 
> atmark@atde9:~/workspace/armadillo/build-rootfs-v3.17-at.7$ sudo dd if=./baseos-600-3.17.4-at.7.20230727.img of=/dev/sdb bs=1M oflag=direct status=progress

これで問題なさそうですね。

> atmark@atde9:~/workspace/armadillo/build-rootfs-v3.17-at.7$ sudo gdisk -l /dev/sdb
> Number  Start (sector)    End (sector)  Size       Code  Name
>    1           20480          634879   300.0 MiB   8300  rootfs_0

>
> マニュアルに記載されているパーティション構成にするにはどうすればよいでしょうか。

これも正常です:ディスクの書き込みを最小限にするため、build_image.sh で生成するイメージに最初のパーティションしかありません。
一度起動したら他のパーティションが作成されて、マニュアルの表どおりになります。

> Armadillo-610の拡張ボードで起動を試しました。
> 以下のように Starting kernel ... と表示されたまま先に進みませんでした。

もうしわけございません、こちらの確認不足でした。この問題を確認できました。
Armadillo 610 のデフォルトの dtb では SD カードのスロットが無効になっているため、カーネルがロードされえも永遠に sd カードを待っているだけです(「setenv optargs」でデフォルトの「quiet」をはずせば、ログをみれるはずです)

armadillo-610-onboard-usdhc2.dtbo の dtb overlay を追加すれば起動できるようになります。

build-rootfs のディレクトリに新しい「a600/resources/boot/overlays.txt」ファイルに「fdt_overlays=armadillo-610-onboard-usdhc2.dtbo」を記載して、あらかじめ build_rootfs.sh からイメージを作り直してください。
今月には間に合いませんが、来月のアップデートで修正しようと思います。

お手数をお掛けしました。また何かエラーしていたらまた聞いてください。

よろしくお願いします。

ご提示いただいた方法を試しましたがまだ上手くいきません。

overlays.txtの確認、build_rootfs.sh、build_image.sh、マイクロSDに書き込みまでのログ及び起動時のログを添付します。
ご確認お願いします。

起動時のログはoverlays.txtを作る前と後で変わりがありませんでした。

ファイル ファイルの説明
overlays.txtの確認からマイクロSDに書き込みまでのログ.txt
起動時のログ.txt

at_dominique.m…

2023年7月28日 15時00分

hagiharaさん、

マルティネです。

> ご提示いただいた方法を試しましたがまだ上手くいきません。
>
> overlays.txtの確認、build_rootfs.sh、build_image.sh、マイクロSDに書き込みまでのログ及び起動時のログを添付します。

ログありがとうございます。

ログに以下のメッセージが気になります:
「 not found!t overlay armadillo-610-onboard-usdhc2.dtbo」(恐らく「Warning: fdt overlay armadillo...dtbo not found!」のちょっと化けたメッセージです)

成功の場合は以下のメッセージがあるはずです:
「Applying fdt overlay: armadillo-610-onboard-usdhc2.dtbo」

なので、rootfs を確認させてください。以下のコマンドの出力を提供していただけますか?

tar tf /home/atmark/workspace/armadillo/build-rootfs-v3.17-at.7/baseos-600-3.17.4-at.7.20230728.tar.zst ./boot

インストールログでは「Installing linux-at-a6 (5.10.185-r1)」がありますので、今朝手元で再現した時と同じ /boot/armadillo-610-onboard-usdhc2.dtbo があるはずですが、どうでしょうか。

ちゃんとにありましたら、u-boot 警告の文字化けが少し気になります。もしかしたら windows で overlays.txt を編集した影響で、ファイルが「CRLF」または「dos mode」で行の最後に「\r」があるのではないかと思います。
それで /boot/armadillo-610-onboard-usdhc2.dtbo\rファイルを探して見つからないことになっていると推測します。
xxd a600/resources/boot/overlays.txt で確認できます:

# 問題あった場合 (0d = \r)
$ xxd a600/resources/boot/overlays.txt
00000000: 6664 745f 6f76 6572 6c61 7973 3d61 726d  fdt_overlays=arm
00000010: 6164 696c 6c6f 2d36 3130 2d6f 6e62 6f61  adillo-610-onboa
00000020: 7264 2d75 7364 6863 322e 6474 626f 0d0a  rd-usdhc2.dtbo..
 
# 問題ない場合
$ xxd a600/resources/boot/overlays.txt
00000000: 6664 745f 6f76 6572 6c61 7973 3d61 726d  fdt_overlays=arm
00000010: 6164 696c 6c6f 2d36 3130 2d6f 6e62 6f61  adillo-610-onboa
00000020: 7264 2d75 7364 6863 322e 6474 626f 0a    rd-usdhc2.dtbo.

ATDE で以下のコマンドでその \r を削除できますので、実行してみてもう一度 build_rootfs から実行してみてください。

$ echo 'fdt_overlays=armadillo-610-onboard-usdhc2.dtbo' > a600/resources/boot/overlays.txt

よろしくお願いします。

>もしかしたら windows で overlays.txt を編集した影響で、ファイルが「CRLF」または「dos mode」で行の最後に「\r」があるのではないかと思います。

これが原因でした。
改行コードをLFにして、起動することを確認しました。

ご対応ありがとうございました。