
integration examples for the CVE-2020-25860 fix
此仓库包含示例,以简化将 RAUC 更新集成到现有项目的过程。您可以订阅 https://github.com/rauc/rauc-1.5-integration/issues/1 以接收此仓库的重要更新通知以及集成到上游构建系统的通知。
这些示例源自当前上游版本,因此根据现有项目年龄的不同,可能需要进行一些调整。
将于12月21日发布的安全公告见 https://github.com/rauc/rauc-1.5-integration/blob/master/CVE-2020-25860.md。此仓库届时也将公开。
如果 rauc-1.5.tar.xz 归档文件尚不可下载,请将此仓库中的归档文件复制到您的 DL_DIR(通常在您的 build/conf/local.conf 中定义)。
将更新后的配方从 oe_yocto/recipes-rauc-1.5/rauc/* 复制到相应的项目特定层,注意保留现有自定义配置(如 system.conf 或 ca.cert.pem)。
将 oe_yocto/classes/verity_bundle.bbclass 复制到此层的 classes/ 目录(您可能需要创建该目录)。此类用于替换 meta-rauc 层中的 bundle.bbclass,并增加了对创建 verity 格式捆绑包的支持。使用不同的名称是为了避免类搜索顺序问题。
如果您想构建 verity 格式的捆绑包,请使用 inherit verity_bundle 替代 inherit bundle,并设置 RAUC_BUNDLE_FORMAT = "verity" 以选择该格式。示例见 oe_yocto/recipes-rauc-1.5/bundles/core-bundle-minimal-verity.bb。
如果 rauc-1.5.tar.xz 归档文件尚不可下载,请将此仓库中的归档文件复制到您的 PTXdist 源目录。
将 ptxdist/rules/rauc.* 目录复制到您 BSP 中的 rules/。这将为目标机和主机提供更新后的 RAUC 二进制文件。
如果您使用 PTXdist 的默认 RAUC 捆绑包规则,请将 ptxdist/config/images/rauc.config 复制到您 BSP 中的 config/images/。包含的清单模板配置了 plain 捆绑包格式,请根据需要修改。
如果您使用自定义捆绑包并希望更改为 verity 格式,则需要自行更新其清单。
如果 rauc-1.5.tar.xz 归档文件尚不可下载,请将此仓库中的归档文件复制到您的 dl/rauc/ 目录。
将 buildroot/package/rauc/rauc.* 复制到您的 Buildroot 检出中的 package/rauc/。这将为目标机和主机提供更新后的 RAUC 二进制文件。
由于 Buildroot 不自动构建更新捆绑包,如果您想使用 verity 捆绑包格式,则需要手动更新您的清单。
RAUC v1.3(发布于 2020-04-23)移除了对 1.1.1 之前 OpenSSL 版本的支持,因为这些版本已不再受 OpenSSL 项目支持:
如果您的系统仍在使用不受支持的 OpenSSL 版本,并且无法同时更新到 OpenSSL 1.1.1 和 RAUC 1.5,则提供了一个向后移植补丁(0001-backport-to-OpenSSL-1.0.2.patch)。请注意,此补丁的测试范围不如 1.5 版本广泛。
在 RAUC 1.5 中,循环设备 ioctl LOOP_SET_BLOCK_SIZE 用于将逻辑块大小设置为 4096 以进行性能优化。无法设置它并不严重,仅通过调试级别消息记录。
但是由于 LOOP_SET_BLOCK_SIZE 符号在内核版本 4.14 之前不存在,使用这些较旧的内核头文件进行编译将会失败。为解决此问题,必须在 RAUC 本身中可选地定义该符号。提供了一个针对此问题的补丁(0001-src-mount.c-fix-build-with-kernel-4.14.patch)(来自 https://github.com/rauc/rauc/pull/673)。该修复也将成为 RAUC 1.5.1 的一部分。