3.8 KiB
Output layout
Format 2 isolates outputs by device, OS profile, and configuration under out/. Format 1 uses out/<board>/. Fetched sources and IPSW members share caches. unixnu.lock records fetched source revisions in the device repository.
Tree
out/
state.json
feeds/
ipsw/<build>/
<device>/<os_profile>/<config>/
.config
tree/
logs/
device-tree/
hardware.dtb
kernel/
kernel.macho
package/
Build/Out/
payload/
payload.img
payload.json
boot/
boot.img
boot.json
userdata/
userdata-root.img
userdata-root.json
state.json
{
"device": "/path/to/device/repository"
}
The driver reads the device repository from this file when -D and UNIXNU_DEVICE are absent.
feeds
A clone per git repository and ref:
out/feeds/<repo>-<hash>/
The hash covers the URL and the ref. The clone is shallow, blobless and sparse when the source declares a path.
ipsw
out/ipsw/<build>/
<member file>
<member file>.json
The sidecar records the component, member path, size, SHA-256 and source. A cached member is reused when its size and hash match the pin.
tree
The assembled build tree:
tree/
drivers/
kits/
patches/
refer/
scripts/
package/
build/
.cache/
The target .cache/xnu-work/ contains patched XNU sources; build/ contains generated headers and archives. Module directories are symbolic links. scripts/ is copied. The device package appears as kits/<board.kit>. .cache/firmware is a symbolic link to the device repository's .cache/firmware.
logs
One log per step:
| File | Step |
|---|---|
kernel.log |
XNU build |
kernel-bootstrap.log |
First XNU pass for the compile records |
archive-NN-<name>.log |
Archive builder NN from [kernel] archives |
prelink.log |
Prelink |
package.log |
EDK II package build |
firmware-preflight.log |
Board preflight |
firmware.log |
EDK II firmware build |
basetools.log |
EDK II BaseTools build |
payload.log |
Payload volume |
payload-adt.log |
ADT generator |
payload-patch.log |
Panic screen patch |
payload-skip-setup.log |
Setup skip |
userdata.log |
Userdata image |
boot.json
| Field | Meaning |
|---|---|
kernel_sha256 |
Kernel field hash |
ramdisk_bytes |
Ramdisk size |
header_version |
Android boot image header version |
kernel_address |
Kernel load address |
tags_address |
Tags load address |
image_sha256 |
Boot image hash |
image_bytes |
Boot image size |
fd_sha256 |
Firmware volume hash |
dtb_sha256 |
Device tree hash |
shim_bytes |
BootShim size |
hardware_tested |
Qualification state |
payload.json
| Field | Meaning |
|---|---|
kernel_sha256 |
Input kernel |
payload_kernel_sha256 |
Kernel in the payload |
adt_sha256 |
ADT sidecar |
kernel_args |
Command line |
trust_cache_sha256 |
Trust cache bundle |
data_ramdisk_sha256 |
Data seed |
skip_setup |
Setup skip applied |
panic_screen |
Panic screen patch applied |
payload_sha256 |
Payload image hash |
payload_bytes |
Payload image size |
hardware_tested |
Qualification state |
userdata-root.json
| Field | Meaning |
|---|---|
image_bytes |
Image size |
image_sha256 |
Image hash |
manifest_sha256 |
Manifest hash |
windows |
Name, offset, size and hash per window |
userdata_bytes |
Partition capacity |
flash_command |
Fastboot command |
source |
Local or remote IPSW |
hardware_tested |
Qualification state |
Clean
unixnu clean removes tree, logs, kernel, package, boot and edk2-conf under the board output. Fetched sources and extracted IPSW members stay.