build_image.py - ERROR : Failed to build out/target/product/x9sp_ms/obj/PACKAGING/systemimage_intermediates/system.img from out/target/product/x9sp_ms/system Out of space? Out of inodes? The tree size of /armor_x9sp/android12/out/soong/.temp/tmpwhg84c is 1840845824 bytes (1755 MB), with reserved space of 67108864 bytes (64 MB). The max image size for filesystem files is 1907957760 bytes (1819 MB), out of a total partition size of 1907957760 bytes (1819 MB).
android12/out/host/linux-x86/bin/e2fsdroid -p out/target/product/x9sp_ms/system -s -S out/target/product/x9sp_ms/obj/ETC/file_contexts.bin_intermediates/file_contexts.bin -f /armor_code/android12/out/soong/.temp/tmpgrAZa6 -a / out/target/product/x9sp_ms/obj/PACKAGING/systemimage_intermediates/system.img
mkuserimg_mke2fs.py ERROR: Failed to run e2fsdroid_cmd: set_selinux_xattr: No such file or directory searching for label "/appcfg" e2fsdroid: No such file or directory while configuring the file system
检查发现,out target project 下 root 多出一个 "/appcfg", 这个是怎么来的?
排查1:
| 参数 | 功能描述 |
|---|---|
-p <path> | 指定源目录,其中的内容将被打包到镜像中 |
-s | 创建稀疏镜像(节省空间,支持 OTA 更新) |
-S <file> | 指定 SELinux 上下文文件(二进制格式),用于设置文件的安全标签 |
-a <mount> | 指定根目录挂载点(通常为 /) |
-f <file> | 指定文件列表,仅打包列表中指定的文件(可选) |
-L <label> | 设置文件系统标签(如 system、vendor) |
-M <inode> | 设置文件系统的最大 inode 数量 |
--skip_selinux_fixup | 跳过 SELinux 标签应用(仅用于调试) |
3. 工作流程
- 解析参数:读取源目录、目标镜像路径、SELinux 上下文文件等
- 初始化文件系统:根据目标镜像大小创建 ext4 文件系统
- 复制文件:递归复制源目录中的所有文件和目录到镜像中
- 应用 SELinux 标签:根据
file_contexts.bin为每个文件设置安全上下文 - 优化与完成:生成稀疏格式(如果启用),并完成镜像创建
4. 常见问题与错误
4.1 SELinux 上下文错误
- 错误信息:
set_selinux_xattr: No such file or directory - 原因:SELinux 上下文文件中定义的路径在实际文件系统中不存在
- 解决:
- 确保
file_contexts中的所有路径在源目录中存在 - 使用
(/.*)?使路径变为可选(如/appconfig(/.*)?)
- 确保
排查2:
BOARD_ROOT_EXTRA_FOLDERS 是 Android 构建系统中的一个重要变量,用于在根文件系统(root 目录)中创建额外的目录结构。这些目录在系统启动时就已存在,无需在运行时动态创建。
1. 变量作用
BOARD_ROOT_EXTRA_FOLDERS 用于定义需要在根文件系统中预先创建的目录路径。这些目录会在构建过程中自动生成,并包含在最终的系统镜像中。
常见用途包括:
- 创建挂载点(如
/mnt、/storage等) - 为特定设备或功能预留目录
- 兼容旧版系统的目录结构
2. 变量定义位置
通常在以下位置定义:
device/<vendor>/<device>/BoardConfig.mk(设备特定配置)vendor/<vendor>/common/BoardConfigCommon.mk(供应商通用配置)build/make/target/board/generic/BoardConfig.mk(通用配置)
2261

被折叠的 条评论
为什么被折叠?



