欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

从0到1制作Yocto系统

时间:2023-07-23

前言

yocto项目是一套用来给多种处理器自定义制作操作系统发行版的开源协作工程。在嵌入式linux领域,它非常具有前景。嵌入式linux由于处理器多样,且更新换代快,个体之间差异大的原因,整套操作系统需要频繁更新。操作系统适配的软件繁多,如果从操作系统内核、操作系统工具、操作系统各种软件都移植一遍,工作量大,耗时耗力,而且操作系统上运行的各种软件更新也快,要维护软件的更新,如果一整套工作都有一个公司或者几个公司来做,工作量巨大。yocto项目的的出发点就是为嵌入式linux操作系统的制作提供一种统一的规范,集合各个公司的优势,不同的公司做自己擅长的事,减少重复劳动,如芯片公司开发芯片相关的bsp部分、软件公司提供软件方面的支持、更新,并通过统一的规范把它们组合起来。这样做的好处是非常明显的,芯片公司可以快速的为它们新的处理器适配一套定制的操作系统,产品公司可以快速自定义选择处理器与各个版本的软件组合出自己需要的整套操作系统。

更详细的关于Yocto项目的简介,请参考上一篇文章 Yocto项目简介

本文介绍如何从0到1组合出一套用于X86 处理器的操作系统。

参考资料链接

官网:

Yocto Project – It's not an embedded Linux distribution – it creates a custom one for you

快速开始文档:

Yocto Project Quick Build — The Yocto Project ® dev documentation

layers搜索页:

OpenEmbedded Layer Index - layers

recipes搜索页:

OpenEmbedded Layer Index - recipes

yocto的一些资源索引页

Source Repositories

比如https://git.yoctoproject.org/meta-dpdk/

yocto类的书籍少,上述链接可以了解到一些书里没有的最新的更新。

环境准备

我用的是ubuntu 20.04,yocto工程占用硬盘较大,unbuntu系统的硬盘要足够大,官网要求至至少50G,我有200G。

需要安装编译系统时的必要工具,官网提供了命令,要安装齐全,否则可能会在编译时报错。

sudo apt-get install gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3 xterm python3-subunit mesa-common-dev zstd liblz4-tool

源码获取

 1、创建工程目录

         mkdir ~/yocto

 2、下载yocto参考工程poky

       cd ~/yocto

       git clone git://git.yoctoproject.org/poky

       cd poky

      获取当前git 工程的tag

       git fetch --tags

      查看当前有哪些tag

      git tag

      选取zeus tag,切换到对应tag,并建立本地分支zeus-22.0.4

      git checkout tags/zeus-22.0.4 -b zeus-22.0.4

      git pull

3、下载intel bsp layer

     cd ~/yocto

     git clone git://git.yoctoproject.org/meta-intel

     同上面的步骤一样,

    cd meta-intel

    git fetch --tags

     git tag

     选取zeus tag,切换到对应tag,并建立本地分支zeus-22.0.0

     git checkout tags/zeus-22.0.0 -b zeus-22.0.0

    git pull

4.  配置工程编译环境变量

    cd ~/yocto

   source  poky/oe-init-build-env

   配置完变量后,自动创建build目录,并进入

   source  poky/oe-init-build-env

   终端打印如下:

### Shell environment set up for builds、###You can now run 'bitbake 'Common targets are:    core-image-minimal    core-image-sato    meta-toolchain    meta-ide-supportYou can also run generated qemu images with a command like 'runqemu qemux86'Other commonly useful commands are: - 'devtool' and 'recipetool' handle common recipe tasks - 'bitbake-layers' handles common layer tasks - 'oe-pkgdata-util' handles common target package tasks

5、添加meta_intel layer到工程

打开build目录下conf/bblayers.conf,添加meta-intel目录到BBLAYERS

BBLAYERS ?= "

  /home/oem/yocto/poky/meta

  /home/oem/yocto/poky/meta-poky

  /home/oem/yocto/poky/meta-yocto-bsp

  /home/oem/yocto/meta-intel

  "

上面就是yocto添加layer的方法,当你需要添加新的软件到yocto系统时,你首先得从网上找到相关的layer,再添加到你工程的bblayers.conf文件中。

6、指定工程的处理器

打开build目录下conf/local.conf ,修改

MACHINE = "intel-skylake-64",表示此次编译的处理器架构是intel-skylake-64

默认的处理器为qemux86-64,这里我选一个高级一点的处理器做测试。

在meta-intel/conf/machine/目录下有如下几个文件,代表当前meta-intel层支持的MACHINE 种类有intel-core2-32、intel-corei7-64、intel-skylake-64。

include  intel-core2-32.conf  intel-corei7-64.conf  intel-skylake-64.conf

一般服务器使用的都是skylake系列芯片,由于要在服务器上做测试,所以选取intel-skylake-64处理器类型。

系统编译

参考上一节第4步中,source  poky/oe-init-build-env 后,控制台打印

### Shell environment set up for builds、###You can now run 'bitbake 'Common targets are:    core-image-minimal    core-image-sato    meta-toolchain    meta-ide-supportYou can also run generated qemu images with a command like 'runqemu qemux86'Other commonly useful commands are: - 'devtool' and 'recipetool' handle common recipe tasks - 'bitbake-layers' handles common layer tasks - 'oe-pkgdata-util' handles common target package tasks

编译工程可以使用命令:

bitbake core-image-sato

执行命令后,工程会自动从网络下载工程需要的各种源代码,如kernel、gibc、gcc等等虽有的源码,并根据配置编译。

编译结果放在build目录下的tmp/deploy/images/intel-skylake-64,目录下有内核文件bzImage,有文件系统,有内核module文件,有系统安装镜像文件。

默认编译过程中下载好的源码包放在build目录下的downloads:

测试编译好的系统

tmp/deploy/images/intel-skylake-64/目录下有各种各样格式的文件,其中×.hddimg为u盘安装系统,刻录到u盘后就是个系统安装盘,可以选择安装到硬盘,也可以选择直接启动。

我的目录下,镜像文件为:

core-image-sato-intel-skylake-64-20220123111353.hddimg

刻录到u盘:

sudo dd if=core-image-sato-intel-skylake-64-20220123111353.hddimg of=/dev/sdb status=progress

插入u盘到skylake-64的设备,选择从u盘的uefi启动。

以上就是我们从0到1给服务器做的最初始的系统,如果你需要给你的系统中自定义添加新的软件,或者修改内核配置,那你还需要继续学习。

感兴趣的同学加关注,欢迎一起交流学习

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。