エラーのため、initを実行できませんでした:jffs2:圧縮タイプ0x06は使用できません。

エラーのため、initを実行できませんでした:jffs2:圧縮タイプ0x06は使用できません。

私は組み込みLinuxシステム(5.10.24)を開発しており、jffs2をrootfsとして使用しています。
次に、jffs2のカーネル設定を次のように変更します。

# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
# CONFIG_JFFS2_SUMMARY is not set
# CONFIG_JFFS2_FS_XATTR is not set
CONFIG_JFFS2_COMPRESSION_OPTIONS=y
# CONFIG_JFFS2_ZLIB is not set
CONFIG_JFFS2_LZO=y
# CONFIG_JFFS2_RTIME is not set
# CONFIG_JFFS2_RUBIN is not set
# CONFIG_JFFS2_CMODE_NONE is not set
# CONFIG_JFFS2_CMODE_PRIORITY is not set
# CONFIG_JFFS2_CMODE_SIZE is not set
CONFIG_JFFS2_CMODE_FAVOURLZO=y

そして、mkfs.jffs2 -e 0x8000 -p -l -n -X lzojffs2イメージを構築するために使用されます。

システムが起動すると、次のエラーが報告されます。

Run /init as init process
jffs2: compression type 0x06 not available
jffs2: Error: jffs2_decompress returned -5
Kernel panic - not syncing: Requested init /init failed (error -5).

私はとても混乱しています!

エラーメッセージを見ると、jffs2イメージがZLIBを介して圧縮されているように見え-X lzoますmkfs.jffs2

それでは、LZOを使用してシステムをjffs2システムで起動する方法は何ですか?

答え1

根本原因を見つけました。

これはデフォルトでZLIBを使用するrootfsイメージのビルドです。 LZOが機能するには2つのことが必要です。

  1. カーネル構成で有効になり、CONFIG_JFFS2_LZO=y他の圧縮構成では無効にすることができます。
  2. mkfs.jffs2を使用してmkfs.jffs2を実行します-X lzo -x zlib -x rtime。これは、LZO コンプレッサがイネーブルになり、ZLIB および RTIME コンプレッサがディセーブルになることを意味します。

前述のように、rootfs イメージは LZO を使用して圧縮され、カーネルがアクティブな状態で LZO を使用して起動できます。

関連情報