优化向 USB 介质添加额外的软件包以进行 alpine linux 离线安装?

优化向 USB 介质添加额外的软件包以进行 alpine linux 离线安装?

我们希望为 Alpine Linux 制作一个自动安装程序,以便在嵌入式 x86 电脑上运行我们自己的应用程序。我们的应用程序设置需要可下载媒体上不存在的软件包,并且我们需要它独立且离线运行。我已经实现了我们需要的功能,但这需要 U 盘上存在“主”和“社区”存储库。

到目前为止,我已经解决了这个问题,方法是在 ISO 模式下使用 Rufus 将 ISO 映像刻录到 USB 记忆棒(使其可写),然后将镜像 rsync 到 USB 记忆棒(到/media/usb/alpine)并手动将此目录添加到/etc/apk/repositoriesas需要。这效果很好。

不幸的是,这是一个近 20 GB 的下载,这意味着在我现在可用的 USB 记忆棒上,手动复制到 USB 记忆棒的步骤需要很长时间(目前为 2 小时)。 SSD USB 盘大约需要 20 分钟。

因此,我一直在查看setup-apkcache并发现我们只需要不到 100 MB 的软件包,但从我的实验来看,以“sys”模式(在幕后setup-disk运行)安装到本地硬盘并不会使用这些软件包lbu package -在缓存中,但期望从 中列出的存储库之一找到所有包/etc/apk/repositories

使用 apk 缓存是正​​确的方法吗?还是我找错了树?

答案1

为了将来的参考,我最终遇到了这样的情况:我们必须在没有 SSE 和 TSLIB 的情况下重新编译 Qt5,因此我分叉了 Alpine Linux aports 存储库,并使我们的本地分支脱离 3.14-stable 分支,以在 docker 映像中重建软件包。

事实证明,这个 docker 镜像也非常适合构建 ISO。通过创建一个新的配置文件来根据需要scripts/mkimg.XXX.sh调整profile_extended和添加额外的包,$apks我们可以让 Gitlab 使用官方包存储库的冻结内部镜像在几分钟内使用我们修改后的包构建一个新的 ISO,并将其存储为工件。这样就生成了 620 MB 的 ISO,其刻录速度足以满足我们的目的。

如果我们有更多时间,我会根​​据我们需要的包将自定义有效负载创建为 Alpine Linux 包,因此我们只需要在构建脚本中添加该包并透明地引入依赖项。此外,我们还可以从拥有PXE 网络启动版本也在开发过程中。下次...


编辑:Alpine 技术指导委员会于 2022 年 1 月决定“尽最大努力继续使用 i586,指定平台必须实际正确实现 i586 才能得到支持(例如,没有 Vortex86),如果上游仅支持 i686,某些软件包可能需要 i686 (例如那些有 JIT 的)。”。对于我们的特定用法,这意味着我们需要继续使用单独的编译树。

https://gitlab.alpinelinux.org/alpine/tsc/-/blob/master/mines/2022-01-11.md

相关内容