오류로 인해 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가 작동하려면 두 가지 일이 발생해야 합니다.

  1. 커널 구성에서 활성화되며 CONFIG_JFFS2_LZO=y다른 압축 구성에서는 비활성화될 수 있습니다.
  2. mkfs.jffs2 를 사용하여 mkfs.jffs2를 실행합니다 -X lzo -x zlib -x rtime. 이는 LZO 압축기가 활성화되고 ZLIB 및 RTIME 압축기가 비활성화됨을 의미합니다.

위에서 언급한 것처럼 rootfs 이미지는 LZO를 사용하여 압축되며 커널이 활성화된 상태에서 LZO를 사용하여 부팅할 수 있습니다.

관련 정보