在 docker 上使用 qemu-static 进行 armv7 & arm64 虚拟机软件开发一条龙服务。
初期启动硬件资源,主要有如下内容。
https://github.com/rycus86/docker-arm64v8-debian-qemu
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 结构。