2つのUBIボリュームでネイティブUBIイメージを作成するには?

2つのUBIボリュームでネイティブUBIイメージを作成するには?

私はUBIBSがrootfsおよびユーザー設定データのファイルシステムとして使用される組み込みLinux(kernel-5.24)で開発中です。

工場で直接NANDフラッシュ(128 MB)を焼くためにUBIイメージを作成しようとしています。

前述したように、私のシステムには2つのUBIボリュームがあります。 1つはrootfs(rootfs.ubifs)、もう1つはユーザー設定(usrconf.ubifs)です。 ubinize.cfgは次のとおりです。

[ubifs_volume]
mode=ubi
image=rootfs.ubifs
vol_id=0
vol_size=56MiB
vol_type=dynamic
vol_alignment=1
vol_name=rootfs

[usrconf_volume]
mode=ubi
image=usrconf.ubifs
vol_id=1
vol_size=56MiB
vol_type=dynamic
vol_alignment=1
vol_name=usrconf
vol_flags=autoresize

rootfs.ubifs今私の質問は、ファイルとusrconf.ubifsファイルを1つにまとめてrawubi.imgFLASHを焼く方法です。この2つのファイルをfinalのどこに置くべきですかrawubi.img

==より多くのテストで更新されました==
ubinize.cfgを次のように変更しました(usrconfボリュームをに設定し、staticボリュームvol_id=0rootfsに設定vol_id=1)。

[usrconf_volume]
mode=ubi
image=usrconf.ubifs
vol_id=0
vol_size=56MiB
vol_type=static
vol_alignment=1
vol_name=usrconf

[ubifs_volume]
mode=ubi
image=rootfs.ubifs
vol_id=1
vol_size=56MiB
vol_type=dynamic
vol_alignment=1
vol_name=rootfs
vol_flags=autoresize

ubinize -m 2048 -p 128KiB -s 512 -O 2048 ./ubinize.cfg -v -o rawubi.img

生成されたファイルをNAND FLASHに書き込んrawubi.imgでLinuxを起動しましたが、root=ubi0:rootfs rootfstype=ubifs次のエラーが発生しました。

[    2.671151] UBIFS (ubi0:1): Mounting in unauthenticated mode
[    2.677163] UBIFS (ubi0:1): background thread "ubifs_bgt0_1" started, PID 70
[    2.706562] UBIFS error (ubi0:1 pid 1): ubifs_read_node: bad node type (255 but expected 9)
[    2.715237] UBIFS error (ubi0:1 pid 1): ubifs_read_node: bad node at LEB 187:115776, LEB mapping status 0
[    2.725139] Not a node, first 24 bytes:
[    2.725148] 00000000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

rootfs.ubifsrootfsボリュームをvol_id=1

ベストアンサー1

書き込み操作でバグが見つかりましたrawubi.img。一部rawubi.img(最初のボリューム)のみがNAND FLASHに書き込まれ、2番目のボリュームのデータは書き込まれませんでした。そのため、2回目のテストでエラーが発生しました(データがありました)0xFF)。

そのため、全体の書き込みを変更して、以下のようにボリュームを読み取り専用モード(静的ボリュームとして設定)でマウントrawubi.imgできました。usrconf

# mount -t ubifs ubi0:usrconf /mnt/
[   20.695088] UBIFS (ubi0:1): static UBI volume - read-only mode
[   20.701180] UBIFS error (ubi0:1 pid 175): ubifs_mount: cannot mount read-write - read-only media
[   20.710798] UBIFS (ubi0:1): static UBI volume - read-only mode
[   20.717229] UBIFS (ubi0:1): Mounting in unauthenticated mode
[   20.762993] UBIFS (ubi0:1): UBIFS: mounted UBI device 0, volume 1, name "usrdata", R/O mode
[   20.771664] UBIFS (ubi0:1): LEB size: 126976 bytes (124 KiB), min./max. I/O unit sizes: 2048 bytes/2048 bytes
[   20.781928] UBIFS (ubi0:1): FS size: 57393152 bytes (54 MiB, 452 LEBs), journal size 9023488 bytes (8 MiB, 72 LEBs)
[   20.792741] UBIFS (ubi0:1): reserved for root: 0 bytes (0 KiB)
[   20.798776] UBIFS (ubi0:1): media format: w4/r0 (latest is w5/r0), UUID 2CA863C1-5D80-4069-AC4D-DE831E343103, small LPT model
[   20.810928] UBIFS (ubi0:1): full atime support is enabled.

決勝布材 ubinize.cfg次のように、

[ubifs_volume]
mode=ubi
image=rootfs.ubifs
vol_id=0
vol_size=56MiB
vol_type=dynamic
vol_alignment=1
vol_name=rootfs

[usrconf_volume]
mode=ubi
image=usrconf.ubifs
vol_id=1
vol_size=56MiB
vol_type=static
vol_alignment=1
vol_name=usrconf

私が使ったコマンドは、

ubinize -m 2048 -p 128KiB -s 512 -O 2048 ./ubinize.cfg -v -o rawubi.img

生成された結果は、rawubi.imgFLASHチップのプログラミングに直接使用できます。

おすすめ記事