This service is available only in Japanese-language.
Linuxの構築はYocto2.2 core-image-minimalイメージをベースに行っており、
カーネルコンフィグレーションで「UBIFS file system support」の「Advanced compression options」
をOFFで設定しております。(#CONFIG_UBIFS_FS_ADVANCED_COMPR)
そのUBIFSで合計約205MBのファイルを追加したのですが、Linuxの使用容量が約80MBほどしか増えませんでした。
この差分は「df -h」コマンドで使用容量を確認致しました。
「Advanced compression options」 設定が実は有効になっているということでしょうか?
または、何か他の設定が作用してこういった現象が起こっているのでしょうか?
yakuhito
2021/10/13 (水) 07:40
zcat /proc/config.gz を実行することで、現在のカーネルのconfigを確認できます
またubifsイメージ生成時に (mkfs.ubifs) "-x none" と非圧縮を指定することで、非圧縮なファイルシステムを作成できます。
mkfs.ubifs のパラメータはMKUBIFS_ARGS変数を使用しているので、この値を変更することで非圧縮で作成可能となります。
amateur_yocto
2021/10/13 (水) 19:44
UBIF圧縮
zcat /proc/config.gz で確認した所、以下のような設定になっており特段圧縮機能はONになっておりませんでした。
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS2_FS is not set
CONFIG_UBIFS_FS=y
# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set
CONFIG_UBIFS_FS_LZO=y
CONFIG_UBIFS_FS_ZLIB=y
# CONFIG_UBIFS_ATIME_SUPPORT is not set
# CONFIG_LOGFS is not set
# CONFIG_CRAMFS is not set
CONFIG_SQUASHFS=y
CONFIG_SQUASHFS_FILE_CACHE=y
以下のような設定でNANDフラッシュにUBIFSでフォーマットしています。
flash_erase /dev/mtd9 0 0
ubiformat /dev/mtd9
ubiattach /dev/ubi_ctrl -m 9
ubimkvol /dev/ubi0 -Nrootfs -m
mount -t ubifs ubi0:rootfs /mnt
非圧縮を明示的に指定しないと、デフォルトでは圧縮したファイルシステムになるのでしょうか?
yakuhito
2021/10/14 (木) 16:18
CONFIG_UBIFS_FS_ADVANCED_COMPRは、圧縮方法を切替可能とする機能です
CONFIG_UBIFS_FS_ADVANCED_COMPは、サポートされている圧縮方法を切替可能とする機能となります。
現在の設定では、LZO方式と、ZLIBが有効となっており、デフォルトのLZO圧縮が行われていると考えます。
https://elinux.org/UBIFS
mkfs.ubifs 実行時にオプション -x none を指定することで、圧縮を無効にできると考えます。
amateur_yocto
2021/10/14 (木) 17:15
理解致しました
CONFIG_UBIFS_FS_ADVANCED_COMPR、UBIFS のオンザフライ圧縮について理解致しました。
ありがとうございました。
mkfs.ubifsをレシピに追加して行うことは可能なのでしょうか?
yakuhito
2021/10/15 (金) 17:38
rootfsとして生成されている領域で有ればMKUBIFS_ARGS変数への追記で設定変更は可能です
現在ubifs上にrootfsが構築されていて、そのファイルシステムの圧縮を抑止したい場合は
MKUBIFS_ARGS 変数の指定で " -x none" が有効になるように修正することで変更可能と考えます。