68 lines
2.5 KiB
Plaintext
68 lines
2.5 KiB
Plaintext
iBoot Upgrade Mode
|
|
==================
|
|
|
|
The iBoot application normally insists on booting from the first
|
|
partition on the storage device, using a kernelcache located in
|
|
/System/Library/Caches/com.apple.kernelcaches/kernelcache, with a
|
|
devicetree located in ROM and with the first partition as the root
|
|
device.
|
|
|
|
Upgrade mode provides an alternative boot path suitable for booting a
|
|
standalone restore/recovery system. It chains to a new bootloader,
|
|
and the new bootloader then loads kernelcache, devicetree, ramdisk and
|
|
optionally a display image before booting the kernelcache.
|
|
|
|
To invoke upgrade mode, the boot-command variable must be set to
|
|
'upgrade', and the upgrade partition must contain the following files:
|
|
|
|
/iBEC
|
|
/kernelcache
|
|
/devicetree
|
|
/ramdisk
|
|
/apticket.der
|
|
|
|
being the appropriate iBoot iBEC component, kernelcache, device tree,
|
|
ramdisk and personalised AP ticket for the system. In addition if the
|
|
file /logo is present, it will be displayed by the iBEC before the other
|
|
components are loaded.
|
|
|
|
When the kernelcache is booted, the RELEASE-configured iBEC will force
|
|
the boot-args variable to:
|
|
|
|
'rd=md0 nand-enable-reformat=1 -progress'
|
|
|
|
Non-RELEASE configurations will add 'rd=md0' to boot-args but
|
|
otherwise preserve its contents. In neither case is the value saved
|
|
to NVRAM.
|
|
|
|
All of the files listed above are expected to be in their usual
|
|
(image3) format, and must be signed and/or personalised as normal.
|
|
|
|
Both iBoot and the upgrade iBEC will identify the upgrade partition by
|
|
its LwVM partition name, which must be 'Update'.
|
|
|
|
If any of the following occurs, the unit will end up in the ROM
|
|
iBoot in recovery mode:
|
|
|
|
- the upgrade partition does not exist or cannot be mounted
|
|
- the file /iBEC does not exist in the upgrade partition
|
|
- the contents of the iBEC file are not an Image3 file or fail
|
|
authentication
|
|
|
|
If any of the following occurs, the unit will end up in the upgrade
|
|
iBEC in recovery mode:
|
|
|
|
- the upgrade partition cannot be mounted (e.g. due to NAND
|
|
format incompatibility)
|
|
- the files /kernelcache, /devicetree and /ramdisk do not exist
|
|
in the upgrade partition
|
|
- the contents of any of these files are not valid Image3, or
|
|
fail authentication
|
|
- the kernelcache file does not contain a compressed mach-o
|
|
kernelcache
|
|
- the devicetree file does not contain a valid devicetree
|
|
|
|
The iBEC component will set the auto-boot variable to false when
|
|
loaded in upgrade mode, to avoid the risk of locking the unit up due
|
|
to a hang while booting the upgrade kernel.
|