Files
UniXNU Docs 29576874dd docs(porting): the real packaging script, the PAC requirement and the release command
The packaging page describes the implemented unixnu release command, its
board.toml keys, the outputs and the checks verify makes. The arm64e page states
that arm64e needs native PAC hardware, that iPadOS 18 is the last version that
supports arm64, recommends PAC devices and the iOS or iPadOS 27 profile, and
states that every driver and optimization must work for 17 and 27 with the
build target as the only difference.
2026-11-01 06:06:26 +08:00

5.8 KiB
Raw Permalink Blame History

命令行

./unixnu <command> [options]

选项写在命令之后。驱动从 -D、UNIXNU_DEVICE、本地构建文件或 out/state.json 读取设备仓库。

kernel、package、firmware、payload、prelink 和 userdata 是 build <step> 的快捷命令。在 unixnu.local.toml 保存路径和启动参数后,可运行 ./unixnu kernel、./unixnu firmware、./unixnu payload 和 ./unixnu bootimg。--config FILE 选择其他本地构建文件,status --json 的 build_config 字段显示其路径。

命令

defconfig

unixnu defconfig [NAME]

列出设备仓库的 configs/*_defconfig。指定名称时复制到 out/<device>/<os_profile>/<config>/.config 并解析。

fetch

unixnu fetch [NAME...] [--update]

更新本仓库和设备仓库的模块子模块,然后拉取 git 源码。指定名称时只拉取这些源码。--update 解析 ref 时忽略已有锁记录,格式 2 中显式指定的 source commit 优先。commit 写入设备仓库的 unixnu.lock。

tree

unixnu tree

解析模块、拉取步骤需要的参考源码,并组装 out/<device>/<os_profile>/<config>/tree。

ipsw

unixnu ipsw info
unixnu ipsw fetch [COMPONENT...]

info 打印产品、build、device class 和 manifest 中每个组件的大小与路径。fetch 提取指定组件,未指定时使用 [ipsw] fetch 列表。

build

unixnu build [kernel] [package] [firmware] [payload] [prelink] [userdata]

选择 userdata 时先执行该步骤,然后按 kernel(含预链接)、package、payload、firmware 顺序执行。未选 kernel 时可单独执行 prelink。默认和 all 选择 kernel、package、payload、firmware;按构建指南分开执行可逐项检查产物。

build prelink 只重做预链接。

build kernel 在链接前运行生成编译记录的构建和 [kernel] archives 中的静态库脚本。

build userdata --dry-run 检查 IPSW 和分区大小。

bootimg

unixnu bootimg [--fd FILE] [--dtb FILE] [--ramdisk FILE|none] [-o FILE]

打包启动镜像。固件卷默认取 --uefi 下的输出,ramdisk 默认取负载输出。

status

显示设备、输出路径、配置层、组件范围、源码版本、本地覆盖和补丁顺序。--json 输出最终配置,字段包括 profiles、board、components、modules 和 patch_order。状态读取缓存或本地 SoC 源码;缺少源码时先运行 fetch。

unixnu status [--json]

打印设备、输出根、配置路径和每个模块来源。标记本地模块并报告未固定的模块。

clean

unixnu clean

删除板级输出下的 tree、logs、kernel、package、boot 和 edk2-conf,保留已拉取源码。

release

unixnu release [--os VERSION] [--no-deps] [--check]

为设备依次运行固定步骤 deps、preflight、patches、build、pack 和 verify,然后写出 package.manifest.json。设备仓库的 scripts/package.sh 调用它。见设备打包脚本。

选项

选项 含义
-D DIR、--device DIR 设备仓库
--os VERSION 本次运行的 OS profile:17、26、27 或 profiles/os 目录名,输出目录随之变化
--out DIR 输出根
-j N、--jobs N 并行任务
--local DIR 与本仓库布局相同的本地树
--local-drivers DIR 本地 drivers 目录
--local-kits DIR 本地 kits 目录
--local-patches DIR 本地 patches 目录
--local-scripts DIR 本地 scripts 目录
--local-package DIR 本地 package 目录
--local-module [KIND:]NAME=PATH 单个本地模块,可重复
--uefi DIR Mu-Silicium 仓库
--edk2 DIR Mu_Basecore 仓库
--kernelcache FILE 原始解压 kernelcache
--skip-preflight 跳过板级预检
--kernel FILE 负载使用的预链接内核
--kernel-arg NAME[=VALUE] 额外内核参数;与 [payload] kernel_args 同名时替换,可重复
--trust-cache FILE trust cache 包
--owner-trust-cache FILE owner 签名的包,包含原始缓存和额外模块。替换 --trust-cache,并跳过板级允许列表
--skip-setup 在 Data 种子副本中标记 Setup 完成
--data-ramdisk FILE Data ramdisk 种子
--unique-chip-id HEX ADT 平台种子
--ipsw PATH_OR_URL 目标 IPSW
--dry-run userdata 试运行
--target DEBUG|RELEASE EDK II 目标
--fd FILE bootimg 的固件卷
--dtb FILE bootimg 的编译设备树
--ramdisk FILE|none bootimg 的 ramdisk
-o FILE、--output FILE 启动镜像输出

环境变量

变量 等价选项
UNIXNU_DEVICE -D
UNIXNU_OUT --out
UNIXNU_UEFI --uefi
UNIXNU_EDK2 --edk2
UNIXNU_KERNELCACHE --kernelcache
UNIXNU_DTB --dtb
UNIXNU_IPSW --ipsw
UNIXNU_UNIQUE_CHIP_ID --unique-chip-id
JOBS -j

退出行为

条件 结果
缺少设备仓库 提示 -D
内核构建缺少配置 提示先运行 defconfig
固件缺少 Mu-Silicium 仓库 拉取前报错
IPSW 身份不匹配 报错并给出期望和实际镜像
sha256 不匹配 报错并给出成员名
固件卷大小不匹配 报错并给出大小
负载超过 size_mib 报错并给出需要提高的大小
内核参数非法 报错并给出参数
内核命令行超过 1000 字节 报错并给出长度和上限
缺少平台种子 提示 --unique-chip-id
示例设备仓库 build 或 bootimg 前报错

下一步