Boot2: Difference between revisions

mNo edit summary
Further updates and grammar fixes
Line 1: Line 1:
boot2 is the first non-built-in sysmodule. It's hardcoded to be the first sysmodule launched by PM.
boot2 is the first non-built-in sysmodule. It's hardcoded to be the first sysmodule launched by PM.


On retail systems, the boot2 title installed is named "boot2.prodBoot" while on debug systems, the boot2 title installed is named "boot2". During [[Factory Setup|the factory setup process]], the installed boot2 title is "boot2.manuBoot".
On retail systems, the boot2 title is called [[#boot2.prodBoot|boot2.prodBoot]] while on debug systems it's called [[#boot2|boot2]]. During [[Factory Setup|the factory setup process]] the boot2 title is called [[#boot2.manuBoot|boot2.manuBoot]] instead.


= boot2.prodBoot =
= boot2.prodBoot =
It connects to "pm:shell" service and launches the following titles in this order:
It opens the [[Process_Manager_services#pm:shell|pm:shell]] service and launches the following titles in order:
* 0100000000000021 (psc)
* 0100000000000021 (psc)
* 0100000000000009 (settings)
* 0100000000000009 (settings)
Line 13: Line 13:
* 010000000000001A (pcv)
* 010000000000001A (pcv)


Then it connects to "set:sys" and reads a bool from "boot" section called "force_maintenance" with default value true.
It then opens the [[Settings_services#set:sys|set:sys]] service and reads a bool from the "boot" section called "force_maintenance" with default value set to "true".


If the value reads successfully as false, it initializes "gpio" and opens sessions for GPIOs 26 and 25.
If the value reads successfully as "false", it opens the [[Bus_services#gpio|gpio]] service and opens sessions for GPIOs 26 and 25.
If both GPIOs read as zero, then [[Recovery_Mode|maintenance mode]] is forced despite the setting being false. This probably checks if both volume up and down keys are held down at the same time?
If both GPIOs read as zero, then [[Recovery_Mode|maintenance mode]] is forced despite the setting being false. This checks if both volume up and down keys are held down at the same time.


If it's in maintenance mode then it opens a session to "pm:bm" and calls cmd1.
If it's in maintenance mode then it opens the [[Process_Manager_services#pm:bm|pm:bm]] service and calls [[Process_Manager_services#pm:bm|SetMaintenanceBoot]].


Then depending on maintenance mode or not it launches the following titles in this order:
It then launches the following titles in order:
* 0100000000000023 (am)
* 0100000000000023 (am)
* 0100000000000019 (nvservices)
* 0100000000000019 (nvservices)
Line 38: Line 38:
* 0100000000000018 (ldn)
* 0100000000000018 (ldn)
* 010000000000001E (account)
* 010000000000001E (account)
* 010000000000000E (friends) [skipped in maintenance]
* 010000000000000E (friends) [skipped in maintenance mode]
* 0100000000000020 (nfc)
* 0100000000000020 (nfc)
* 010000000000003C (jpegdec) [4.0.0+]
* 010000000000003C (jpegdec) [4.0.0+]
Line 44: Line 44:
* 0100000000000024 (ssl)
* 0100000000000024 (ssl)
* 0100000000000025 (nim)
* 0100000000000025 (nim)
* 010000000000000C (bcat) [skipped in maintenance]
* 010000000000000C (bcat) [skipped in maintenance mode]
* 010000000000002B (erpt)
* 010000000000002B (erpt)
* 0100000000000033 (es)
* 0100000000000033 (es)
* 010000000000002E (pctl)
* 010000000000002E (pctl)
* 010000000000002A (btm)
* 010000000000002A (btm)
* 0100000000000030 (eupld) [skipped in maintenance]
* 0100000000000030 (eupld) [skipped in maintenance mode]
* 0100000000000031 (glue)
* 0100000000000031 (glue)
* 0100000000000032 (eclct)
* 0100000000000032 (eclct)
* 010000000000002F (npns) [skipped in maintenance]
* 010000000000002F (npns) [skipped in maintenance mode]
* 0100000000000034 (fatal)
* 0100000000000034 (fatal)
* 0100000000000037 (ro) [3.0.0+]
* 0100000000000037 (ro) [3.0.0+]
Line 67: Line 67:


= boot2 =
= boot2 =
Depending on maintenance mode, boot2 boots titles in the following order:
Just like [[#boot2.prodBoot|boot2.prodBoot]], it opens the [[Process_Manager_services#pm:shell|pm:shell]] service and launches the following titles in order:
* 0100000000000021 (psc)
* 0100000000000021 (psc)
* 0100000000000009 (settings)
* 0100000000000009 (settings)
Line 75: Line 75:
* 0100000000000007 (tma)
* 0100000000000007 (tma)
* 010000000000001A (pcv)
* 010000000000001A (pcv)
It then launches the following titles in order:
* 0100000000000023 (am)
* 0100000000000023 (am)
* 0100000000000019 (nvservices)
* 0100000000000019 (nvservices)
Line 80: Line 82:
* 010000000000002D (vi)
* 010000000000002D (vi)
* 010000000000001F (ns)
* 010000000000001F (ns)
* 0100000000003003 (DebugMonitor0) [FWs unknown]
* 0100000000003003 (DebugMonitor0) [1.0.0-4.1.0]
* 010000000000000D (dmnt)
* 010000000000000D (dmnt)
* 0100000000000015 (lm)
* 0100000000000015 (lm)
* 010000000000001B (ppc) [<=8.1.0]
* 010000000000001B (ppc) [1.0.0-8.1.0]
* 0100000000000010 (ptm)
* 0100000000000010 (ptm)
* 0100000000000017 (cs)
* 0100000000000017 (cs)
Line 96: Line 98:
* 0100000000000018 (ldn)
* 0100000000000018 (ldn)
* 010000000000001E (account)
* 010000000000001E (account)
* 010000000000000E (friends) [skipped in maintenance]
* 010000000000000E (friends) [skipped in maintenance mode]
* 0100000000000020 (nfc)
* 0100000000000020 (nfc)
* 010000000000003C (jpegdec) [4.0.0+]
* 010000000000003C (jpegdec) [4.0.0+]
Line 102: Line 104:
* 0100000000000024 (ssl)
* 0100000000000024 (ssl)
* 0100000000000025 (nim)
* 0100000000000025 (nim)
* 010000000000000C (bcat) [skipped in maintenance]
* 010000000000000C (bcat) [skipped in maintenance mode]
* 010000000000002B (erpt)
* 010000000000002B (erpt)
* 0100000000000033 (es)
* 0100000000000033 (es)
* 010000000000002E (pctl)
* 010000000000002E (pctl)
* 010000000000002A (btm)
* 010000000000002A (btm)
* 0100000000000030 (eupld) [skipped in maintenance]
* 0100000000000030 (eupld) [skipped in maintenance mode]
* 0100000000000031 (glue)
* 0100000000000031 (glue)
* 0100000000000032 (eclct)
* 0100000000000032 (eclct)
* 010000000000B120 (nvdbgsvc)
* 010000000000B120 (nvdbgsvc)
* 010000000000002F (npns) [skipped in maintenance]
* 010000000000002F (npns) [skipped in maintenance mode]
* 0100000000000034 (fatal)
* 0100000000000034 (fatal)
* 0100000000000037 (ro) [3.0.0+]
* 0100000000000037 (ro) [3.0.0+]
Line 122: Line 124:


= boot2.manuBoot =
= boot2.manuBoot =
When not in maintenance mode, boot2.manuBoot boots exactly the same titles as boot2.prodBoot in the same order, and then finishes by booting 010000000000B14A ([[Manu Services|Manu]]) before exiting.
Just like [[#boot2.prodBoot|boot2.prodBoot]], it opens the [[Process_Manager_services#pm:shell|pm:shell]] service and launches the following titles in order:
 
When in maintenance mode, boot2.manuBoot boots titles in the following order:
* 0100000000000021 (psc)
* 0100000000000021 (psc)
* 0100000000000009 (settings)
* 0100000000000009 (settings)
Line 132: Line 132:
* 0100000000000007 (tma)
* 0100000000000007 (tma)
* 010000000000001A (pcv)
* 010000000000001A (pcv)
If maintenance mode was requested, it then launches the following titles in order:
* 0100000000000023 (am)
* 0100000000000023 (am)
* 0100000000000019 (nvservices)
* 0100000000000019 (nvservices)
Line 162: Line 164:
* 010000000000B120 (nvdbgsvc)
* 010000000000B120 (nvdbgsvc)
* 0100000000000034 (fatal)
* 0100000000000034 (fatal)
* 01000000000020D1 (???)
* 01000000000020D1 (DevSafeModeUpdater)


Note that these unknown titles are not present in either retail firmware or factory firmware.
Otherwise, it launches exactly the same titles as [[#boot2.prodBoot|boot2.prodBoot]] in the same order, but then finishes by launching 010000000000B14A ([[Manu Services|Manu]]) before exiting itself.