在 docker 上使用 qemu-static 进行 armv7 & arm64 虚拟机软件开发一条龙服务。

初期启动硬件资源,主要有如下内容。

https://github.com/rycus86/docker-arm64v8-debian-qemu

https://stackoverflow.com/questions/58298774/standard-init-linux-go211-exec-user-process-caused-exec-format-error

https://blog.csdn.net/liumiaocn/article/details/109305857

docker 开发环境

https://www.cnblogs.com/qa-freeroad/p/13941445.html

确保 qemu 可以启动,通过该命令允许宿主机启动 armv7 虚拟机。

docker run --rm --privileged multiarch/qemu-user-static --reset --persistent yes

开发环境

建议用 debian 或 armv7-alpine 、 openwrt 相关的进行底层软件开发。

最基础的库有 libc.so / libstdc++.so 两类,大多基于 musl 版本。

通过 ldd 可以查该库的依赖,通常可在 /lib /usr/lib 中追踪依赖库,会提示告知。

通过 nm -D 可以打出拥有的函数符号。

软件源

apk 用 sed -i 's/mirror.xtom.com.hk/mirrors.aliyun.com/g' /etc/apk/repositories

okpg 百度即可。

编译 so 项目

编译缺少头文件可以 apk add linux-headers 模块。

现在库已经不直接提供 ./configXXX 而是采用 aclocal & autoconf & autoheader & automake 生成配置后进行 make 。

ssh 通常有 dropbear 和 openssh

常需要建立 mkdir 目录后生成 dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key 其他密钥同理。

文件共享

现在个人用 docker -v 挂载宿主机目录,原生可以用 qemu中使用 9p virtio, 支持 host 和 guest 中共享目录。

参考 sudo docker run --name armv7 -i -t -v /home/juwan:/data:rw forumi0721/alpine-base:armv7

  • 唯一采用 ld-musl-armhf.so.1 的版本,用于支持 全志 v8xx 的 musl 系统

sudo docker run --name ubuntu_test -i -t -v /home/juwan:/root/ ubuntu

sudo docker run --name ubuntu_v83x -i -t -v ~/:/user_dir --hostname sipeed

网络共享

docker 默认公开网络,不需要额外 -p 映射端口。

快乐玩耍吧

python3 开发备忘

内存分析 memory_profiler

python3 -m memory_profiler bin/rpyc_classic.py --host 0.0.0.0 -q

需要的 history 如下

  42 apk add gcc
  44 apk add g++
  47 apk add python3-dev
  49 apk add linux-headers
  50 pip install memory_profiler -i https://pypi.tuna.tsinghua.edu.cn/simple

如下懒人用法。

    import sys, memory_profiler
    @memory_profiler.profile(precision=4,stream=sys.stdout)

RPyC ikernel

期间写的 ipython 内核,比 ipykernel 内核占用更更更少。

swap 挂载文件用法

https://blog.csdn.net/zhangxiaoyang0/article/details/82501209

armv7 v831 的 micropython 仓库直接编译

  • scp /usr/lib/libffi.so.7 root@192.168.0.171:/usr/lib/
  • scp /lib/ld-musl-armhf.so.1 root@192.168.0.171:/lib

主要为 ffi 64 位类型和 time64 结构。

posted @ 2020-12-01 10:23  Juwan  阅读(3425)  评论(0编辑  收藏  举报