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 的核心结构:
-
Docker 容器:
Docker 是 CROPS 的基础,所有的开发环境都运行在 Docker 容器中。Docker 容器是一个轻量级的虚拟化环境,它封装了操作系统、开发工具和依赖库。每个容器可以独立运行、构建和测试应用程序。 -
基础容器镜像:
CROPS 提供了一系列基础容器镜像,这些镜像预装了 Yocto 项目所需的工具链、编译器、构建工具等,方便用户直接使用。这些基础镜像确保开发环境一致,避免由于操作系统或开发工具不同引发的兼容性问题。 -
用户空间设置(User Space Setup):
用户空间设置是 CROPS 的一个重要组成部分。它通过 Docker 将主机的用户目录挂载到容器中,从而在容器内模拟用户的主机环境。例如,用户的 SSH 密钥、Git 配置等可以在容器中直接使用。这确保了容器内部生成的文件和主机上的用户是可读写的,避免权限问题。 -
开发工具链:
在容器中,CROPS 提供了 Yocto 项目所需的所有开发工具链,包括:- Poky:Yocto 项目的主要构建系统。
- BitBake:用于构建和管理包的工具。
- SDK(可选):Yocto 项目可扩展 SDK,允许在本地开发环境中交叉编译和测试应用程序。
-
CROPS 扩展容器:
除了基础容器镜像,CROPS 还提供了一些扩展容器,例如:- Toaster:Yocto 项目的 Web 界面,用于监控和管理 BitBake 构建。
- eSDK(可扩展软件开发工具包):开发者可以利用它在容器中进行本地编译和调试工作。
-
容器管理脚本:
CROPS 提供了脚本工具,帮助开发者管理这些容器。这些脚本可以自动化创建、启动、停止和删除 Docker 容器,简化了跨平台开发环境的搭建。例如,使用这些脚本,开发者可以快速启动一个带有预装工具链的容器,进行 Yocto 项目的开发和构建。
典型的工作流程:
-
启动容器:
用户通过提供的脚本启动 Docker 容器,该容器会预先配置好所有开发工具和环境。 -
挂载用户目录:
启动时,CROPS 会将主机上的用户目录(如/home/user
)挂载到容器中,这样用户可以在容器内访问主机上的文件,如 SSH 密钥和项目源码。 -
开发和构建:
在容器内,开发人员可以像在 Linux 环境中一样使用 Yocto 工具进行开发和构建,构建的产物可以直接保存在主机上。 -
环境隔离:
各个容器之间完全隔离,开发人员可以在同一台机器上同时运行不同版本的 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 容器的相关文件和脚本。以下是各个文件和目录的简要解释:
-
.github/workflows/
- 目录下包含了针对 GitHub Actions 的 CI/CD 工作流配置文件。
- 最新的工作流文件添加了对 opensuse-15.6 的支持,用于测试和构建容器。
-
tests/
- 该目录主要存放测试脚本,确保容器在不同操作系统下能够正常运行。
-
.gitignore
- 用于指定哪些文件或目录应该被 Git 忽略。该文件确保开发过程中生成的临时文件不会被提交到仓库中。
-
Dockerfile
- Dockerfile 是用于构建容器镜像的核心文件。它定义了构建 Yocto 开发环境所需的步骤和依赖。
- 该 Dockerfile 主要创建了
/home/yoctouser
目录并配置环境,确保 Yocto 项目能够在容器内运行。
-
LICENSE
- 表明了仓库的开源许可证。此文件声明了项目的使用和分发条款。
-
README.md
- 该文件提供了项目的概述、使用方法和相关说明。它还包含了指向 Yocto 项目文档的链接。
-
build-and-test.sh
- 一个用于构建和测试 Docker 容器的脚本。它将 Ubuntu 18.04 设置为默认构建环境,并自动化处理构建和测试过程。
-
deploy.sh
- 该脚本用于将构建的容器镜像推送到 GitHub Container Registry (GHCR),并在推送之前打标签。
-
distro-entry.sh
- 此脚本用作容器的入口点,定义了容器启动时的环境配置和命令执行。它确保容器内的发行版环境正确配置。
-
poky-entry.py
- 该 Python 脚本用于管理和配置 Poky 环境(Yocto 项目的核心组件)。确保容器中的环境变量和目录结构正确配置。
-
poky-launch.sh
- 该脚本直接执行用户传入的命令。它简化了在容器中启动 Yocto 构建任务或执行其他命令的流程。
-
sudoers.usersetup
- 一个 sudoers 文件配置,用于允许容器中的
yoctouser
用户执行特定的管理任务,同时保持适当的权限管理。
- 一个 sudoers 文件配置,用于允许容器中的
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
- 确保您是目录的所有者。
- 创建工作目录以存储 Yocto 构建输出。
-
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 项目进行开发。