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

大家好,从今日开始,计划写一个利用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那些事儿

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u013921164/article/details/111941111
今日推荐