저는 Yocto용 레이어를 작성 중입니다. 두 가지 하드웨어 구성을 원합니다. 하나는 표준 일반 구성이고 다른 하나는 특정 사용 사례인데 어떻게 해야 할지 모르겠습니다.
다음은 내가 원하는 것의 예입니다. 일반 이미지 레시피에서 DHCP용 네트워크 인터페이스를 구성하고 싶다고 가정해 보겠습니다. 사용 사례 이미지 레시피에서는 고정 IP로 구성하고 싶습니다.
init-ifupdown 레시피에 대한 표준 파일을 재정의하기 위해 bbappend를 작성할 수 있지만 이렇게 하면 init-ifupdown 레시피의 모든 인스턴스에 대한 파일이 변경됩니다. 일반 이미지가 아닌 사용 사례 이미지 레시피를 빌드할 때만 파일이 변경되기를 원합니다.
그리고 한 단계 더 나아가세요. rootfs에 있는 약 12개의 파일을 교체하고 싶습니다. 나는 각각에 대해 bbappend를 작성하고 싶지 않습니다.
"이 파일은 이미 패키지에서 제공되었습니다." 오류가 발생하지 않고 일부 파일을 대체하는 레시피를 작성하는 방법에 대해 알고 계시나요? 그리고 수십 개의 bbappend 파일을 작성할 필요가 없나요?
나는 이것이 buildroot의 재정의로 쉽게 이루어질 수 있다는 것을 알고 있습니다. 불행히도 나는 yocto에 갇혀 있습니다.
감사해요
답변1
원하는 것을 얻으려면 적절한 릴리스 .conf
파일에서 PREFERRED_VERSION을 사용하여 패키지 버전에 따라 빌드를 다양하게 할 수 있습니다. 그런 다음 배포 .conf 파일의 PREFERRED_VERSION과 일치하도록 패키지 버전을 생성할 수 있습니다. 이를 통해 동일한 프로젝트에서 구축 중인 배포판에 따라 구성 등이 다른 다양한 이미지를 생성할 수 있습니다. 기존 프로젝트에 통합하는 것은 해당 프로젝트의 구조에 따라 다르지만 이것이 일반적인 방향입니다.
답변2
해결책은 이런 일이 일어날 수 없다는 것입니다.
내 연구를 통해 이것이 빌드의 "조미료"라고 불리는 것을 발견했습니다. 그리고 Yocto는 이 시점에서 그런 일이 일어나도록 허용하는 방식으로 만들어지지 않았습니다. 내가 아는 한, 가까운 시일 내에 이런 일은 일어나지 않을 것입니다.
영향을 받는 레시피에 포함된 단일 ".inc" 파일을 사용하여 이를 달성하기 위한 몇 가지 독립적인 노력이 있었습니다. 이를 통해 레시피는 패키지를 완성하기 위한 경로를 선택할 수 있지만 데이터에 있는 ".inc" 파일은 필요합니다. Yocto 시스템 외부 도구를 사용하여 수동으로 조작할 수 있습니다.
다음은 해당 주제에 대한 yocto 메일링 리스트에서 찾은 스레드입니다: https://lists.yoctoproject.org/pipermail/yocto/2014-June/020249.html
레시피의 여러 파일 대체에 관해서는 "미친 검사"가 비활성화되었을 수 있다고 믿지 않는 한, 어느 쪽이든 아직 파악하지 못했고 작업을 포기하고 있습니다.
답변3
내가 사용하는 한 가지 방법은 내 레이어에 새 컴퓨터 프로필을 만드는 것입니다. 이를 통해 다른 컴퓨터에 OVERRIDE 구문을 사용할 수 있습니다.
https://docs.yoctoproject.org/next/dev-manual/new-machine.html
recipe/
files/
specific.conf
-- default gets copied to WORKDIR
newmachine/
specific.conf
-- gets copied to WORKDIR for newmachine only
recipe.bbappend
SRC_URI += "file://specfic.conf"