我有责任创建一个包格式,其内容被压缩和加密并且可以安装。
我将其建模为嵌入 cryptsetup 原始设备中的 squashfs。
唉,这使我无法从 jenkins 等构建服务器构建这样的包,因为我需要 root 访问权限才能设置 cryptsetup。在 docker 容器内执行相同的操作也不起作用,因为 docker 对于设备映射器来说不是透明的。
所以我有以下选择:
- 仅在构建服务器上创建squashfs并“手动”完成cryptsetup层
- 以某种方式在没有内核参与的情况下进行 cryptsetup 加密。
由于 1. 会在流程中添加另一个步骤,因此我更愿意执行类似 2. 的操作。
为了更容易理解一点:
目前,我做了一些类似的事情
mksquashfs <sources> tempfile -noappend
<determine the size of tempfile>
<create "outfile" file with said size>
cryptsetup open -q -d keyfile outfile <my-dm-device>
mksquashfs <sources> /dev/mapper/<my-dm-device> -noappend
cryptsetup close <my-dm-device>
我想将其简化为
mksquashfs <sources> tempfile -noappend
user_space_crypt_create -q -d keyfile tempfile outfile
其中 user_space_crypt_create 只是将未加密的临时文件转换为(原始)加密的输出文件,稍后可以通过 cryptsetup 将其安装在目标系统上。
有这样的事情存在吗?