在 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 @   Juwan  阅读(3545)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示