在 yocto 上构建 docker
Posted
技术标签:
【中文标题】在 yocto 上构建 docker【英文标题】:Building docker on yocto 【发布时间】:2017-06-17 23:37:15 【问题描述】:尝试 时出现以下错误
ERROR: Task 104 (/var/mshehery/Release_7.3/sheheryar/yocto/fido/meta/meta-virtualization/recipes-devtools/go/golang-cross_1.3.bb, do_compile) failed with exit code '1'
我正在使用 yocto 的“fido”分支,元虚拟化和元开放嵌入。谁能详细说明这个问题?
除了上面的错误,我还得到了一些日志数据。我正在发布可能会深入了解问题的部分
日志数据如下:
| DEBUG: Executing shell function do_compile
| GOARCH i586
| CC_FOR_TARGET gcc
| + set -e
| + [ ! -f run.bash ]
| + uname
| + grep gold.* 2\.20
| + ld --version
| + [ -d /selinux -a -f /selinux/booleans/allow_execstack -a -x /usr/sbin/selinuxenabled ]
| + [ -d /sys/fs/selinux -a -f /sys/fs/selinux/booleans/allow_execstack -a -x /usr/sbin/selinuxenabled ]
| + uname -s
| + [ Linux == GNU/kFreeBSD ]
| ./make.bash: 104: [: Linux: unexpected operator
| + rm -f ./pkg/runtime/runtime_defs.go
| + echo # Building C bootstrap tool.
| # Building C bootstrap tool.
| + echo cmd/dist
| cmd/dist
| + cd ..
| + pwd
| + export GOROOT=/var/mshehery/Documents/git/fido/build/tmp/work/x86_64-poky-linux/golang-cross/1.3-r0/go
| + GOROOT_FINAL=/var/mshehery/Documents/git/fido/build/tmp/sysroots/x86_64-linux/usr/lib/i586-poky-linux/go
| + DEFGOROOT=-DGOROOT_FINAL="/var/mshehery/Documents/git/fido/build/tmp/sysroots/x86_64-linux/usr/lib/i586-poky-linux/go"
| + mflag=
| + uname
| + [ Linux == Darwin ]
| ./make.bash: 124: [: Linux: unexpected operator
| + type -t gcc
| + type -t clang
| + [ -z gcc -a -z -t: not found
| gcc is /usr/bin/gcc -a -n -t: not found
| clang: not found ]
| + gcc -O2 -Wall -Werror -o cmd/dist/dist -Icmd/dist -DGOROOT_FINAL="/var/mshehery/Documents/git/fido/build/tmp/sysroots/x86_64-linux/usr/lib/i586-poky-linux/go" cmd/dist/arm.c cmd/dist/buf.c cmd/dist/build.c cmd/dist/buildgc.c cmd/dist/buildgo.c cmd/dist/buildruntime.c cmd/dist/goc2c.c cmd/dist/main.c cmd/dist/plan9.c cmd/dist/unix.c cmd/dist/windows.c
| + ./cmd/dist/dist env -p
| go tool dist: unknown $GOARCH i586
| + echo FAIL=true
| + eval FAIL=true
| + FAIL=true
| + [ true = true ]
| + exit 1
| WARNING: exit code 1 from a shell command.
| ERROR: Function failed: do_compile (log file is located at /var/mshehery/Documents/git/fido/build/tmp/work/x86_64-poky-linux/golang-cross/1.3-r0/temp/log.do_compile.31971)
【问题讨论】:
好吧,你能给我们错误信息吗?上面这行只告诉我们在编译 go 交叉编译器时出了点问题。 @Anders 这是唯一打印的错误消息。但是,我还打印了一个非常冗长的日志数据以及错误。您想看一下日志数据吗? 好吧,你应该发布它,或者至少是日志中显示错误的部分。 @Anders 请检查已编辑的帖子。日志数据可能有用。 @Anders 我已经添加了整个日志数据。看看你是否能找出问题所在。 【参考方案1】:go tool dist: 未知 $GOARCH i586
这是你的答案。请查看available GOARCH values。
如果您需要更多帮助,您需要澄清已使用的 bitbake 参数。还有层/食谱:
bitbake-layers show-layers
【讨论】:
【参考方案2】:当你docker build
你得到不同的层次。
可以运行失败前创建的最后一张图片,例子
---> Using cache
---> a03f050edd2f
Step 4 : ENTRYPOINT
在那种情况下
docker run -it a03f050edd2f bash
然后发出失败的命令,看看会发生什么
如果这不是秘密,请发布复制器,Dockerfile..
【讨论】:
我正在使用 yocto 中的命令bitbake docker
构建 docker。我需要为嵌入式设备构建 docker。 docker run -it a03f050edd2f bash
这个命令不是要求docker已经安装了吗?
是的,你需要安装 docker 才能运行 docker build
我正在尝试通过元虚拟化层构建 docker,该层允许构建基于 OE 的虚拟化解决方案。恐怕我无法在为我的嵌入式设备构建 docker 之前安装它。
@user2915097 我相信你没有仔细阅读这个问题。他不是在构建 Docker 映像。他正在构建 docker 本身。以上是关于在 yocto 上构建 docker的主要内容,如果未能解决你的问题,请参考以下文章