요cto의 개요

13664 단어 Linuxyocto

개시하다


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는 두 사람의 관계를 이렇게 생각하면 이해하기 쉬워요.
  • bitbake ⇔ VisualStudio
  • Yocto  ⇔ Yocto.sln
  • 비록 비트백은 IDE라고 불리지만 상당히 치밀하지만...

    구조


    개요


    요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 설정
  • OVERRIDES 변수에는 "\${SOURCEFORGE MIRRO]/\${BPN]/\${BPN]-\${PV].tar.gz"
  • 문자열이 포함되어 있습니다.
  • OVERRIDES 변수에 "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을 사용하여 서버 처리를 실제적으로 처리하기 때문에 제어 단말기에 나타나지 않은 로그가 많습니다.
    쓸모 있는 일지는 없는 것 같은데...

    후기


    마지막에 난장판이 된 것 같아.
    잘못된 점이 있으면 알려주세요.

    좋은 웹페이지 즐겨찾기