Yocto 开发环境推荐使用Linux + docker 的方式,请先安装Linux 基础OS,用户根据自己的需要选择Ubuntu,Centos等Linux 发行版本,具体安装方法本文不做详细介绍。安装完成后,在此OS 的基础上继续安装docker,然后构建docker image,将相关的开发环境构建在docker 里面,后续的开发都基于docker 内的环境进行,具体的构建方式如下。
使用官方安装脚本自动安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
点击下载 linux-dev-master.7z 解压后进入linux-dev-master 目录,打开Dockerfile ,修改用户名和ID,»your the same user name asyour host»修改成用户host os的用户名:
ENV DOCKER_USER2 "your the same user name asyour host"
«your user id» 的值记录在/etc/exports,打开后搜索自己的用户名所在的行,anonuid 字段的值即使ID。
ENV USER2_ID "your user id"
运行以下命令构建自己的环境。
docker build -t linux-dev-base:base .
这个docker镜像可以编译thead发布的 buildroot、yocto等Linux SDK。
默认密码为 123
查看构建的dokcer image,正常情况下可以看到如下结果:
xie@xie:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
linux-dev-base base 32207ad97b7a 12 minutes ago 2.13GB
ubuntu 18.04 886eca19e611 2 weeks ago 63.1MB
docker 启动可以使用 docker run 命令
docker run -u thead -dt --name linux-dev-{your_name} -v {your_lock_home}:{your_home} linux-dev-base:base /bin/bash
注意:可以通过-v 选项挂载host 的一个或多个目录,起到类似共享文件的作用,其中: your_name: docker container 名称,起一个自己的名字,不要和别人重名 your_lock_home: host 本地路径 your_home: 本地路径在docker 里的mount 路径
查询启动的docker container
docker ps |grep linux-dev-base
正常情况下能看到:
xie@xie:~$ docker ps |grep linux-dev-base
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
017e0217cab0 linux-dev-base:base "/bin/bash" 3 minutes ago Up 3 minutes 22/tcp linux-dev
执行如下命令登录docker。
docker exec -it linux-dev-{your_name} /bin/bash
此时已ssh 登录到docker 里的ubuntu 18.04,运行以下命令查询系统版本
thead@017e0217cab0:/$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.6 LTS
Release: 18.04
Codename: bionic
在启动docker 一节中,对host 本地$HOME目录和 docker guest $HOME 做了映射,因此在docker 的home/thead目录下能看host $HOME 目录下的所有内容,并且所有在docker 该目录下的文件与host 完全同步,docker 关闭或删除都不受影响。
在没有Docker Registry时,可以通过docker save 和 docker load 命令完成镜像迁移的过程,先将镜像保存为压缩包,然后在其他位置再加载压缩包。
在网络不受限制的host上执行以下命令生成docker image
cd linux-dev-master
docker build -t linux-dev-base:base .
查看生成的docker image,确认image 生成
docker images linux-dev-base:base
开始保存image
docker save linux-dev-base:base| gzip >linux-dev-base:base.tar.gz
这步后可以在命令执行的当前目录下生成linux-dev-base:base.tar.gz
将tar包 拷贝linux-dev-base:base.tar.gz 到目标机上,然后用docker load 命令导入image
docker load -i linux-dev-base\:base.tar.gz
此时在迁移目标机上就可以看到image 了。
docker images linux-dev-base:base
迁移完毕后,就可以启动docker container 了,比如:
sudo docker run --network=host -u jinxie.jx -dt --name jinxie.jx_docker-ubuntu18 -v /home/jinxie.jx:/home/jinxie.jx -v /disk11/jinxie.jx:/home/jinxie.jx/workspace linux-dev-base:base /bin/bash
再:
sudo docker exec -it jinxie.jx_docker-ubuntu18 /bin/bash
在日常开发中,用户需设置ssh key,git 配置等其他内容,请配置请参考《新手上手指南》