标签:home 不同 log 分析 network 注意 usr 架构 inux
正常情况下 docker 是不能启动与宿主机不同架构的服务,此时要启动 arm 架构的环境,就需要提供 qemu 虚拟机的服务支持。
关于这个 qemu 能否使用可以自行查阅。
这将极大的方便我们在 x86 机器直接进行编译和测试 arm 的程序,测试完成后再将其送入 V831 硬件。
看这个 如何在x86架构下进行ARM镜像的构建与运行 使用 alpine 版。
使用 alpine 的好处在于 apk 安装的软件版都可以迁移到 V831 上直接使用。
关于 Debian 可以用 Debian + QEMU + ARM64 (aarch64) 仓库。
通过 run 创建容器名为 armv7 的镜像,则需要执行如下几条命令启动:
docker run --rm --privileged multiarch/qemu-user-static --reset --persistent yes
docker start armv7
(start/stop/restart/stats)docker exec -it armv7 sh
举个例子,V831 中的程序通常编译为 32 位版本,这就会缺少 time64 等一系列和 64位 时间有关的函数。
所以在 docker armv7 编译的 micropython 要先设置为 -mbe32 ,并且补充缺少的 libffi.so 和更新相应的 ld-musl-armhf.so 依赖库,注意 V831 中 ld-musl-armhf.so 是一个文件链接,它最终链接到 libc.so 所以我们可以直接先 cp ld-musl-armhf.so ld-musl-armhf.so.bak
后再覆盖即可。
此时 micropython 就可以启动了。
关键词 docker save 和 import 。
可以用 docker cp 传输文件 docker cp armv7:/usr/lib/ /home/test/
。
也可以直接在 run 的时候 -v 指定目录的挂载,如下示例将宿主机的 data 目录挂载到容器根目录下。
docker run --name armv7 -i -t -v /home/juwan:/data:rw forumi0721alpinearmhf/alpine-armhf-glibc
可以通过 docker network 查看,默认情况下会自动完成网络配置,各端口互通。
标签:home 不同 log 分析 network 注意 usr 架构 inux
原文地址:https://www.cnblogs.com/juwan/p/14177588.html