前言 Yocto的简介就不抄写了, 反正我光看介绍并不明白Yocto到底是干吗的. 但应该确确实实让定制和开发嵌入式Linux系统变得更方便, 招聘要求里会Yocto都是加分项. 所以决定动手实践一下, 先有个感性认识再说.
下文基本按照官网的 Yocto Project Quick Start 步骤而来.
第一步, 安装 Yocto Project 安装 Yocto Project 有两个方法:
使用 CROPS (CROss PlatformS), 直观的说, 就是基于Docker平台进行安装
我并没有采用这种方法, 因为手头已经有现成的Ubuntu系统了
Docker相关内容, 可以参考我的笔记 Docker 初学笔记
第二个方法就是基于Linux系统安装
此文基于 Ubuntu 16.04 32bit 桌面版
基本要求: 50G的硬盘空间, 建议预留100G
支持主流Linux系统, 如 Fedora, CentOS, Debian, Ubuntu
Git 1.8.3.1或以上版本
tar 1.27或以上版本
python 3.4.0或以上版本
$ sudo apt-get update $ 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 libsdl1.2-dev xterm $ git --version git version 2.7.4 $ tar --version tar (GNU tar) 1.28 $ python3 Python 3.5.2 >>> exit () $ sudo apt install git $ sudo apt install tar $ sudo apt install python3
这样就准备好了安装环境. 然后安装 Yocto Project
$ mkdir ~/yocto $ cd ~/yocto $ git clone git://git.yoctoproject.org/poky ... Checking connectivity... done . $ sudo chmod -R +777 poky/
第二步, 定制Linux镜像文件 安装好 Yocto Project 后, 就需要体验一把定制Linux镜像
# pwd = ~/yocto/poky/ # 创建一个git分支, 基于此分支制作自己的Linux镜像 $ sudo git checkout -b rocko origin/rocko $ git branch master * rocko # 执行脚本, 创建了一些默认配置 $ source oe-init-build-env You can now run 'bitbake <target>' Common targets are: core-image-minimal core-image-sato meta-toolchain meta-ide-support # 显示后续操作的说明, 并自动进入 build 目录 # pwd = ~/yocto/poky/build $ ls conf/ # 三个.conf文件, 教程简单介绍了一下 local.conf 里的 MACHINE 和 PACKAGE_CLASSES $ vim conf/local.conf # 看一下配置文件, 有个直观感受. 先用默认值, 不去修改 $ bitbake core-image-sato # 第一次的话, 会非常非常慢, 下载源码加编译, 可能花费几个小时... # 烘焙(bitbake)好image后, 在虚拟环境QEMU下看看效果 $ runqemu qemux86
至此, 体验完成. 实际硬件环境的流程基本一致, 就是还要考虑烧录和启动的问题. 这是嵌入式Linux开发的基本能力, 略过不表.
一些弯路第一个弯路是python版本问题, 造成安装软件失败 直接运行python, 默认是2.7. 然后想着需要改成3.5版本的. 按照网上教程, 修改python软链接, 但会导致apt安装软件失败. 原因是有些软件依赖于python2.7, 改为3.5后, 安装过程会发生语法错误. 具体可参考 linux软件的安装和管理 的 X not fully installed or removed
$ ll /usr/bin/python* lrwxrwxrwx 1 root root 9 Nov 24 07:18 /usr/bin/python -> python2.7* $ sudo rm /usr/bin/python $ sudo ln -s /usr/bin/python3.5 /usr/bin/python $ ll /usr/bin/python* lrwxrwxrwx 1 root root 9 Nov 24 07:18 /usr/bin/python -> python3.5* $ python Python 3.5.2 (default, Nov 23 2017, 16:37:01)
第二个弯路是安装虚拟机的时候, 只给了20G的空间. 扩盘的方法如下:扩大Vmware虚拟机中Ubuntu系统磁盘空间的方法 , 建议直接用可视化的软件
$ sudo apt install gparted $ sudo gparted # 重启后自动挂载, 可以格式化并重命名为 extend # 自动挂载路径为 /media/user-name/extend, 没有重命名的话, 是一长串ID $ sudo chmod +777 /media/draapho/extend $ sudo ln -s /media/draapho/extend ~/share/extend # 改下权限, 建立软连接方便操作. # 由于空间要求, yocto项目就放在这个盘里面.
参考资料