大家好,从今日开始,计划写一个利用Yocto构建嵌入式Linux的教程,算是对个人工作和学习的一个总结。

本教程选用的Yocto版本为3.0.4,我使用的Linux发行版为Ubuntu 18.04
(LTS),图中所有示例为实际测试截图,有问题请给我留言。

更多嵌入式精彩内容,请关注微信公众号:嵌入式Linux那些事儿

1 构建主机要求

1.1 支持的Linux发行版

Yocto Project版本已针对下表中Linux发行版进行了测试。所以推荐大家采用下面的Linux发行版来构建你的Yocto项目,其他发行版可能会遇到问题。
Yocto项目与Windows Linux子系统(WSL)不兼容,不要使用运行WSL的构建主机。

Ubuntu 16.04 (LTS)
Ubuntu 18.04 (LTS)
Ubuntu 19.04
Fedora 28
Fedora 29
Fedora 30
CentOS 7.x
Debian GNU/Linux 8.x (Jessie)
Debian GNU/Linux 9.x (Stretch)
Debian GNU/Linux 10.x (Buster)
OpenSUSE Leap 15.1

1.2 电脑硬件要求

  • 虽然Yocto项目对于32位和64位的CPU都是支持的,但还是推荐使用64位CPU的电脑。Yocto项目的构建系统还可以利用多线程来并行处理构建任务,所以,带有多个CPU或者一个多核CPU的构建主机都能极大地减少构建时间。
  • 推荐的内存是4GB或者更多。
  • Yocto项目对硬盘空间要求非常大。对于完整的构建过程,建议预留120G的可用空间。使用虚拟机的朋友看到这个数字是不是要崩溃。
  • 互联网连接肯定是带宽越大越好,这个应该现在都不成问题。最好有翻墙软件,因为软件包的源地址都是国外,没有也没关系,以后我会告诉大家怎么解决软件包下载失败的问题。

1.3 构建主机需要安装的软件包

1.3.1 Ubuntu和Debian

$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \build-essential chrpath socat cpio python python3 python3-pip python3-pexpect \xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev \pylint3 xterm

1.3.2 Fedora

$ sudo dnf install gawk make wget tar bzip2 gzip python3 unzip perl patch \diffutils diffstat git cpp gcc gcc-c++ glibc-devel texinfo chrpath \ccache perl-Data-Dumper perl-Text-ParseWords perl-Thread-Queue perl-bignum socat \python3-pexpect findutils which file cpio python python3-pip xz python3-GitPython \python3-jinja2 SDL-devel xterm

1.3.3 openSUSE

$ sudo zypper install python gcc gcc-c++ git chrpath make wget python-xml \diffstat makeinfo python-curses patch socat python3 python3-curses tar python3-pip \python3-pexpect xz which python3-Jinja2 Mesa-libEGL1
$ sudo pip3 install GitPython libSDL-devel xterm

1.3.4 CentOS

$ sudo yum install -y epel-release
$ sudo yum makecache
$ sudo yum install gawk make wget tar bzip2 gzip python unzip perl patch \diffutils diffstat git cpp gcc gcc-c++ glibc-devel texinfo chrpath socat \perl-Data-Dumper perl-Text-ParseWords perl-Thread-Queue python34-pip xz \which SDL-devel xterm
$ sudo pip3 install GitPython jinja2

1.4 对于git、tar、python的最低版本要求

  • Git 1.8.3.1
  • tar 1.27
  • Python 3.4.02

2 下载Yocto

$ mkdir ~/yocto
$ cd ~/ycoto
$ git clone -b zeus git://git.yoctoproject.org/poky.git
$ cd poky

3 准备构建环境

Yocto提供了脚本oe-init-build-env来创建新的构建环境。该脚本设置构建环境的目录结构,并初始化配置文件。

$ source oe-init-build-env <builddir>

执行该命令,将在当前目录中以由参数提供的名字创建新的构建环境。如果省略该参数,脚本会默认使用build作为名字。并且脚本会改变当前目录到构建目录。新创建的构建环境里面,生成了conf目录,详情如下:其中的conf/local.conf文件,保存了定制你的嵌入式Linux的各个变量设置。对于我们的第一个Yocto项目,建议修改以下两个变量。

  • DL_DIR:软件包下载的目录,默认的设置是在构建环境目录下的downloads目录,建议修改到构建环境以外的目录,这样,当你新建一个构建环境时,不用重复下载这些软件包。(Yocto项目构建的大部分时间都浪费在下载这些软件包上)
  • SSTATE_DIR:共享的状态缓存文件目录,默认的设置是在构建环境目录下的sstate-cache目录,建议修改到构建环境以外的目录。因为在构建过程中,很多任务会产生大量的中间输出,而这些中间输出对将来其他的构建来说时可以重用的,这样可以大大加速构建过程。

4 开始构建

在构建环境的顶级目录调用BitBake指定构建目录。对于第一个构建,我使用了带有图形用户界面的完整Linux操作系统作为构建目标。

$ bitbake core-image-sato

5 验证构建结果
Yocto默认用的目标机器是qemu,Yocto提供了一个脚本来启动新构建的Linux系统。

$ runqemu qemux86-64

启动效果如下图:

扫描二维码获取更多精彩:嵌入式Linux那些事儿

利用Yocto构建嵌入式Linux教程01--第一个Yocto项目构建相关推荐

  1. 利用Yocto构建嵌入式Linux教程3_1--Yocto构建系统的配置文件

    本教程选用的Yocto版本为3.0.4,我使用的Linux发行版为Ubuntu 18.04 (LTS),图中所有示例为实际测试截图,有问题请给我留言.微信公众号: 嵌入式Linux那些事儿 1 Yoc ...

  2. 利用Yocto构建嵌入式Linux教程02--Yocto的一些基本概念介绍

    本教程选用的Yocto版本为3.0.4,使用的Linux发行版为Ubuntu 18.04 (LTS),图中所有示例为实际测试截图,有问题请给我留言.微信公众号:嵌入式Linux那些事儿 在Yocto项 ...

  3. iMX6Ull采用Yocto构建嵌入式Linux系统(三)

    获取Yocto 设置Git用户名和密码 Yocto项目采用repo管理各个git库的方式进行管理.因此,除了使用repo工具外,还需要使用到Git.使用Git前,需要设置Git的用户名和密码: $ g ...

  4. 用QEMU构建嵌入式LINUX系统

    Table of Contents Qemu –从源头建造 ARM工具链 Linux内核 构建文件系统 通过NFS使用根文件系统 配置QEMU Tap网络 创建运行脚本 推荐阅读:<在CentO ...

  5. 嵌入式系统实验 构建嵌入式Linux系统,《嵌入式系统与开发》构建嵌入式Linux系统-实验报告.doc...

    <嵌入式系统与开发>构建嵌入式Linux系统-实验报告 <嵌入式数据库sqlite移植及使用> 实验报告 学生姓名: 陈 彤 学 号: 1座机电话号码 专业班级: 130044 ...

  6. 构建嵌入式linux系统_用于构建嵌入式Linux系统的4种工具

    构建嵌入式linux系统 Linux正在被部署到比Linus Torvalds在他的宿舍里工作的设备更多的设备中. 受支持的各种芯片架构令人震惊,并导致各种大小的设备都使用Linux. 从庞大的IBM ...

  7. 基于AT91SAM9G20构建嵌入式Linux系统

    本文中使用的目标平台AT91SAM9G20是Atmel公司使用ARM926EJ-S处理器内核开发的一块SoC嵌入式微处理器,主频达到400MHz,具有Atmel 先进的外设DMA 和分布式存储器架构, ...

  8. 基于qemu-riscv从0开始构建嵌入式linux系统ch10. qemu之virtio与fw_cfg

    基于qemu-riscv从0开始构建嵌入式linux系统ch10. qemu之virtio与fw_cfg 上一节我们已经基本完成了uboot的移植,下一步自然就是移植linux kernel.在真实的 ...

  9. 基于qemu-riscv从0开始构建嵌入式linux系统ch3. 添加中断控制器、串口、pflash支持

    基于qemu-riscv从0开始构建嵌入式linux系统ch3. 添加中断控制器.串口.pflash支持 添加串口支持 真实板卡的初期调试中,串口打印可谓神器,几乎所有的SOC都会带有串口这个外设,因 ...

最新文章

  1. Python构建lassocv模型并输出Rad-score公式
  2. 面对不可避免的故障,我们造了一个“上帝视角”的控制台
  3. 计算机技术题目,计算机技术题目.doc
  4. 如何安装mysql5.7.21_Linux 安装MySql 5.7.21 操作步骤
  5. [Unity][ShaderGraph][FlowCanvas] SetFloat 无效:通过脚本控制 shader 的动态参数时需要使用参数的引用名
  6. Intel Haswell/Broadwell架构/微架构/流水线 (6)-Unlamination微指令离解过程
  7. uwp post php,在UWP應用程序使用PHP腳本
  8. 2、数字,字符串,列表,字典,集合
  9. poj 3074 Sudoku
  10. Atitit.cto 与技术总监的区别
  11. pickerView的简单使用
  12. html中多一条黑线,Word页面中上下各有一条黑线怎样去掉?
  13. 【摩斯电码】我是如何通过一张小纸条渗透进了妹子的心
  14. macf1-f12按键失灵_枕头2-1-0失灵
  15. MODIS数据wget下载
  16. 最新版继续教育学习软件下载地址
  17. pdf阅读工具使用提醒
  18. 【纪录】Proxychain4 使用部署以及利用 ss 加速下载操作
  19. 一个基于BCH的付费电驴下载的设想
  20. MySQL 三万字精华总结 + 面试100 问,吊打面试官绰绰有余

热门文章

  1. 【报告分享】2021快手内容生态半年报-快手(附下载)
  2. Qt学习之界面UI编程应用
  3. 【互动媒体】”十二个一“的文艺创作的文本分析与可视化
  4. 大赛来袭 | 千万项目商机+超40W大赛奖金,快来报名吧!
  5. js 简易的筋斗云,图片动画
  6. 查看笔记本电脑型号等数据
  7. JAVA-GetDay
  8. 硬盘柱面损坏怎么办_硬盘在坏道检测中出现了要多少个损坏柱面才说明这个硬盘废了?...
  9. 如何正确获得Android内外SD卡路径
  10. Python - 深度学习系列2-人脸比对 Siamese