Skip to content

设备配置 ​

设备仓库有四个配置文件:board.toml、configs/<name>_defconfig、feeds.toml 和 local.toml。

board.toml ​

[board] ​

键类型含义
name字符串输出目录名
soc字符串SoC 标识
description字符串可读描述
kit字符串设备 package 在 kits/ 下的目录
example布尔标记示例,build 和 bootimg 会拒绝

[ipsw] ​

键类型含义
url字符串默认远程 IPSW
product字符串产品类型,例如 iPad7,1
version字符串产品版本
build字符串产品 build
device_class字符串manifest 中的 device class
chip_id整数ApChipID
board_id整数ApBoardID
fetch数组ipsw fetch 提取的组件

[ipsw.sha256] ​

键类型含义
成员文件字符串解压成员的期望 SHA-256

[userdata] ​

键类型含义
first_lba整数userdata GPT 条目起始 LBA
last_lba整数userdata GPT 条目结束 LBA
lba_bytes整数逻辑块大小
windows数组{ name, component } 条目

[kernel] ​

键类型含义
defconfig字符串configs/ 下的文件名
键类型含义
tool字符串构建树中的预链接工具
kernel字符串构建树中的原生内核
slide字符串地址 slide
roots数组保留的 kernelcache bundle identifier
early_security_init字符串identifier=address
kernelcache字符串可选本地 kernelcache 路径
kernelcache_sha256字符串期望 kernelcache 哈希
extra_args数组预链接额外参数

[firmware] ​

键类型含义
config字符串Mu-Silicium Resources/Configs/<name>.toml
dsc字符串仓库中的 DSC 路径
fd字符串固件卷路径,{target} 替换
packages数组PACKAGES_PATH 条目
preflight数组构建树预检脚本
patches数组构建期间应用到 edk2 的补丁
submodules数组需要初始化的 Mu-Silicium 子模块

[firmware.defines] ​

键类型含义
任意字符串EDK II 构建的 -D NAME=VALUE

[bootimg.image] ​

键类型含义
base整数镜像基址
kernel_offset整数内核偏移
tags_offset整数tags 偏移
pagesize整数镜像页大小
header_version整数Android 启动镜像 header 版本

[[bootimg.dtb_node]] ​

键类型含义
path字符串设备树节点路径
props数组{ name, type, value }

类型为 s 字符串、x 十六进制 cell、i 十进制 cell、u 无符号 cell、empty。

[payload] ​

键类型含义
volume字符串FAT 卷标,最多 11 字符
size_mib整数卷大小
loader字符串firmware 或驱动加载模式
title字符串菜单标题
dram_size字符串ADT 使用的 DRAM 大小
panic_screen布尔把 panic 屏幕打进负载内核
trust_cache_sha256数组接受的 trust cache 哈希
kernel_args数组默认内核参数
timeout整数菜单超时
skip_setup_tool字符串--skip-setup 使用的脚本

[payload.adt] ​

键类型含义
tool字符串ADT 生成器路径
chip_id字符串ADT 芯片 ID
owned_memory_size字符串连续窗口请求
root_match_volume_uuid字符串根卷 UUID
cpu_regs字符串CPU MPIDR 值,逗号分隔
psci_method字符串smc 或 hvc
packed_data_ramdisk布尔使用 packed Data 格式
ipad_identity布尔写入 Apple 设备身份属性
unique_chip_id字符串种子必需时写 required

defconfig ​

CONFIG_NAME=y
CONFIG_NAME=n
CONFIG_NAME="text"
CONFIG_NAME=123
# CONFIG_NAME is not set

每个 CONFIG_XNU_<NAME> 变成 XNU_<NAME>,字符串中的 {tree} 替换为构建树路径。

feeds.toml ​

toml
[[source]]
name = "Name"
kind = "driver"          # driver、kit、patch、package、refer
git = "https://github.com/ORG/REPO"
ref = "main"
path = "drivers/Name"
commit = "..."
local = "/path/to/local"
submodules = []
键含义
name模块名
kind模块类型
git源码仓库
ref拉取的分支、tag 或 commit
path可选子目录,sparse 拉取
commit可选固定 commit
local使用本地目录
submodules初始化的上游子模块

local.toml ​

设备仓库中被 Git 忽略的文件:

toml
[local]
drivers = "/path/to/drivers"
kits = "/path/to/kits"
patches = "/path/to/patches"
scripts = "/path/to/scripts"
package = "/path/to/package"

unixnu.lock ​

toml
[source."Name"]
commit = "0123456789abcdef"

由 unixnu fetch 写入。构建使用锁定的 commit,锁只记录 git 源码。

模块解析 ​

  1. --local-module [KIND:]NAME=PATH
  2. --local-<kind> DIR
  3. --local DIR
  4. feeds.toml 的 local 键或 local.toml
  5. 设备仓库
  6. 基础仓库
  7. feeds.toml 的 git 源码

第一个匹配生效。

下一步 ​

Released under the BSD-2-Clause-Patent License.