Skip to content

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 ​

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:

FileStep
kernel.logXNU build
kernel-bootstrap.logFirst pass without boot progress
prelink.logPrelink
package.logEDK II package build
firmware-preflight.logBoard preflight
firmware.logEDK II firmware build
basetools.logEDK II BaseTools build
payload.logPayload volume
payload-adt.logADT generator
payload-patch.logPanic screen patch
payload-skip-setup.logSetup skip
userdata.logUserdata image

boot.json ​

FieldMeaning
kernel_sha256Kernel field hash
ramdisk_bytesRamdisk size
header_versionAndroid boot image header version
kernel_addressKernel load address
tags_addressTags load address
image_sha256Boot image hash
image_bytesBoot image size
fd_sha256Firmware volume hash
dtb_sha256Device tree hash
shim_bytesBootShim size
hardware_testedQualification state

payload.json ​

FieldMeaning
kernel_sha256Input kernel
payload_kernel_sha256Kernel in the payload
adt_sha256ADT sidecar
kernel_argsCommand line
trust_cache_sha256Trust cache bundle
data_ramdisk_sha256Data seed
skip_setupSetup skip applied
panic_screenPanic screen patch applied
payload_sha256Payload image hash
payload_bytesPayload image size
hardware_testedQualification state

userdata-root.json ​

FieldMeaning
image_bytesImage size
image_sha256Image hash
manifest_sha256Manifest hash
windowsName, offset, size and hash per window
userdata_bytesPartition capacity
flash_commandFastboot command
sourceLocal or remote IPSW
hardware_testedQualification 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 ​

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