CROss PlatformS (CROPS) 与 Docker

news2024/10/22 16:10:01

CROPS 是一个开源的、跨平台的开发框架,专为利用 Docker 容器在 Windows、macOS 和 Linux 系统上创建和管理构建主机而设计。它简化了在非 Linux 系统上运行 Yocto 项目及其他基于 Linux 的工具的过程,同时提供了一个可扩展的开发环境,支持多种架构。

在这里插入图片描述

访问地址

访问地址为 https://github.com/crops,这是一个托管在 GitHub 上的开源组织,专注于提供跨平台开发环境的相关工具和项目。CROPS(CROss PlatformS)框架中的各个项目、工具及其源代码都托管在该地址下,帮助开发者在非 Linux 系统(如 Windows 和 macOS)上通过 Docker 容器实现与 Linux 环境的兼容性,支持 Yocto 项目等复杂嵌入式系统的跨平台开发和构建。

开发者可以通过该链接访问 CROPS 相关的仓库,获取最新的源代码、使用说明和技术文档,并参与开源社区的贡献。

在这里插入图片描述

设置使用 CROss PlatformS (CROPS)

通过 CROPS(基于 Docker 容器),您可以创建一个与操作系统无关的 Yocto 项目开发环境。您可以在容器中设置一个开发环境,在 Windows、Mac 或 Linux 机器上使用 Yocto 项目进行开发。

请按照以下步骤为您的 Windows、Mac 或 Linux 机器准备 Yocto 项目的构建主机:

确定构建主机的需求:您需要在构建主机上安装 Docker 这一软件容器平台。根据您的构建主机,您可能需要安装不同的软件来支持 Docker 容器。访问 Docker 安装页面,阅读有关“支持的平台”部分,以确定构建主机需要满足的条件来运行容器。

选择安装内容:根据您的构建主机是否符合系统要求,您需要安装 “Docker CE 稳定版” 或 “Docker Toolbox”。大多数情况下,推荐使用 Docker CE。但如果您的构建主机不满足要求(例如,Windows 10 之前的版本或 Windows 10 “家庭版”),则必须安装 Docker Toolbox。

前往平台的安装页面:点击与您的构建主机原生软件相匹配的 Docker 版本的链接。例如,如果您的构建主机运行的是 Microsoft Windows 10 并且您想要 Docker CE 稳定版,请点击“支持的平台”下的对应链接。

安装软件:在理解所有前置条件后,您可以下载并安装合适的软件。根据您的具体机器和所需安装的软件类型,遵循相应的安装指南:

  • 对于符合要求的 Windows 构建主机,安装 Docker Desktop。
  • 对于符合要求的 Mac 构建主机,安装 Docker Desktop。
  • 对于运行 CentOS 的 Linux 构建主机,安装 Docker Engine。
  • 对于运行 Debian 的 Linux 构建主机,安装 Docker Engine。
  • 对于运行 Fedora 的 Linux 构建主机,安装 Docker Engine。
  • 对于运行 Ubuntu 的 Linux 构建主机,安装 Docker Engine。

选择性学习 Docker:如果您不熟悉 Docker 和容器概念,您可以在 https://docs.docker.com/get-started/ 进一步了解。

启动 Docker 或 Docker Toolbox:您应该能够启动 Docker 或 Docker Toolbox,并在您的开发主机上获得一个终端 shell。

设置用于 Yocto 项目的容器:访问 https://github.com/crops/docker-win-mac-docs/wiki,并按照针对您构建主机的说明(即 Linux、Mac 或 Windows)进行操作。

完成您的机器的设置说明后,您将拥有可用的 Poky、Extensible SDK 和 Toaster 容器。您可以点击页面上的链接,了解有关如何使用这些容器的更多信息。

一旦容器设置完毕,您就可以像在原生 Linux 机器上一样进行开发。如果您使用的是 Poky 容器,请参阅“克隆 Poky 仓库”部分。如果您使用的是 Extensible SDK 容器,请参阅《Yocto 项目应用开发与可扩展软件开发工具包(eSDK)手册》中的“使用 Extensible SDK”章节。如果您使用的是 Toaster 容器,请参阅《Toaster 用户手册》中的“设置和使用 Toaster”部分。如果您是 VSCode 用户,还可以配置 Yocto 项目的 BitBake 扩展。

CROPS框架详解

CROPS(CROss PlatformS)作为一个跨平台开发框架,利用 Docker 容器创建可移植的开发环境,支持在多种操作系统(如 Windows、macOS 和 Linux)上开发和运行 Yocto 项目及其他 Linux 应用。CROPS 的框架结构由多个组件和工具组成,协同工作以提供一致、可管理的开发环境。

CROPS 的核心结构:

  1. Docker 容器
    Docker 是 CROPS 的基础,所有的开发环境都运行在 Docker 容器中。Docker 容器是一个轻量级的虚拟化环境,它封装了操作系统、开发工具和依赖库。每个容器可以独立运行、构建和测试应用程序。

  2. 基础容器镜像
    CROPS 提供了一系列基础容器镜像,这些镜像预装了 Yocto 项目所需的工具链、编译器、构建工具等,方便用户直接使用。这些基础镜像确保开发环境一致,避免由于操作系统或开发工具不同引发的兼容性问题。

  3. 用户空间设置(User Space Setup)
    用户空间设置是 CROPS 的一个重要组成部分。它通过 Docker 将主机的用户目录挂载到容器中,从而在容器内模拟用户的主机环境。例如,用户的 SSH 密钥、Git 配置等可以在容器中直接使用。这确保了容器内部生成的文件和主机上的用户是可读写的,避免权限问题。

  4. 开发工具链
    在容器中,CROPS 提供了 Yocto 项目所需的所有开发工具链,包括:

    • Poky:Yocto 项目的主要构建系统。
    • BitBake:用于构建和管理包的工具。
    • SDK(可选):Yocto 项目可扩展 SDK,允许在本地开发环境中交叉编译和测试应用程序。
  5. CROPS 扩展容器
    除了基础容器镜像,CROPS 还提供了一些扩展容器,例如:

    • Toaster:Yocto 项目的 Web 界面,用于监控和管理 BitBake 构建。
    • eSDK(可扩展软件开发工具包):开发者可以利用它在容器中进行本地编译和调试工作。
  6. 容器管理脚本
    CROPS 提供了脚本工具,帮助开发者管理这些容器。这些脚本可以自动化创建、启动、停止和删除 Docker 容器,简化了跨平台开发环境的搭建。例如,使用这些脚本,开发者可以快速启动一个带有预装工具链的容器,进行 Yocto 项目的开发和构建。

典型的工作流程:

  1. 启动容器
    用户通过提供的脚本启动 Docker 容器,该容器会预先配置好所有开发工具和环境。

  2. 挂载用户目录
    启动时,CROPS 会将主机上的用户目录(如 /home/user)挂载到容器中,这样用户可以在容器内访问主机上的文件,如 SSH 密钥和项目源码。

  3. 开发和构建
    在容器内,开发人员可以像在 Linux 环境中一样使用 Yocto 工具进行开发和构建,构建的产物可以直接保存在主机上。

  4. 环境隔离
    各个容器之间完全隔离,开发人员可以在同一台机器上同时运行不同版本的 Yocto 项目,或在不同项目之间切换,而不会互相影响。

总结:

CROPS 的开发框架结构基于 Docker 容器,提供了可移植的、与操作系统无关的开发环境。它通过基础镜像、用户空间设置、开发工具链和管理脚本,简化了跨平台开发的复杂性,使开发者可以在非 Linux 系统上轻松使用 Yocto 项目进行开发和构建。

这个结构确保了开发环境的一致性、可重复性,并通过隔离环境和工具链,解决了跨平台开发中的许多常见问题。

CROSP之poky-container

Poky-Container 是一个 Git 仓库,提供了用于在 Docker 容器中运行 Yocto 项目的配置和脚本,帮助开发者创建标准化的构建环境。它通过 Docker 实现了跨平台的开发,无论操作系统是 Linux、Windows 还是 macOS,开发者都可以使用相同的容器环境进行 Yocto 项目开发。CROPS 为 Poky-Container 提供了基础设施,确保 Yocto 项目能够在不同平台上无缝运行。

poky-container 代码结构讲解:

该仓库提供了用于跨平台(Windows、macOS、Linux)构建 Yocto 项目的 Docker 容器的相关文件和脚本。以下是各个文件和目录的简要解释:

  1. .github/workflows/

    • 目录下包含了针对 GitHub Actions 的 CI/CD 工作流配置文件。
    • 最新的工作流文件添加了对 opensuse-15.6 的支持,用于测试和构建容器。
  2. tests/

    • 该目录主要存放测试脚本,确保容器在不同操作系统下能够正常运行。
  3. .gitignore

    • 用于指定哪些文件或目录应该被 Git 忽略。该文件确保开发过程中生成的临时文件不会被提交到仓库中。
  4. Dockerfile

    • Dockerfile 是用于构建容器镜像的核心文件。它定义了构建 Yocto 开发环境所需的步骤和依赖。
    • 该 Dockerfile 主要创建了 /home/yoctouser 目录并配置环境,确保 Yocto 项目能够在容器内运行。
  5. LICENSE

    • 表明了仓库的开源许可证。此文件声明了项目的使用和分发条款。
  6. README.md

    • 该文件提供了项目的概述、使用方法和相关说明。它还包含了指向 Yocto 项目文档的链接。
  7. build-and-test.sh

    • 一个用于构建和测试 Docker 容器的脚本。它将 Ubuntu 18.04 设置为默认构建环境,并自动化处理构建和测试过程。
  8. deploy.sh

    • 该脚本用于将构建的容器镜像推送到 GitHub Container Registry (GHCR),并在推送之前打标签。
  9. distro-entry.sh

    • 此脚本用作容器的入口点,定义了容器启动时的环境配置和命令执行。它确保容器内的发行版环境正确配置。
  10. poky-entry.py

    • 该 Python 脚本用于管理和配置 Poky 环境(Yocto 项目的核心组件)。确保容器中的环境变量和目录结构正确配置。
  11. poky-launch.sh

    • 该脚本直接执行用户传入的命令。它简化了在容器中启动 Yocto 构建任务或执行其他命令的流程。
  12. sudoers.usersetup

    • 一个 sudoers 文件配置,用于允许容器中的 yoctouser 用户执行特定的管理任务,同时保持适当的权限管理。

poky-container使用教程

本仓库用于创建能够运行 BitBake/Poky 的镜像。它与 https://github.com/crops/yocto-dockerfiles 的主要区别在于,它增加了用于在容器内创建用户和组的帮助工具。这样做是为了确保容器生成的输出文件对主机上的用户是可读的。
根据使用的是 Linux、Windows 还是 Mac,安装说明略有不同。关于 Windows/Mac 的设置说明,请参考 https://github.com/crops/docker-win-mac-docs/wiki。在本指南的后续部分中提到 Windows/Mac 时,假定已经按照上述链接的说明完成了设置。

Poky Container 使用教程

1. 创建工作目录或卷
  • Linux

    • 创建工作目录以存储 Yocto 构建输出。
      mkdir -p /home/myuser/mystuff
      
    • 确保您是目录的所有者。
  • Windows/Mac

    • 使用已经创建的 myvolume 卷(按说明设置)。
2. 运行 Docker 容器
  • Linux

    • 运行容器:
      docker run --rm -it -v /home/myuser/mystuff:/workdir crops/poky --workdir=/workdir
      
    • 如果启用 SELinux 强制模式:
      docker run --rm -it -v /home/myuser/mystuff:/workdir:Z crops/poky --workdir=/workdir
      
  • Windows/Mac

    • 运行容器:
      docker run --rm -it -v myvolume:/workdir crops/poky --workdir=/workdir
      
3. 进入容器环境

运行后,进入容器环境并开始使用 Yocto 项目进行开发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2220908.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于vue框架的的地铁站智慧管理系统的设计n09jb(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:用户,上班打卡,下班打卡,人员管理,交接班,视频巡检,车辆巡检,车辆管理 开题报告内容 基于Vue框架的地铁站智慧管理系统的设计开题报告 一、研究背景与意义 随着城市化进程的加速,地铁站作为城市交通系统的重要组成部分&am…

全能型选手视频播放器VLC 3.0.21 for Windows 64 bits支持Windows、Mac OS等供大家学习参考

全能型选手视频播放器,支持Windows、Mac OS、Linux、Android、iOS等系统,也支持播放几乎所有主流视频格式。 推荐指数: ★★★★★ 优点: ◆、界面干净简洁,播放流畅 ◆、支持打开绝大多数的文件格式,包…

用Aconvert.com将MOBI文件转换为PDF:一步步指南

在今天的数字时代,文件格式转换是日常办公和学习中常见的需求之一。MOBI格式的电子书文件在某些设备上不太方便阅读,而PDF格式则更加通用。本文将为你详细介绍如何使用Aconvert.com将MOBI文件转换为PDF文件。 1. 访问Aconvert.com 首先,打开…

装修公司行业通用的小程序源码系统 让装修公司实现信息智能化 带完整的安装代码包以及搭建部署教程

系统概述 装修公司行业通用的小程序源码系统是一款专门为装修公司设计的智能化解决方案。它基于先进的技术架构,结合装修行业的特点和需求,为装修公司提供了全方位的业务支持和管理功能。 该系统通过小程序的形式呈现给用户,方便客户随时随…

MacOS13虚拟机VMware Workstation Pro 16安装

资源 安装unlocker 安装虚拟机 低版本的还没有MacOS13选项,这也是我安装低版本虚拟机踩过的坑 找个教程安装就可以了 省略…自己去找找教程… 过程中我使用桥接是不行的,没有网络,后面重新下一步一步的选择默认的网络重装后就好了&am…

基于yolov10的驾驶员抽烟打电话安全带检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv10的驾驶员抽烟、打电话、安全带检测系统是一种先进的驾驶行为监测系统。该系统利用YOLOv10算法的高效性和准确性,实现对驾驶员行为的实时检测与识别。 YOLOv10是一种最新的实时物体检测模型,其通过深度学习技术,如卷…

如何看ip属于什么地址

在数字化时代,IP地址作为互联网通信的基石,扮演着至关重要的角色。无论是网络管理、安全防护,还是日常的网络访问,理解IP地址的性质和分类都是必不可少的技能。本文将深入探讨如何判断一个IP地址属于哪一类地址,并详细…

Java项目-基于springboot框架的校园医疗保险管理系统项目实战(附源码+文档)

作者:计算机学长阿伟 开发技术:SpringBoot、SSM、Vue、MySQL、ElementUI等,“文末源码”。 开发运行环境 开发语言:Java数据库:MySQL技术:SpringBoot、Vue、Mybaits Plus、ELementUI工具:IDEA/…

Spring Boot整合Stripe订阅支付指南

在当今的在线支付市场中,Stripe 作为一款一体化的全球支付平台,因其易用性和广泛的支付方式支持,得到了许多企业的青睐。本文将详细介绍如何在 Spring Boot 项目中整合 Stripe 实现订阅支付功能。 1.Stripe简介 Stripe 是一家为个人或公司提…

低代码赋能项目管理系统:打造高效协同的数字化工作环境

项目管理是企业日常运营中的重要环节,其运作效率直接关系到项目的成功交付、资源的优化配置及企业的市场竞争力。然而,传统的项目管理系统却面临着诸多挑战。 传统管理系统开发周期长、耗资大、需要大量时间和资源来定制和优化。同时,高昂的维…

K8s-pod详解3(pod调度)

Pod调度 在默认情况下,一个Pod在哪个Node节点上运行,是由Scheduler组件采用相应的算法计算出来的,这个过程是不受人工控制的。但是在实际使用中,这并不满足的需求,因为很多情况下,我们想控制某些Pod到达某…

基于卷积神经网络的花卉分类系统,resnet50,mobilenet模型【pytorch框架+python源码】

更多目标检测和图像分类识别项目可看我主页其他文章 功能演示: 卷积神经网络,花卉识别系统,resnet50,mobilenet【pytorch框架,python源码】_哔哩哔哩_bilibili (一)简介 基于卷积神经网络的…

SpringSecurity源码分析以及如何解决前后端分离出现的跨域问题

解决Security前后端分离出现的跨域问题 一. Security源码分析 首先在看源码之前我们先来看这张图 , 这张图展示了Security执行的全部流程 从上图可知Security执行的入口是UsernamePasswordAuthenticationFilter这个抽象类 , 那我们就先从该类进行分析 1. UsernamePasswordAu…

029_基于nodejs外卖网站设计和实现

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍:CodeMentor毕业设计领航者、全网关注者30W群落,InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者,博客领航之星、开发者头条/腾讯云/AW…

Java应用程序的测试覆盖率之设计与实现(一)-- 总体设计

一、背景 作为测试,如何保证开发人员提交上来的代码都被测试覆盖到,是衡量测试质量的一个重要指标。 本系列文章将要说一说,如何搭建一套测试覆盖率的系统。 包括以下内容: jacoco agent采集执行覆盖率数据jacoco climaven集成…

基于Multisim的模拟拔河游戏比赛设计与仿真

1.设计一个模拟拔河游戏比赛的逻辑电路 2.使用15个发光二极管表示绳子,开机后只有最中间的发光二极管亮。 3.比赛双方各持一个按钮,快速不断地按动按钮,产生脉冲,谁按的快,发光的二极管就向谁的方向移动,每…

越狱你的 iPhone 安全吗?

越狱 iPhone 并不安全,可能会导致您的个人信息被盗、手机感染恶意软件以及软件出现故障。越狱 iPhone 会增加网络犯罪分子可利用来访问您的私人信息的安全漏洞数量。 继续阅读,了解什么是越狱以及为什么你永远不应该越狱你的 iPhone。 什么是越狱&…

K8S系列-Kubernetes网络

一、Kubernetes网络模型 ​ Kubernetes网络模型设计的一个基础原则是:每个Pod都拥有一个独立的IP地址,并假定所有Pod都在一个可以直接连通的、扁平的网络空间中,不管它们是否运行在同一个Node(宿主机)中,都…

鸿蒙网络编程系列31-使用RCP调用OpenAI接口实现智能助手

简介 在OpenAI推出GPT系列大模型以后,市场上各种类似的大模型也层出不穷,这些大模型也基本都会兼容OpenAI的接口,在开发基于大模型的应用时,选择使用OpenAI接口作为和后端大模型通讯的标准,可以更好的适配不同厂家的模…

Scala 内部类

一. scala的内部类的定义 它是指定义在类或对象内部的类。 idea实例 二.内部类的基本使用 idea实例 三.内部类的使用案例 四.内部对象 idea实例 五.匿名类 idea实例