
自己编译了 op 固件,是推送到阿里云 docker 镜像仓库上,目前在线升级脚本是借助 docker pull 下载包含固件的 docker 镜像后 cp 固件和 sha256sums 出来,然后执行在线升级逻辑。 在线升级造成的一些限制就是初次 rootfs 很小(升级的时候会扩容),而 docker 占据很大容量:
root@OpenWrt:~# du -shx /* ... 203.0M /oerlay 403.5M /rom ... root@OpenWrt:/overlay/upper/usr/bin# du -shx * 36.8M containerd 6.8M containerd-shim 8.8M containerd-shim-runc-v1 8.8M containerd-shim-runc-v2 16.2M containerd-stress 18.7M ctr 15.3M dnet 30.6M docker 60.0K docker-init 1.6M docker-proxy 45.0M dockerd 24.0K tini 调整了 ROOTFSZISE 暂时是规避这个问题,但是这个不是优雅的解决,可能维护的其他设备的配置无法跑起 docker 。 所以有没有啥符合我需求的制品库,我可以构建后把固件推送上去,然后我固件里带的升级脚本 curl 或者 wget 不需要验证就能下载到,之前的 ghproxy 都不稳定。
1 Buges 2022 年 6 月 5 日 via Android docker 镜像仓库可以不用 docker pull ,而是直接下载,都是 tar.gz 包而已。 homebrew 就是用这种方式分发预编译 artifacts 的。 |
2 guanzhangzhang OP 可能部分人没看懂需求。不是我个人用,是很多人用我的固件,要求任何使用我固件的升级脚本不带认证信息 curl 或者 wget 下载到固件,和 docker 没有任何关系。。。 |
3 guanzhangzhang OP @Buges 我知道 docker 镜像是走 http ,但是那个层貌似需要解密还是转换来着,你有相关资料吗 |
4 Buges 2022 年 6 月 5 日 via Android @guanzhangzhang 每一层都是一个 tar 打包的 rootfs ,正常情况下 docker 会一层层的释放再用 overlay 叠加起来。 相关格式还有一个清单,里面有一些元信息,具体可以去看 OCI 的标准。 没啥需要转换的,如果你都打包到一层里面直接下下来解压就好了。 |
5 imzcg2 2022 年 6 月 5 日 国内 git 仓库用 raw |
6 Kinnice 2022 年 6 月 6 日 via Android 直接放到对象存储里面不就可以了,oss 之类的 放三个文件 固件,sha256sum ,latest.txt (放最新版本的固件名称或者一些公告什么信息) |
7 guanzhangzhang OP @Kinnice oss 会被人恶意刷的,我昨天找了个 ghproxy ,后面试试 |