Files
UniXNU/docs/reference/output-layout.md
T
UniXNU Docs 5c92d4048f docs: add the VitePress documentation site
Add English and Simplified Chinese documentation under docs/, covering the boot chain, build, boot, debugging, porting, drivers, XNU 4 KiB pages, macOS and device notes. Add the Pages workflow and CNAME. Rename the boot manager from CrabApple to UniXNU across the package, symbols, paths, configuration file and logs. Update README with the documentation badge and CONTRIBUTING link.
2026-10-19 22:10:43 +08:00

3.4 KiB

Output layout

All build output goes under out/. The driver writes nothing into the repositories except unixnu.lock in the device repository.

Tree

out/
  state.json
  feeds/
  ipsw/<build>/
  <board>/
    .config
    tree/
    logs/
    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/

Module directories are symbolic links. scripts/ is copied. The device package appears as kits/<board.kit>.

logs

One log per step:

File Step
kernel.log XNU build
kernel-bootstrap.log First pass without boot progress
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.

Next steps