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.
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.