나는 rootfs 구축에 관한 buildroot와 YOCTO 프로젝트(google)의 비교를 읽었으며 보다 일반적인 질문을 하고 싶었습니다.
임베디드 시스템 공급업체(예: jetson SoC가 포함된 Nvidia)에서 제공한 배포판을 사용하는 대신 처음부터 자체 rootfs를 구축하고 자체 "OS 배포판"(예: YOCTO 사용)을 구축하면 잠재적인 이점이 무엇입니까?
특히 다음 측면을 비교하는 데 관심이 있습니다.
- 시스템 보안 및 운영 체제 강화
- 성능
이러한 구성 요소를 직접 배우고 구축하는 것이 "가치"가 있는지 모르기 때문에 질문합니다.
감사해요
답변1
예를 들어, jetson SoC가 있는 Nvidia와 같은 임베디드 시스템 공급업체의 시스템을 사용하는 대신 YOCTO를 사용합니다.
이것이 귀하의 요구 사항을 충족하고 불필요한 보안 공격 표면을 생성하지 않습니까? Nvidia 평가 보드가 자동차의 자율 주행 제어 상자에 물리적으로 적합합니까? 차량의 제어 버스는 물론 모든 네트워크 인터페이스에 연결되어 있습니까?
그게 다야. 임베디드 개발은 "단지 SoC 참조 보드에서 Python 스크립트를 실행하는 것"이 아닙니다. 대개:
- SoC를 평가 보드에서 떼어내고, 그 주위에 자신만의 보드를 만들고, 자신만의 주변 장치를 사용하세요.
- 임베디드 마더보드에 연결하는 것에 대한 드라이버를 작성하고 제공하십시오. 결국 그 이름은임베디드, 이 때문에임베디드다른 기계에서는.
- 이 시스템에 배포하려는 애플리케이션을 작성합니다.
- 해당 플랫폼에 맞게 크로스 컴파일하는 방법을 개발합니다.아니요임베디드 플랫폼에서 Chromium을 컴파일하고 싶습니다. 실제로는 몇 주가 소요됩니다. )
- 소프트웨어를 계속 개발하면서 소프트웨어를 최신 버전으로 교체할 수 있는 방법을 개발하십시오.
- EU에서 시스템을 판매하려면 소프트웨어 재료 명세서(SBOM)를 기록해 두십시오(RED 지침 참조. 미국에도 비슷한 요구 사항이 있습니다.~ 해야 하다목록 형식으로 장치에 어떤 소프트웨어가 있는지 정확히 알 수 있습니다. )
- 무료 소프트웨어를 사용하고 고객이 소스 코드를 요청할 수 있는 경우 시스템에 설치한 소프트웨어의 소스 코드를 그대로 유지하세요. 귀하의 고객은 해당 버전을 사용할 자격이 있으며 귀하의 시스템이나 응용 프로그램과 함께 작동하도록 수정되지 않은 다른 버전은 사용할 수 없습니다.
- 온보드 스토리지용 이미지를 생성하기 위한 재현 가능한 방법을 개발합니다. 이것은 중요합니다. 6개월 안에 작은 것들을 변경하고 싶고, 원래 빌드 시스템을 작성한 사람이 켜져 있더라도 전체 시스템이 통과한 모든 테스트가 여전히 통과하는지 100% 확신해야 합니다. 휴가를 갔거나 기억이 나지 않습니다. 아니면 은퇴했습니다. 아니면 회사를 떠나세요.
일반적으로 공급업체 이미지는 이 작업을 수행하지 않습니다.어느의.
오픈임베디드 제안
- 공급업체 OS가 종종 매우 좋지 않기 때문에 맞춤형 하드웨어 또는 공급업체 하드웨어에 대한 마더보드 지원 패키지를 구축하는 표준화된 방법입니다.
- Linux 커널 패치를 수집, 업데이트 및 통합하는 표준 방법
- 방금 구축한 플랫폼용 소프트웨어를 개발하는 데 필요한 모든 컴파일러, 라이브러리, 헤더가 포함된 SDK를 생성할 수 있습니다.
- "오, John은 어떤 파일을 어디에 복사할지 알았지만 죽었습니다"가 아닌 강력하고 반복 가능한 이미지에 소프트웨어를 통합하는 방법입니다.
- 이러한 소프트웨어 레시피에서 현장 교체 가능한 소프트웨어 패키지를 생성하는 간단한 방법
- SBOM은 이미지가 생성되는 것과 동일한 방식으로 생성되므로 실제로는 완전하며 "John은 자신이 사용한 작은 라이브러리 한두 개를 언급하는 것을 잊어버린 것이 최악의 시나리오라고 생각했습니다"가 아닙니다.
- 소스 패키징/아카이브 생성(귀하가 무료 및 오픈 소스 소프트웨어 라이센스를 위반한 소프트웨어를 출시했다는 이유로 하드웨어 배포를 중단하라고 경쟁사에서 소송을 제기할 수 없기 때문에 법무 부서를 기쁘게 합니다)
- 이미지를 굽는 안정적인 방법
따라서 장점은 다음과 같습니다.
공급업체 이미지는 SoC를 잘 이해하는 데 도움이 되므로 SoC를 사용하여 자체 시스템을 구축할 수 있습니다. 임베디드 장치에 배포하게 되는 것은 결코 아닙니다. OpenEmbedded는 공급업체가 수행하지 않는 작업, 즉 고객이 비용을 지불하는 작업을 실제로 수행하는 데 도움이 됩니다. 귀하의 고객은 참조 게시판에 대본을 올리는 대가로 귀하에게 비용을 지불하지 않습니다. 생산 준비가 되어 있고, 신뢰할 수 있고, 반복 가능하고, 법적 규정을 준수하는 완전한 시스템에 대한 비용을 지불합니다.