
사용자 정의 메타 레이어에서 레시피 변수 재정의를 생성했는데 아무 일도 일어나지 않습니까?
자신이 무언가 잘못했다고 생각하지 말고 사용된 메타 레이어의 우선순위를 확인하세요.
예
저희는 Raspberry Pi 4용 Yocto Linux 배포판을 빌드하고 psplash 레시피의 배경 이미지를 변경하려고 합니다. 이를 위해, 사용자 정의 메타 레이어 'meta-interelectronix'에 'psplash' 폴더를 생성하고 'psplash_%.bbappend' 파일을 추가하여 'SPLASH_IMAGES' 변수를 재정의합니다.
SPLASH_IMAGES:rpi = "file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"
'bblayers.conf'에 'meta-interelectronix'를 추가한 후 Linux 배포판을 비트베이크하고 SD 카드로 플래시한 다음 이를 사용하여 Raspberry Pi 4를 부팅합니다.
하지만, 시작 화면에 대한 사용자 정의 배경 이미지가 사용되지 않았습니다. 왜 그럴까요?
이 동작의 원인은 무엇입니까?
'오류'를 검색한 후 메타 레이어의 우선순위 변수를 확인합니다. 메타 레이어에는 Linux 배포판을 비트베이크할 때 메타 레이어가 사용되는 순위를 정의하는 우선순위에 대한 변수가 있습니다.
해당 변수는 'meta-interelectronix/conf/layer.conf' 파일에 설정됩니다:
BBFILE_PRIORITY_meta-interelectronix = "6"
저희의 경우에는 'meta-interelectronix'의 우선순위는 '6'으로 설정되었고 'meta-raspberrypi'의 우선순위는 '9'로 설정되었습니다.
우선순위가 높을수록 bitbake에 적용된 bbappend 파일의 변수가 나중에 적용됩니다. 'meta-raspberrypi'도 'psplash_%.bbappend' 파일인 것처럼 이 파일의 변수는 'meta-interelectronix' 레이어의 재정의를 다시 무시하지만 아무 것도 변경되지는 않습니다.
참고
외부 메타 레이어의 모든 재정의로 나중에 변경 사항을 적용하려면, 사용자 정의 메타 레이어의 우선순위를 높은 숫자(예: 50)로 변경하세요.
변수의 순위를 쉽게 얻는 방법은 무엇입니까?
모든 메타 레이어에서 변수의 순위를 얻는 쉬운 명령어가 있습니다:
bitbake-getvar -r recipe VARIABLE
저희의 경우 명령어는 다음과 같습니다:
bitbake-getvar -r psplash SPLASH_IMAGES
'meta-interelectronix' 레이어의 우선순위를 '50'으로 변경한 결과는 다음과 같습니다:
bitbake-getvar -r psplash SPLASH_IMAGES
#
# $SPLASH_IMAGES [4 operations]
# set /workdir/poky-kirkstone/meta/recipes-core/psplash/psplash_git.bb:19
# "file://psplash-poky-img.h;outsuffix=default"
# set /workdir/poky-kirkstone/meta-interelectronix/recipes-core/psplash/psplash_%.bbappend:10
# "file://psplash-ixlogo-white-img.h;outsuffix=interelectronix"
# override[rpi]:set /workdir/poky-kirkstone/meta-raspberrypi/recipes-core/psplash/psplash_%.bbappend:2
# "file://psplash-raspberrypi-img.h;outsuffix=raspberrypi"
# override[rpi]:set /workdir/poky-kirkstone/meta-interelectronix/recipes-core/psplash/psplash_%.bbappend:9
# "file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"
# pre-expansion value:
# "file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"
SPLASH_IMAGES="file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"
다음 명령어를 사용하여 사용된 레이어의 우선순위를 표시할 수도 있습니다:
bitbake-layers show-layers
저작권 라이선스
Copyright © 2022 Interelectronix e.K.
이 프로젝트 소스 코드는 GPL-3.0 라이선스에 따라 라이선스가 부여됩니다.