요cto의 개요
개시하다
Yocto는 Reference를 읽기 어렵고 Reference를 참고하여 공부하기 어려운 도구입니다.
한번 배운 것을 잊지 않기 위해, 기억하는 것을 여기에 총결산하다
목표
"Yocto 안 만져본 사람", "Yocto 만져봤는데 전체적인 상황을 잘 모르는 사람".
목표는'대략적인 인상 잡기','사소한 건 혼자 푸념하고 해결하기'.
참고 자료
Yocto의 QuickStart
Yocto의 Reference
bitbake Reference
https://www.yoctoproject.org/docs/latest/bitbake-user-manual/bitbake-user-manual.html
(bitbake reference)로 인사하면 오래된 자료가 맨 위에 있으니 주의하세요.
요cto란?
Linux 프로젝트를 만듭니다.bitbake를 구축 도구로 사용
Visual Studio는 두 사람의 관계를 이렇게 생각하면 이해하기 쉬워요.
"Yocto 안 만져본 사람", "Yocto 만져봤는데 전체적인 상황을 잘 모르는 사람".
목표는'대략적인 인상 잡기','사소한 건 혼자 푸념하고 해결하기'.
참고 자료
Yocto의 QuickStart
Yocto의 Reference
bitbake Reference
https://www.yoctoproject.org/docs/latest/bitbake-user-manual/bitbake-user-manual.html
(bitbake reference)로 인사하면 오래된 자료가 맨 위에 있으니 주의하세요.
요cto란?
Linux 프로젝트를 만듭니다.bitbake를 구축 도구로 사용
Visual Studio는 두 사람의 관계를 이렇게 생각하면 이해하기 쉬워요.
Linux 프로젝트를 만듭니다.bitbake를 구축 도구로 사용
Visual Studio는 두 사람의 관계를 이렇게 생각하면 이해하기 쉬워요.
구조
개요
요cto의 주요 구성 요소는 층과 식단 파일이다.
레시피 파일은 빌드 객체의 저장소에 대한 URI와 빌드용 매개변수를 취합한 것이라고 할 수 있습니다.
그림 1.요cto의 구성인상.
디렉토리 구조
개요에 기재된 구조를 실제 디렉터리 구조에 떨어뜨린 것은 다음과 같다.
그림 2.디렉토리 구성도
각 문서의 역할은 다음과 같다.
그러나 파라미터가 어디에 기술되어 있는지 명확하지 않은 것 같다.conf 파일의 설명을 참조하십시오.
local.conf
전체 Yocto의 매개변수를 설정합니다(예: 객체를 구성하는 기계 등).
bitbake.conf
변수의 기본값 정의
bblayers.conf
BBLAYERS 변수를 사용하여 레이어 경로 설정하기
layer.conf
레이어 매개변수 설정(예: 레이어에 속하는 레시피 파일(=*.bb)의 경로)
*.bb
식단 서류.대상 모듈의 매개 변수 설정(예: 이 레시피 파일의 구축 대상 모듈의 창고 URI)
*.bbappend
레시피 파일의 수정 파일.설정 덮어쓰기 가능
*.bbclass
여러 개의 레시피 파일에서 공통적으로 설정되고 처리된 파일을 한데 모았다.bb 파일 계승을 통해 공통된 설정, 처리를 반복하는 것을 피하다
기본 변수
공통 변수 소개
전체 프로젝트 설정
VARIOUBLE
OVERVIEW
BBLAYERS
레이어 경로
BBPATH
bitbake.conf 경로
BBFILES
메뉴 파일 경로
IMAGE_INSTALL
구축할 Linux에 설치할 패키지 목록
OVERRIDES
참조변수 과속 제어
PREFERRED_PROVIDER
참조virtual
DL_DIR
bitbake 창고를 잃어버린 곳
BB_SRCREV_POLICY
SRCREV가 AUTOREV일 때, 매번 창고에 가서 최신 버전을 보는지
퍼스에게 시간이 걸리는 상황에서'BB SRCREV POLICY'를'캐치'로 설정하면 두 번째 이후에는 빨라진다.
fetch가 시간을 소비하는 경우 NAS에서 DL DIR를 미리 사용하는 것이 좋을 수 있습니다.
구성 레시피 파일
VARIOUBLE
OVERVIEW
PV
참조공급자 이름과 패키지 이름
PN
참조공급자 이름과 패키지 이름
PACKAGES
참조공급자 이름과 패키지 이름
PROVIDERS
참조공급자 이름과 패키지 이름
DEPENDS
이 식단을 만들 때 의존하는 공급자 이름
RDEPENDS
이 식단이 구축한 가방에 의존하는 가방 이름
SRC_URI
레시피에 소스 코드 웨어하우스를 구축하는 URI
SRCREV
레시피에 작성된 소스 코드의 버전 지정(제출 ID)
BBCLASSEXTEND
지정된 반의 또 다른 레시피를 계승하는 인상을 남기다(상세히 약정)
"DEPENDS""RDEPENDS"와 함께 의존자 공급업체에 대응하는 식단 파일은 이 식단 파일 이전에 구축 처리되고 이 식단의 구축 시 참조됩니다
"BBCLASSEXTEND"가 "native"를 지정한 것을 기억하면 구축에 사용할 모듈로 구축할 수 있습니다
메뉴 파일 / conf 파일
공급자 이름과 패키지 이름
식단 파일에는 '가방 이름' 과 '공급자 이름' 이 있습니다
공급자 이름
이게 레시피 파일의 별명이에요.
"DEPENDS"로 설정된 이름이 이거예요.
패키지 이름
메뉴 파일은 구축 소프트웨어에 설치된 탭입니다
"RDEPENDS"로 설정된 이름이 이거예요.
기본 설정
레시피 파일 이름이 "test 1.0.0.bb"일 때 가방 이름과 공급자 이름의 기본값은 다음과 같다.PACKAGES = "test-dbg test-staticdev test-dev test-doc test-locale test"
PROVIDES = "test "
디테일
각 기본값(bitbake.conf로 정의)은 다음과 같습니다.
(설명을 위해 일부를 생략/변경)PACKAGES = "${PN}-dbg ${PN}-staticdev ${PN}-dev ${PN}-doc ${PN}-locale ${PN}"
PROVIDES = "${PN} "
'PN'의 기본값(bitbake.conf로 정의)은 다음과 같다.PN = "${@bb.parse.BBHandler.vars_from_file(d.getVar('FILE', False),d)[0] or 'defaultpkgname'}"
"vars from file"은 레시피 파일의 이름이 ""입니다.split으로 표시된 그룹의 함수를 되돌려줍니다
(구현)def vars_from_file(mypkg, d):
if not mypkg or not mypkg.endswith((".bb", ".bbappend")):
return (None, None, None)
if mypkg in __pkgsplit_cache__:
return __pkgsplit_cache__[mypkg]
myfile = os.path.splitext(os.path.basename(mypkg))
parts = myfile[0].split('_')
__pkgsplit_cache__[mypkg] = parts
if len(parts) > 3:
raise ParseError("Unable to generate default variables from filename (too many underscores)", mypkg)
exp = 3 - len(parts)
tmplist = []
while exp != 0:
exp -= 1
tmplist.append(None)
parts.extend(tmplist)
return parts
변수 과속 제어
OVERRIDES를 덮어쓰면 변수의 값을 전환할 수 있습니다.
예를 들어, libjepeg-turbo의 레시피 "SRC URI"를 전환해 보십시오.SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz"
SRC_URI_test = "https://downloads.sourceforge.net/libjpeg-turbo/libjpeg-turbo-2.0.0.tar.gz"
SRC입니다.URI 설정
공통 변수 소개
전체 프로젝트 설정
VARIOUBLE
OVERVIEW
BBLAYERS
레이어 경로
BBPATH
bitbake.conf 경로
BBFILES
메뉴 파일 경로
IMAGE_INSTALL
구축할 Linux에 설치할 패키지 목록
OVERRIDES
참조변수 과속 제어
PREFERRED_PROVIDER
참조virtual
DL_DIR
bitbake 창고를 잃어버린 곳
BB_SRCREV_POLICY
SRCREV가 AUTOREV일 때, 매번 창고에 가서 최신 버전을 보는지
퍼스에게 시간이 걸리는 상황에서'BB SRCREV POLICY'를'캐치'로 설정하면 두 번째 이후에는 빨라진다.
fetch가 시간을 소비하는 경우 NAS에서 DL DIR를 미리 사용하는 것이 좋을 수 있습니다.
구성 레시피 파일
VARIOUBLE
OVERVIEW
PV
참조공급자 이름과 패키지 이름
PN
참조공급자 이름과 패키지 이름
PACKAGES
참조공급자 이름과 패키지 이름
PROVIDERS
참조공급자 이름과 패키지 이름
DEPENDS
이 식단을 만들 때 의존하는 공급자 이름
RDEPENDS
이 식단이 구축한 가방에 의존하는 가방 이름
SRC_URI
레시피에 소스 코드 웨어하우스를 구축하는 URI
SRCREV
레시피에 작성된 소스 코드의 버전 지정(제출 ID)
BBCLASSEXTEND
지정된 반의 또 다른 레시피를 계승하는 인상을 남기다(상세히 약정)
"DEPENDS""RDEPENDS"와 함께 의존자 공급업체에 대응하는 식단 파일은 이 식단 파일 이전에 구축 처리되고 이 식단의 구축 시 참조됩니다
"BBCLASSEXTEND"가 "native"를 지정한 것을 기억하면 구축에 사용할 모듈로 구축할 수 있습니다
메뉴 파일 / conf 파일
공급자 이름과 패키지 이름
식단 파일에는 '가방 이름' 과 '공급자 이름' 이 있습니다
공급자 이름
이게 레시피 파일의 별명이에요.
"DEPENDS"로 설정된 이름이 이거예요.
패키지 이름
메뉴 파일은 구축 소프트웨어에 설치된 탭입니다
"RDEPENDS"로 설정된 이름이 이거예요.
기본 설정
레시피 파일 이름이 "test 1.0.0.bb"일 때 가방 이름과 공급자 이름의 기본값은 다음과 같다.PACKAGES = "test-dbg test-staticdev test-dev test-doc test-locale test"
PROVIDES = "test "
디테일
각 기본값(bitbake.conf로 정의)은 다음과 같습니다.
(설명을 위해 일부를 생략/변경)PACKAGES = "${PN}-dbg ${PN}-staticdev ${PN}-dev ${PN}-doc ${PN}-locale ${PN}"
PROVIDES = "${PN} "
'PN'의 기본값(bitbake.conf로 정의)은 다음과 같다.PN = "${@bb.parse.BBHandler.vars_from_file(d.getVar('FILE', False),d)[0] or 'defaultpkgname'}"
"vars from file"은 레시피 파일의 이름이 ""입니다.split으로 표시된 그룹의 함수를 되돌려줍니다
(구현)def vars_from_file(mypkg, d):
if not mypkg or not mypkg.endswith((".bb", ".bbappend")):
return (None, None, None)
if mypkg in __pkgsplit_cache__:
return __pkgsplit_cache__[mypkg]
myfile = os.path.splitext(os.path.basename(mypkg))
parts = myfile[0].split('_')
__pkgsplit_cache__[mypkg] = parts
if len(parts) > 3:
raise ParseError("Unable to generate default variables from filename (too many underscores)", mypkg)
exp = 3 - len(parts)
tmplist = []
while exp != 0:
exp -= 1
tmplist.append(None)
parts.extend(tmplist)
return parts
변수 과속 제어
OVERRIDES를 덮어쓰면 변수의 값을 전환할 수 있습니다.
예를 들어, libjepeg-turbo의 레시피 "SRC URI"를 전환해 보십시오.SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz"
SRC_URI_test = "https://downloads.sourceforge.net/libjpeg-turbo/libjpeg-turbo-2.0.0.tar.gz"
SRC입니다.URI 설정
PACKAGES = "test-dbg test-staticdev test-dev test-doc test-locale test"
PROVIDES = "test "
PACKAGES = "${PN}-dbg ${PN}-staticdev ${PN}-dev ${PN}-doc ${PN}-locale ${PN}"
PROVIDES = "${PN} "
PN = "${@bb.parse.BBHandler.vars_from_file(d.getVar('FILE', False),d)[0] or 'defaultpkgname'}"
def vars_from_file(mypkg, d):
if not mypkg or not mypkg.endswith((".bb", ".bbappend")):
return (None, None, None)
if mypkg in __pkgsplit_cache__:
return __pkgsplit_cache__[mypkg]
myfile = os.path.splitext(os.path.basename(mypkg))
parts = myfile[0].split('_')
__pkgsplit_cache__[mypkg] = parts
if len(parts) > 3:
raise ParseError("Unable to generate default variables from filename (too many underscores)", mypkg)
exp = 3 - len(parts)
tmplist = []
while exp != 0:
exp -= 1
tmplist.append(None)
parts.extend(tmplist)
return parts
SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz"
SRC_URI_test = "https://downloads.sourceforge.net/libjpeg-turbo/libjpeg-turbo-2.0.0.tar.gz"
OVERRIDES 변수는 bitbake입니다.conf의 기본값을 변경해서 설정할 수 있을 것 같습니다
(전체 프로젝트의 설정으로 많이 사용됨)
예컨대 아래의 느낌
OVERRIDES = "${TARGET_OS}:${TRANSLATED_TARGET_ARCH}:build-${BUILD_OS}:pn-${PN}:${MACHINEOVERRIDES}:${DISTROOVERRIDES}:${CLASSOVERRIDE}:forcevariable:test"
virtual/PREFERRED_PROVIDER
같은 기능을 제공하는 두 개의 모듈이 존재할 때 어떤 모듈을 사용하는지 전환할 수 있습니다
PREFERRED_PROVIDER에서 레시피의 "PN"값 설정
_append/_remove 등
이 일대bitbaken의 수첩은 이해하기 쉬우니 저쪽을 참조하세요
https://www.yoctoproject.org/docs/latest/bitbake-user-manual/bitbake-user-manual.html#basic-syntax
아는 것이 편리하다
생각나면 언제든지 추서할게요.
특정 작업만 다시 수행
레시피를 반복해서 따져봤다는 기술이 있을 것 같아서, comple을 다시 만들고 싶을 때.
이 경우, 작업 디렉터리 (가방마다 $D 변수로 설정된 디렉터리) 에 존재하는 스크립트에서 실행할 수 있습니다
예를 들면 다음과 같습니다.openssl_native 패키지를 컴파일하는 중[email protected]:~/workdir/git/poky/build/tmp/work/x86_64-linux/openssl-native/1.0.2o-r0$ cd temp/
[email protected]:~/workdir/git/poky/build/tmp/work/x86_64-linux/openssl-native/1.0.2o-r0/temp$ ./run.do_compile
NOTE: make -j 4 depend
making depend in crypto...
make[1]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule.
(以下省略)
'비트백-C compuile openssl native'등을 하면 퍼스가 길어지기 때문에 퍼스가 필요 없는 이 방법이 편리하다.
서버 로그 위치
사실 내부처리 일지가 나왔어요.이름이 "bitbaker-cookerdaemon.log"이기 때문에 참고하세요.
bitbake는 내부에서multipprocessing을 사용하여 서버 처리를 실제적으로 처리하기 때문에 제어 단말기에 나타나지 않은 로그가 많습니다.
쓸모 있는 일지는 없는 것 같은데...
후기
마지막에 난장판이 된 것 같아.
잘못된 점이 있으면 알려주세요.
Reference
이 문제에 관하여(요cto의 개요), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/AngryMane/items/61d2fa47246a9f9217f5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
[email protected]:~/workdir/git/poky/build/tmp/work/x86_64-linux/openssl-native/1.0.2o-r0$ cd temp/
[email protected]:~/workdir/git/poky/build/tmp/work/x86_64-linux/openssl-native/1.0.2o-r0/temp$ ./run.do_compile
NOTE: make -j 4 depend
making depend in crypto...
make[1]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule.
(以下省略)
마지막에 난장판이 된 것 같아.
잘못된 점이 있으면 알려주세요.
Reference
이 문제에 관하여(요cto의 개요), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/AngryMane/items/61d2fa47246a9f9217f5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)