2设置使用 Yocto 项目

目录

2设置使用 Yocto 项目

2.1创建团队开发环境

2.2准备构建主机

2.2.1 搭建原生 Linux 主机

2.2.2设置使用 CROss 平台(CROPS)

2.2.3设置使用适用于 Linux 的 Windows 子系统 (WSLv2)

2.3定位 Yocto 项目源文件

2.3.1访问源代码库

2.3.2获取发布索引

2.3.3使用下载页面

2.3.4访问每夜构建

2.4克隆和检出分支

2.4.1克隆poky仓库

2.4.2在 Poky 中按分支检出

2.4.3在 Poky 中按标签签出


本章提供有关如何准备使用 Yocto 项目的指导。您可以了解如何创建团队环境以使用 Yocto 项目进行开发、如何设置构建主机、如何定位 Yocto 项目源存储库以及如何创建本地 Git 存储库。

2.1创建团队开发环境

您可能无法立即清楚如何在团队开发环境中使用 Yocto 项目,或者如何为大型开发团队扩展它。您可以使 Yocto 项目适应许多不同的用例和场景;但是,如果您尝试创建有效扩展的工作设置,这种灵活性可能会导致困难。

为帮助您了解如何设置此类环境,本节提供了一个过程,其中提供了可帮助您获得所需结果的信息。该程序是高级别的,展示了该项目的一些最成功的经验、实践、解决方案和过去证明行之有效的可用技术;但是,请记住,这里的过程只是一个起点。您可以构建这些步骤并自定义程序以适应任何特定的工作环境和实践集。

  1. 确定谁将开发:您首先需要了解谁将执行与 Yocto 项目相关的任何工作并确定他们的角色。做出此决定对于完成后续步骤至关重要,这些步骤将您的设备组装在一起并设置您的开发环境的硬件拓扑。

    以下是可能的角色:

    • 应用程序开发人员:这种类型的开发人员在现有软件堆栈之上进行应用程序级别的工作。

    • 核心系统开发人员:这种类型的开发人员处理操作系统映像本身的内容。

    • 构建工程师:这种类型的开发人员管理 Autobuilder 和发布。根据环境的具体情况,并非所有情况都可能需要构建工程师。

    • 测试工程师:这类开发人员创建和管理用于确保所有应用程序和核心系统开发符合所需质量标准的自动化测试。

  2. 收集硬件:根据团队的规模和组成,收集硬件。理想情况下,任何开发、构建或测试工程师都使用运行受支持的 Linux 发行版的系统。通常,这些系统应该是高性能的(例如,具有 24 GB RAM 和大量磁盘空间的双六核 Xeon)。您可以通过让任何用于测试或运行 Autobuilder 的机器尽可能保持高性能来帮助确保效率。

    注意

    如果有足够的处理能力,您还可以考虑构建 Yocto Project 开发容器以在 Docker 下运行,这将在后面介绍。

  3. 了解环境的硬件拓扑:一旦了解了所涉及的硬件和团队的组成,您就可以了解开发环境的硬件拓扑。您可以直观地了解机器及其在整个开发环境中的角色。

  4. 使用 Git 作为您的源代码控制管理器 (SCM):建议将您的 元数据(即配方、配置文件、类等)和您正在开发的任何软件保存在与 OpenEmbedded 构建系统兼容的 SCM 系统的控制下. 在 BitBake 支持的所有 SCM 中,Yocto 项目团队强烈建议使用 Git。Git 是一个易于备份的分布式系统,允许您远程工作,然后连接回基础设施。

    注意

    有关 BitBake 的信息,请参阅 BitBake 用户手册。

    设置 Git 服务和创建像https://git.yoctoproject.org/cgit/cgit.cgi/这样的基础设施相对容易,它基于被调用的服务器软件gitolitecgit用于生成 Web 界面,让您可以查看存储库。该 gitolite软件使用 SSH 密钥识别用户,并允许对存储库进行基于分支的访问控制,您可以根据需要对其进行控制。

    注意

    这些服务的设置超出了本手册的范围。但是,以下站点描述了如何执行设置:

    • Gitolite : 的信息 gitolite

    • 接口、前端和工具:有关如何为 Git 创建接口和前端的文档。

  5. 设置应用程序开发机器:如前所述,应用程序开发人员正在现有软件堆栈之上创建应用程序。以下是设置用于应用程序开发的机器的一些最佳实践:

    • 使用包含软件堆栈本身的预构建工具链。然后,在堆栈顶部开发应用程序代码。这种方法适用于少量相对孤立的应用程序。

    • 保持您的交叉开发工具链更新。您可以通过作为新工具链下载或通过包更新机制opkg提供更新来实现这一点,用于为现有工具链提供更新。如何以及何时执行此操作的确切机制取决于当地政策。

    • 使用本地安装到不同位置的多个工具链以允许跨版本开发。

  6. 设置核心开发机器:如前所述,核心开发人员处理操作系统本身的内容。以下是设置用于开发图像的机器的一些最佳实践:

    • 有OpenEmbedded构建系统的开发人员工作站可用,因此开发人员可以运行自己构建和直接重建软件堆栈。

    • 尽可能保持核心系统不变,并在核心系统之上分层进行工作。在升级到新版本的核心系统或板级支持包 (BSP) 时,这样做可以为您提供更高水平的可移植性。

    • 在特定项目的开发人员之间共享层,并包含定义项目的策略配置。

  7. 设置自动构建器:自动构建器通常是开发环境的核心。在这里,来自各个开发人员的更改汇集在一起​​并集中测试。基于这个自动化的构建和测试环境,可以做出关于发布的后续决策。Autobuilders 还允许对软件组件和回归识别和跟踪进行“持续集成”样式测试。

    有关更多信息和 buildbot 链接,请参阅“ Yocto Project Autobuilder ”。Yocto 项目团队发现此实现在此角色中运行良好。一个公开的例子是 Yocto Project Autobuilders,Yocto 项目团队使用它来测试项目的整体健康状况。

    该系统的特点是:

    • 提交破坏构建时突出显示。

    • 填充一个sstate 缓存,开发人员可以从中提取而不是需要本地构建。

    • 允许提交钩子触发器,在提交时触发构建。

    • 允许在 QuickEMULator (QEMU) 下触发自动映像启动和测试。

    • 支持增量构建测试和从头开始构建。

    • 共享输出,允许开发人员测试和历史回归调查。

    • 创建可用于发布的输出。

    • 允许安排构建,以便可以有效地使用资源。

  8. 设置测试机:使用少量共享的高性能系统进行测试。开发人员可以使用这些系统进行更广泛、更广泛的测试,同时继续使用他们的主要开发系统进行本地开发。

  9. 文档政策和变更流程: Yocto 项目使用分层结构和拉模型。有脚本可以创建和发送拉取请求(即create-pull-request和 send-pull-request)。该模型与其他开源项目一致,其中维护者负责项目的特定区域,并且由一个维护者处理最终的“树顶”合并。

    注意

    您还可以使用更集体的推送模型。该gitolite 软件很容易支持推和拉模型。

    与任何开发环境一样,重要的是记录所使用的策略以及任何主要项目指南,以便每个人都能理解它们。拥有结构良好的提交消息也是一个好主意,这通常是项目指南的一部分。当回顾过去并试图理解做出更改的原因时,良好的提交消息是必不可少的。

    如果您发现项目的核心层需要更改,则值得尽快与社区分享。很有可能,如果您发现需要进行更改,社区中的其他人也需要更改。

  10. 开发环境摘要:除了前面的步骤,以下是 Yocto 项目开发环境中的最佳实践:

    • 使用Git作为源代码控制系统。

    • 在对您的情况有意义的层中维护您的元数据。有关层的更多信息,请参阅Yocto 项目概述和概念手册中的“ Yocto 项目层模型”部分和“理解和创建层”部分。

    • 使用单独的 Git 存储库将项目的元数据和代码分开。有关这些存储库的信息,请参阅Yocto 项目概述和概念手册中的“ Yocto 项目源存储库”部分。有关如何为相关的上游 Yocto 项目 Git 存储库设置本地 Git 存储库的信息,请参阅“定位 Yocto 项目源文件”部分。

    • 为共享状态缓存 ( SSTATE_DIR ) 设置有意义的目录。例如,在同一组织中的开发人员使用的系统上设置 sstate 缓存,并在他们的机器上共享相同的源目录。

    • 设置一个 Autobuilder 并让它填充 sstate 缓存和源目录。

    • Yocto 项目社区鼓励您向项目发送补丁以修复错误或添加功能。如果您确实提交了补丁,请遵循项目提交指南以编写良好的提交消息。请参阅“提交对 Yocto 项目的更改”部分。

    • 尽快将更改发送到核心,因为其他人可能会遇到相同的问题。有关使用邮件列表的一些指南,请参阅“提交对 Yocto 项目的更改”部分中的列表。有关可用邮件列表的说明,请参阅Yocto 项目参考手册中的“邮件列表”部分。

2.2准备构建主机

本节提供了设置系统以用作使用 Yocto 项目进行开发的 构建主机的过程。您的构建主机可以是本机 Linux 机器(推荐),也可以是使用CROPS的机器(Linux、Mac 或 Windows),它利用了Docker 容器,也可以是能够运行 Windows Subsystem For Linux v2 的 Windows 机器( WSL)。

注意

Yocto 项目与适用于 Linux v1 的 Windows 子系统不兼容 。它与 WSLv2 兼容但未得到官方支持或验证。如果您仍然决定使用 WSL,请升级到 WSLv2。

一旦您的构建主机设置为使用 Yocto 项目,根据您想要完成的任务,需要进一步的步骤。有关如何准备板级支持包 (BSP) 开发和内核开发的信息,请参阅以下参考资料:

  • BSP 开发:请参阅Yocto 项目板支持包 (BSP) 开发人员指南中的“准备构建主机以使用 BSP 层”部分。

  • 内核开发:请参阅Yocto 项目 Linux 内核开发手册中的“准备构建主机以在内核上工作”部分。

2.2.1 搭建原生 Linux 主机

按照以下步骤准备一台本机 Linux 机器作为您的 Yocto 项目构建主机:

  1. 使用受支持的 Linux 发行版:您应该有一个合理的当前基于 Linux 的主机系统。使用最新版本的 Fedora、openSUSE、Debian、Ubuntu、RHEL 或 CentOS,您将获得最佳结果,因为这些版本经常针对 Yocto 项目进行测试并得到官方支持。有关正在验证的发行版及其状态的列表,请参阅Yocto 项目参考手册中的“支持的 Linux 发行版”部分和发行版支持的 wiki 页面 。

  2. 有足够的可用内存:您的系统应该有至少 50 GB 的可用磁盘空间来构建映像。

  3. 满足最低版本要求: OpenEmbedded 构建系统应该能够在任何具有以下 Git、tar、Python 和 gcc 版本的现代发行版上运行。

    • Git 1.8.3.1 或更高版本

    • 焦油 1.28 或更高

    • Python 3.6.0 或更高版本。

    • gcc 5.0 或更高版本。

    如果您的构建主机不满足这三个列出的版本要求中的任何一个,您可以采取措施准备系统,以便您仍然可以使用 Yocto 项目。有关信息,请参阅Yocto 项目参考手册中的“必需的 Git、tar、Python 和 gcc 版本”部分。

  4. 安装开发主机包:所需的开发主机包取决于您的构建主机以及您想对 Yocto 项目执行的操作。总的来说,如果您希望能够涵盖所有情况,所需的软件包数量会很大。

    有关所有场景所需包的列表,请参阅Yocto 项目参考手册中的“构建主机所需的包”部分。

完成前面的步骤后,您就可以继续在本机 Linux 机器上使用给定的开发路径了。如果您打算使用 BitBake,请参阅“克隆 poky 存储库”部分。如果您打算使用可扩展 SDK,请参阅Yocto 项目应用程序开发和可扩展软件开发工具包 (eSDK) 手册中的“使用可扩展 SDK ”一章。如果您想在内核上工作,请参阅Yocto Project Linux Kernel Development Manual。如果您打算使用烤面包机,请参阅烤面包机用户手册中的“设置和使用烤面包机”部分。

2.2.2设置使用 CROss 平台(CROPS)

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

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

  1. 确定您的构建主机需要什么: Docker是您需要在构建主机上安装的软件容器平台。根据您的构建主机,您可能需要安装不同的软件来支持 Docker 容器。转到 Docker 安装页面并阅读“支持的平台”中的平台要求,您的构建主机需要运行容器。

  2. 选择安装什么:根据您的构建主机是否满足系统要求,您需要安装“Docker CE Stable”或“Docker Toolbox”。大多数情况需要 Docker CE。但是,如果您的构建主机不符合要求(例如 Windows 10 或 Windows 10“家庭”版本),则必须安装 Docker Toolbox。

  3. 转到适用于您平台的安装站点:单击与构建主机的本机软件关联的 Docker 版本的链接。例如,如果您的构建主机运行的是 Microsoft Windows 版本 10 并且您想要 Docker CE 稳定版,请单击“支持的平台”下的该链接。

  4. 安装软件:了解所有先决条件后,您可以下载并安装相应的软件。按照特定机器的说明以及需要安装的软件类型进行操作:

    • 在 Windows 上 为满足要求的 Windows 构建主机安装Docker Desktop。

    • 在 MacOs 上 为满足要求的 Mac 构建主机安装Docker Desktop。

    • 在 CentOS 上 为运行 CentOS 发行版的 Linux 构建主机安装Docker Engine。

    • 在 Debian 上 为运行 Debian 发行版的 Linux 构建主机安装Docker Engine。

    • 安装Docker Engine for Fedora for Linux 构建运行 Fedora 发行版的主机。

    • 为 运行 Ubuntu 发行版的 Linux 构建主机安装Docker Engine for Ubuntu。

  5. 可选择使用 Docker 定位自己:如果您不熟悉 Docker 和容器概念,您可以在此处了解更多信息 - https://docs.docker.com/get-started/。

  6. 启动 Docker 或 Docker 工具箱:您应该能够启动 Docker 或 Docker 工具箱,并在您的开发主机上有一个终端 shell。

  7. 设置容器以使用 Yocto 项目:转到 https://github.com/crops/docker-win-mac-docs/wiki并按照特定构建主机(即 Linux、Mac 或 Windows)的说明进行操作。

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

一旦你建立了一个容器,一切都准备好了,就像你在本地 Linux 机器上运行一样。如果您打算使用 Poky 容器,请参阅“克隆 poky 存储库”部分。如果您打算使用可扩展 SDK 容器,请参阅Yocto 项目应用程序开发和可扩展软件开发工具包 (eSDK) 手册中的“使用可扩展 SDK ”一章。如果您打算使用 Toaster 容器,请参阅Toaster 用户手册中的“设置和使用 Toaster ”部分。

2.2.3设置使用适用于 Linux 的 Windows 子系统 (WSLv2)

使用适用于 Linux 的 Windows 子系统 (WSLv2),您可以创建一个 Yocto 项目开发环境,允许您在 Windows 上进行构建。您可以在 Windows 中设置 Linux 发行版,您可以在其中使用 Yocto 项目进行开发。

按照以下一般步骤准备使用 WSLv2 作为 Yocto Project 构建主机的 Windows 机器:

  1. 确保您的 Windows 10 机器能够运行 WSLv2: WSLv2 仅适用于 Windows 10 版本 > 18917。要检查您正在运行的版本版本,您可以在 Windows 上打开命令提示符并执行命令“ver”。

    C:\Users\myuser> verMicrosoft Windows [Version 10.0.19041.153]

    如果您的构建能够运行 WSLv2,您可以继续,有关此主题的更多信息或有关如何升级到 WSLv2 的说明,请访问Windows 10 WSLv2

  2. 在 Windows 10 中安装您选择的 Linux 发行 版一旦您知道您的 Windows 10 版本支持 WSLv2,您就可以从 Microsoft Store 安装您选择的发行版。打开 Microsoft Store 并搜索 Linux。虽然有多个 Linux 发行版可用,但假设您选择的是 Yocto 项目支持的发行版之一,如使用本机 Linux 主机的说明中所述。做出选择后,只需单击“获取”即可下载并安装发行版。

  3. 检查您的 Linux 发行版是否使用 WSLv2:打开 Windows PowerShell 并运行:

    C:\WINDOWS\system32> wsl -l -v
    NAME    STATE   VERSION
    *Ubuntu Running 2

    请注意 version 列,它表示您的发行版正在使用的 WSL 版本,在兼容系统上,这可以在任何时间点更改回来。

  4. 可选择在 WSL 上定位自己:如果您不熟悉 WSL,可以在此处了解更多信息 - https://docs.microsoft.com/en-us/windows/wsl/wsl2-about。

  5. 启动您的 WSL 发行版:从 Windows 开始菜单中只需启动您的 WSL 发行版,就像任何其他应用程序一样。

  6. 经常优化你的 WSLv2 存储:由于在 WSLv2 上处理存储的方式,未被释放的 Linux 发行版使用的存储空间并没有立即反映出来,并且由于 bitbake 大量使用存储,经过多次构建,你可能不知道你已经用完了空间。WSLv2 使用 VHDX 文件进行存储,这个问题可以通过经常手动优化这个文件来轻松避免,这可以通过以下方式完成:

    1. 找到您的 VHDX 文件的位置:首先,您需要找到发行版应用程序包目录,为此,请以管理员身份打开 Windows Powershell 并运行:

      C:\WINDOWS\system32> Get-AppxPackage -Name "*Ubuntu*" | Select PackageFamilyName
      PackageFamilyName
      -----------------
      CanonicalGroupLimited.UbuntuonWindows_79abcdefgh

      您现在应该在以下路径中替换 PackageFamilyName 和您的用户以找到您的 VHDX 文件:

      ls C:\Users\myuser\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79abcdefgh\LocalState\
      Mode                 LastWriteTime         Length Name
      -a----         3/14/2020   9:52 PM    57418973184 ext4.vhdx

      您的 VHDX 文件路径是: C:\Users\myuser\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79abcdefgh\LocalState\ext4.vhdx

    2. 优化您的 VHDX 文件:以管理员身份打开 Windows Powershell 以优化您的 VHDX 文件,首先关闭 WSL:

      C:\WINDOWS\system32> wsl --shutdown
      C:\WINDOWS\system32> optimize-vhd -Path C:\Users\myuser\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79abcdefgh\LocalState\ext4.vhdx -Mode full

      优化 VHDX 文件时应显示进度条,现在应在 Windows 资源管理器上正确反映存储。

注意

WSLv2 的当前实现没有对外部设备(例如通过 USB 端口连接的设备)的开箱即用访问,但它会自动将您的C:驱动器安装在/mnt/c/ (和其他)上,您可以使用它来共享要部署的工件后来通过 Windows 在硬件上闪烁,但您的构建目录不应位于此挂载点内。

设置好 WSLv2 后,一切都准备就绪,就像在本机 Linux 机器上运行一样。如果您打算使用可扩展 SDK 容器,请参阅Yocto 项目应用程序开发和可扩展软件开发工具包 (eSDK) 手册中的“使用可扩展 SDK ”一章。如果您打算使用 Toaster 容器,请参阅Toaster 用户手册中的“设置和使用 Toaster ”部分。

2.3定位 Yocto 项目源文件

本节向您展示如何定位、获取和配置使用 Yocto 项目所需的源文件。

注意

  • 有关 Yocto 项目中使用的 Git 的概念和介绍性信息,请参阅Yocto 项目概述和概念手册中的“ Git ”部分。

  • 有关 Yocto 项目源代码库的概念,请参阅Yocto 项目概述和概念手册中的“ Yocto 项目源代码库”部分。”

2.3.1访问源代码库

使用上游访问源存储库的副本是获取和使用 Yocto 项目版本的首选方法。您可以在https://git.yoctoproject.org/cgit/cgit.cgi/查看 Yocto 项目源代码库 。特别是,您可以poky 在https://git.yoctoproject.org/cgit/cgit.cgi/poky找到存储库。

使用以下过程查找pokyGit 存储库的最新上游副本 :

  1. 访问存储库:打开浏览器并转到 https://git.yoctoproject.org/cgit/cgit.cgi/以访问基于 GUI 的界面进入 Yocto 项目源存储库。

  2. 选择存储库:单击您感兴趣的存储库(例如poky)。

  3. 找到用于克隆存储库的 URL:在页面底部,记下用于克隆该存储库的 URL(例如https://git.yoctoproject.org/cgit/cgit.cgi/poky)。

    注意

    有关克隆存储库的信息,请参阅“克隆 poky 存储库”部分。

2.3.2获取发布索引

Yocto 项目维护一个发布索引区域,其中包含对 Yocto 项目有贡献的相关文件。这些文件不是 Git 存储库,而是表示给定组件的时间快照的 tarball。

注意

访问 Yocto 项目组件的推荐方法是使用 Git 克隆上游存储库并从本地克隆的存储库中工作。但是,本节记录了如何使用任何给定组件的 tarball 快照。

按照以下步骤查找并下载特定的 tarball:

  1. 访问发布索引:打开浏览器并转到 发布索引。该列表表示已发布的组件(例如bitbakesato等)。

    注意

    yocto目录包含已发布的 Poky tarball 的完整数组。poky版本索引中的目录历史上用于非常早期的版本,现在仅用于追溯完整性。

  2. 选择一个组件:单击您感兴趣的任何已发布组件(例如yocto)。

  3. 查找 Tarball:向下钻取以查找关联的 tarball。例如,单击yocto-3.3.2查看与 Yocto Project 3.3.2 版本相关的文件(例如 poky-hardknott-25.0.2.tar.bz2,这是已发布的 Poky tarball)。

  4. 下载压缩包单击压缩包以下载并保存给定组件的快照。

2.3.3使用下载页面

该Yocto计划网站使用“下载”页面,从中可以找到任何Yocto计划发行的下载压缩包。这些文件代表的不是 Git 存储库,而是类似于“访问版本索引”部分中描述的版本索引中的 tarball 的快照 tarball 。

  1. 转到 Yocto 项目网站:在浏览器中打开 Yocto 项目网站。

  2. 进入下载区:从靠近页面顶部的下拉“软件”选项卡菜单中选择“下载”项。

  3. 选择 Yocto 项目版本:使用“RELEASE”旁边的菜单来显示和选择最近或过去支持的 Yocto 项目版本(例如 hardknott、gatesgarth 等)。

    注意

    有关 Yocto 项目版本到版本号的“地图”,请参阅 版本wiki 页面。

    您可以使用“RELEASE ARCHIVE”链接来显示所有 Yocto Project 版本的菜单。

  4. 下载工具或板级支持包 (BSP):从“下载”页面,您也可以下载工具或 BSP。只需向下滚动页面并查找您需要的内容。

2.3.4访问每夜构建

Yocto 项目在https://autobuilder.yocto.io//pub/nightly/维护一个包含 tarball 版本的夜间构建区域。这些构建包括 Yocto 项目版本(“poky”)、工具链和支持机器的构建。

如果您想访问特定 Yocto 项目组件的夜间构建,请使用以下过程:

  1. 找到每夜构建的索引:打开浏览器并转到 https://autobuilder.yocto.io//pub/nightly/以访问每夜构建。

  2. 选择日期:单击您感兴趣的日期。如果您想要最新版本,请使用“CURRENT”。

  3. 选择构建:选择您感兴趣的领域。例如,如果您要查找最新的工具链,请选择“工具链”链接。

  4. 查找 Tarball:向下钻取以查找关联的 tarball。

  5. 下载压缩包单击压缩包以下载并保存给定组件的快照。

2.4克隆和检出分支

要使用 Yocto 项目进行开发,您需要在开发系统上本地安装一个版本。这组本地安装的文件 在 Yocto 项目文档中称为源目录。

创建源目录的首选方法是使用 Git克隆上游poky存储库的本地副本 。通过上游存储库的克隆副本工作,您可以回馈 Yocto 项目或仅使用开发分支上的最新软件。由于 Git 维护并创建了一个具有完整更改历史记录的上游存储库,并且您正在使用该存储库的本地克隆,因此您可以访问上游存储库中使用的所有 Yocto 项目开发分支和标签名称。

2.4.1克隆poky仓库

按照以下步骤创建上游Poky Git 存储库的本地版本 。

  1. 设置您的目录:将您的工作目录更改为要创建poky.

  2. 克隆存储库:以下示例命令克隆 poky存储库并为本地存储库使用默认名称“poky”:

    $ git clone git://git.yoctoproject.org/poky
    Cloning into 'poky'...
    remote: Counting objects: 432160, done.
    remote: Compressing objects: 100% (102056/102056), done.
    remote: Total 432160 (delta 323116), reused 432037 (delta 323000)
    Receiving objects: 100% (432160/432160), 153.81 MiB | 8.54 MiB/s, done.
    Resolving deltas: 100% (323116/323116), done.
    Checking connectivity... done.

    除非您指定特定的开发分支或标签名称,否则 Git 会克隆“master”分支,从而生成“master”最新开发更改的快照。有关如何检出特定开发分支或如何根据标签名称检出本地分支的信息,请分别参阅“在 Poky 中按分支检出”和“在 Poky 中按标签检出”部分。

    创建本地存储库后,您可以切换到该目录并检查其状态。该master分支是默认选中的:

    $ cd poky
    $ git status
    On branch master
    Your branch is up-to-date with 'origin/master'.
    nothing to commit, working directory clean
    $ git branch
    * master

    您的本地 poky 存储库与克隆时的上游 poky 存储库相同。当您使用本地分支时,您可以定期使用该 命令来确保您与上游分支保持同步。git pull --rebase

2.4.2在 Poky 中按分支检出

当您克隆上游 poky 存储库时,您可以访问其所有开发分支。存储库中的每个开发分支都是独一无二的,因为它从“主”分支分叉出来。要在本地查看和使用特定开发分支的文件,您需要知道分支名称,然后专门检查该开发分支。

注意

按分支名称签出一个活动的开发分支可以在您签出时为您提供该特定分支的快照。可以在检出后发生的分支之上进一步开发。

  1. 切换到 Poky 目录:如果您有本地 poky Git 存储库,请切换到该目录。如果您没有 poky 的本地副本,请参阅“克隆 poky 存储库”部分。

  2. 确定现有分支名称:

    $ git branch -a
    * master
    remotes/origin/1.1_M1
    remotes/origin/1.1_M2
    remotes/origin/1.1_M3
    remotes/origin/1.1_M4
    remotes/origin/1.2_M1
    remotes/origin/1.2_M2
    remotes/origin/1.2_M3
    . . .
    remotes/origin/thud
    remotes/origin/thud-next
    remotes/origin/warrior
    remotes/origin/warrior-next
    remotes/origin/zeus
    remotes/origin/zeus-next
    ... and so on ...

  3. 签出分支:签出您要在其中工作的开发分支。例如,要访问 Yocto Project 3.3.2 Release (Hardknott) 的文件,请使用以下命令:

    $ git checkout -b hardknott origin/hardknott
    Branch hardknott set up to track remote branch hardknott from origin.
    Switched to a new branch 'hardknott'

    前面的命令检查“hardknott”开发分支并报告该分支正在跟踪上游“origin/hardknott”分支。

    以下命令显示现在是本地 poky 存储库一部分的分支。星号字符表示当前签出工作的分支:

    $ git branchmaster* hardknott

2.4.3在 Poky 中按标签签出

与分支类似,上游存储库使用标签来标记与开发分支中的重要点(即发布点或发布阶段)相关联的特定提交。您可能希望基于存储库中的这些点之一设置本地分支。除了使用标签名称之外,该过程类似于按分支名称签出。

注意

根据标签检出分支可为您提供一组稳定的文件,不受标签上方分支上的开发影响。

  1. 切换到 Poky 目录:如果您有本地 poky Git 存储库,请切换到该目录。如果您没有 poky 的本地副本,请参阅“克隆 poky 存储库”部分。

  2. 获取标签名称:要根据标签名称签出分支,您需要将上游标签提取到本地存储库中:

    $ git fetch --tags
    $

  3. 列出标签名称:您现在可以列出标签名称:

    $ git tag
    1.1_M1.final
    1.1_M1.rc1
    1.1_M1.rc2
    1.1_M2.final
    1.1_M2.rc1...
    yocto-2.5
    yocto-2.5.1
    yocto-2.5.2
    yocto-2.5.3
    yocto-2.6
    yocto-2.6.1
    yocto-2.6.2
    yocto-2.7
    yocto_1.5_M5.rc8

  4. 查看分行:

    $ git checkout tags/yocto-3.3.2 -b my_yocto_3.3.2
    Switched to a new branch 'my_yocto_3.3.2'
    $ git branchmaster
    * my_yocto_3.3.2

    前面的命令创建并签出名为“my_yocto_3.3.2”的本地分支,该分支基于上游 poky 存储库中具有相同标签的提交。在此示例中,您通过该checkout命令在本地可用的文件 是 Yocto 项目 3.3.2 发布时“hardknott”开发分支的快照。

2设置使用 Yocto 项目相关推荐

  1. 4.Yocto项目概念

    目录 4.1约克托项目组件 4.1.1比特贝克 4.1.2食谱recips 4.1.3类class 4.1.4配置conf 4.2层layer 4.3开放式构建系统概念 4.3.1用户配置 4.3.2 ...

  2. i.MX Yocto项目用户指南 -- 下

    i.MX Yocto项目用户指南 – 下 5映像构建 本节提供了构建映像的详细信息和过程. 5.1构建配置 i. MX提供了一个脚本fsl-setup-release.sh,它简化了i.MX机器的设置 ...

  3. 利用Yocto构建嵌入式Linux教程01--第一个Yocto项目构建

    大家好,从今日开始,计划写一个利用Yocto构建嵌入式Linux的教程,算是对个人工作和学习的一个总结. 本教程选用的Yocto版本为3.0.4,我使用的Linux发行版为Ubuntu 18.04 ( ...

  4. BeagleBone 实施 Yocto 项目

    特点 Yocto 项目生产工具和流程,支持为嵌入式软件创建 Linux 发行版,独立于架构. BeagleBone Black 是一个平台,允许用户根据自己的喜好快速轻松地执行安装和自定义 从 Yoc ...

  5. 构建YOCTO项目详细教程

    系统要求 最少 4-8 GB 内存 磁盘剩余空间至少 60-80 GB CentOS 7.6 或者其他支持Linux发行版 安装软件依赖( CentOS-7): sudo yum install -y ...

  6. Visual Stdio 无法直接启动带有“类库输出类型”的项目若要调试此项目,请在此解决方案中添加一个引用库项目的可执行项目。将这个可执行项目设置为启动项目!

    Visual Stdio 无法直接启动带有"类库输出类型"的项目若要调试此项目,请在此解决方案中添加一个引用库项目的可执行项目.将这个可执行项目设置为启动项目! 参考文章: (1) ...

  7. 设置弹性框项目之间距离的更好方法

    本文翻译自:Better way to set distance between flexbox items To set the minimal distance between flexbox i ...

  8. Qt Creator设置一个Autotools项目

    Qt Creator设置一个Autotools项目 设置一个Autotools项目 设置一个Autotools项目 AutotoolsProjectManager是用于自动工具支持的插件.默认情况下它 ...

  9. YOCTO项目介绍:通过提供模版、工具和方法帮助开发者创建基于linux内核的定制系统

    目录 YOCTO项目介绍 配置内核 build配套 Yocto ,是一个开源社区.它通过提供模版.工具和方法帮助开发者创建基于linux内核的定制系统,支持ARM, PPC, MIPS, x86 (3 ...

最新文章

  1. Kong APIGW — Plugins — Traffic Control
  2. yum安装mysql
  3. LiveGBS无插件播放页面的集成----单独的播放器样式
  4. 《乌合之众》读书笔记(part3)--在群体当中,个人的利益极少会成为强大的动因
  5. php curl重用,使用PHP CURL解析负载较重的站点?
  6. SSL/TLS深度解析--测试TLS/SSL加密
  7. c语言数据驱动编程,如何学习智能手机驱动编程
  8. J2EE的核心API与组件
  9. 字符串,那些你不知道的事 1
  10. Windows UWP开发系列 – 控件默认样式
  11. 计算机软件毕业设计项目源码大全
  12. json 格式化工具/网站
  13. 网件刷breed_小白爱折腾 篇二:矿渣小娱C1刷breed以安装固件(适用其他路由器)...
  14. 四旋翼无人机学习第5节--STM32最小系统外围电路分析
  15. CSS入门4 文本样式
  16. 数据链路层 随机接入-CSMA/CA协议
  17. 我的Ubuntu装机配置
  18. 交公粮了:我经常逛的技术网站
  19. Arcgis ToolBox学习之三——Tabulate Intersection
  20. mysql的decimal类型与Java的BigDecimal

热门文章

  1. Z-Stack + OSAL操作系统
  2. vrchat合并账号
  3. 回复差评经典话术模板
  4. PHP系统常量及判断某常量是否被定义
  5. QtXlsx详细配置
  6. 数组系列—连续数中寻找缺失的数字
  7. MT7601U芯片怎么样?MT7601U处理器参数介绍
  8. AI 可以从人类思维中学习的11个启示
  9. 10G数据不用框架快速去重
  10. 服务器虚拟化数据怎么转移,从物理服务器迁移到虚拟机的两大方案