yocto에 iptables를 추가하면 미러 do_rootfs가 실패합니다.

yocto에 iptables를 추가하면 미러 do_rootfs가 실패합니다.

내 이미지는 local.conf커널 4.13(리소스에 설정됨) 및 모든 레시피에서 제대로 빌드됩니다.

내 이미지에 iptables 레시피(v1.6)를 추가하려고 하면 다음 오류와 함께 do_rootfs 작업이 실패합니다.

ERROR: image-dev-0.7-r0 do_rootfs: Error executing a python function in exec_python_func() autogenerated:

The stack trace of python calls that resulted in this exception/failure was:
File: 'exec_python_func() autogenerated', lineno: 2, function: <module>
     0001:
 *** 0002:license_create_manifest(d)
     0003:
File: '/home/yocto/sources/poky/meta/classes/license.bbclass', lineno: 48, function: license_create_manifest
     0044:    pkg_dic = {}
     0045:    for pkg in sorted(image_list_installed_packages(d)):
     0046:        pkg_info = os.path.join(d.getVar('PKGDATA_DIR'),
     0047:                                'runtime-reverse', pkg)
 *** 0048:        pkg_name = os.path.basename(os.readlink(pkg_info))
     0049:
     0050:        pkg_dic[pkg_name] = oe.packagedata.read_pkgdatafile(pkg_info)
     0051:        if not "LICENSE" in pkg_dic[pkg_name].keys():
     0052:            pkg_lic_name = "LICENSE_" + pkg_name
Exception: FileNotFoundError: [Errno 2] No such file or directory: '/media/yocto/build/tmp/pkgdata/machine/runtime-reverse/kernel-4.14.1-fslc+ga4f7f0ac8250'

ERROR: image-dev-0.7-r0 do_rootfs: Function failed: license_create_manifest
ERROR: Logfile of failure stored in: /media/yocto/build/tmp/work/machine-linux-gnueabi/image-dev/0.7-r0/temp/log.do_rootfs.49245
ERROR: Task (/home/yocto/sources/meta-mymeta/recipes-images/images/image-dev.bb:do_rootfs) failed with exit code '1'

오류와 로그를 보면 iptables는 필요한 커널 모듈이 설치될 것으로 예상하지만(양호) 버전은 4.14-fslc(불량)입니다. 내 계층에는 4.14 커널도 없습니다.

커널 모듈 레시피를 이미지에 수동으로 추가할 때도 똑같은 일이 발생합니다.

질문은 다음과 같습니다. 내 Yocto가 4.13 커널로 구축되었으며 4.14 커널 모듈을 설치하려는 이유는 무엇입니까?

그럼 다음 질문: Yocto에게 4.13 커널 모듈을 빌드하고 설치하라고 어떻게 말하나요?


업데이트 1:

kernel-module-x-tables더 자세히 살펴본 후 모듈을 예로 들어 보겠습니다 . 오류 로그에 따르면 4.14용으로 제작되어 사용됩니다. 그런데 buildlog-files를 보면 kernel-module-x-tables4.13에서도 빌드가 되었는데 이 버전은 전혀 사용되지 않고 있습니다.


업데이트 2:

poky를 최신 rocko 버전으로 업데이트하고 커널을 4.19.13으로 업그레이드했는데 iptables 없이도 이미지가 제대로 작동합니다. 오류는 여전히 존재하지만 약간 변경되었습니다. 일부 iptables 모듈에 대해 4.14 커널 모듈을 다시 설치하려고 시도했지만 이제 4.14.24-stable필요한 다른 메타 레이어에서 이 커널 버전을 찾았습니다.

그러나 빌드 로그를 기반으로 yocto로 빌드된 4.19.13 모듈을 설치해야 합니다.

다른 제한 사항으로 인해 4.16+ 커널이 필요합니다. 안타깝게도 4.14.24만 사용할 수는 없습니다.

답변1

이러한 패키지는 업스트림 소스에서 동기화 상태로 유지되지 않는 것 같습니다. 귀하의 옵션은 4.13 호환 패키지의 소스를 찾거나(현재 트리 외부에서 패키지 옵션을 제공하지만 귀하의 게시물은 대상 플랫폼을 나타내지 않음) 4.14 소스로 업데이트하는 것입니다.

또 다른 옵션은 iptables 요구 사항을 1.6 이전 버전으로 되돌리는 것입니다.

관련 정보