之前介绍过嵌入式用的 Alpine Linux 发行版和如何移植,本文主要讲述对于打包好的系统压缩包,如何方便的添加删除软件包。

对于已经打包的 alpine 文件系统,经常需要根据需要添加或删除软件包,如果通过开发板操作再重新打包,不够方便,这里可以利用 static 编译的 apk 工具在宿主机上进行操作。

这还需要 archivemount 工具辅助,用于直接挂载压缩包:

1
sudo apt install archivemount

以及 apk.static 工具:

1
2
3
4
# 版本根据需要选择
wget https://dl-cdn.alpinelinux.org/alpine/latest-stable/main/x86_64/apk-tools-static-3.0.3-r1.apk
tar xvzf apk-tools-static-3.0.3-r1.apk
sudo mv sbin/apk.static /usr/local/bin

对于已经打包好的文件系统 alpine.tar.gz ,使用工具 archivemount 挂载:

1
2
mkdir ./mnt_alpine
sudo archivemount alpine.tar.gz ./mnt_alpine/

这里针对目标alpine架构是 armhf,操作命令如下:

1
2
3
4
# 添加包
sudo apk.static --root ./mnt_alpine/ --arch armhf add daemontools-encore
# 删除包
sudo apk.static --root ./mnt_alpine/ --arch armhf del daemontools-encore

而文件的编辑删除则可以直接通过挂载目录进行修改即可。

等待编辑结束,可以通过 umount 保存压缩包:

1
sudo umount ./mnt_alpine

同时,会创建一份挂载前的未修改副本,以 .orig 结尾。

这相对于在开发板上进行修改再打包会方便的多,尤其适合迭代开发过程中的更新修改。