Changes

Jump to navigation Jump to search
12,432 bytes added ,  17:08, 22 March 2022
→‎boot2: 010000000000D633 is skipped in maintenance mode
Line 1: Line 1: −
boot2 is the first non-built-in sysmodule. It's presumably 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.
   −
It connects to "pm:shell" service and launches the following titles in this order:
+
On retail systems, the boot2 title is called [[#boot2.prodBoot|boot2.prodBoot]] while on debug systems it's called [[#boot2|boot2]]. Debug systems also have a version called [[#boot2.SafeMode|boot2.SafeMode]] installed in SAFE for safe mode. During [[Factory Setup|the factory setup process]] the boot2 title is called [[#boot2.manuBoot|boot2.manuBoot]] instead.
 +
 
 +
= boot2.prodBoot =
 +
It opens the [[Process_Manager_services#pm:shell|pm:shell]] service and prior to [[10.0.0|10.0.0]] launches the following titles in order:
 
* 0100000000000021 (psc)
 
* 0100000000000021 (psc)
 
* 0100000000000009 (settings)
 
* 0100000000000009 (settings)
Line 10: 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 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 checks if both volume up and down keys are held down at the same time.
   −
If the value reads successfully as false, it initializes "gpio" and opens sessions for GPIOs 26 and 25.
+
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]].
If both GPIOs read as zero, then maintenance mode is forced. This probably checks if both volume up and down keys are held down at the same time?
     −
Then depending on maintenance mode or not it launches the following titles in this order:
+
Prior to [[10.0.0|10.0.0]] it then launches the following titles in order:
 
* 0100000000000023 (am)
 
* 0100000000000023 (am)
 
* 0100000000000019 (nvservices)
 
* 0100000000000019 (nvservices)
Line 22: Line 27:  
* 010000000000001F (ns)
 
* 010000000000001F (ns)
 
* 0100000000000015 (lm)
 
* 0100000000000015 (lm)
* 010000000000001B (ppc)
+
* 010000000000001B (ppc) [1.0.0-8.1.0]
 
* 0100000000000010 (ptm)
 
* 0100000000000010 (ptm)
 
* 0100000000000013 (hid)
 
* 0100000000000013 (hid)
Line 33: Line 38:  
* 0100000000000018 (ldn)
 
* 0100000000000018 (ldn)
 
* 010000000000001E (account)
 
* 010000000000001E (account)
* 010000000000000E (friends) [skipped in maintenance]
+
* 010000000000000E (friends) [skipped in maintenance mode]
 +
* 0100000000000020 (nfc)
 +
* 010000000000003C (jpegdec) [4.0.0+]
 +
* 0100000000000022 (capsrv)
 +
* 0100000000000024 (ssl)
 +
* 0100000000000025 (nim)
 +
* 010000000000000C (bcat) [skipped in maintenance mode]
 +
* 010000000000002B (erpt)
 +
* 0100000000000033 (es)
 +
* 010000000000002E (pctl)
 +
* 010000000000002A (btm)
 +
* 0100000000000030 (eupld) [skipped in maintenance mode]
 +
* 0100000000000031 (glue)
 +
* 0100000000000032 (eclct)
 +
* 010000000000002F (npns) [skipped in maintenance mode on 1.0.0-6.2.0]
 +
* 0100000000000034 (fatal)
 +
* 0100000000000037 (ro) [3.0.0+]
 +
* 0100000000000038 (profiler) (doesn't exist on retail systems) [3.0.0+]
 +
* 0100000000000039 (sdb) [3.0.0+]
 +
* 010000000000003A (migration) [4.0.0+]
 +
* 0100000000000035 (grc) [4.0.0+]
 +
* 010000000000003E (olsc) [6.0.0+]
 +
* 0100000000000041 (ngct) [9.0.0+]
 +
 
 +
In [[10.0.0|10.0.0]] the order was switched up a bit
 +
 
 +
It now starts by launching the following titles in order:
 +
* 0100000000000021 (psc)
 +
* 0100000000000009 (settings)
 +
* 0100000000000006 (usb)
 +
* 010000000000001D (pcie)
 +
* 010000000000000A (bus)
 +
* 010000000000001A (pcv)
 +
* 0100000000000007 (tma)
 +
 
 +
Then it launches the following titles in order:
 +
* 0100000000000045 (omm)
 +
* 0100000000000023 (am)
 +
* 0100000000000019 (nvservices)
 +
* 010000000000001C (nvnflinger)
 +
* 010000000000002D (vi)
 +
* 0100000000000042 (pgl)
 +
* 010000000000001F (ns)
 +
* 0100000000000015 (lm)
 +
* 0100000000000010 (ptm)
 +
* 0100000000000013 (hid)
 +
* 0100000000000014 (audio)
 +
* 0100000000000016 (wlan)
 +
* 010000000000000B (bluetooth)
 +
* 0100000000000012 (bsdsockets)
 +
* 010000000000000F (nifm)
 +
* 0100000000000018 (ldn)
 +
* 010000000000001E (account)
 
* 0100000000000020 (nfc)
 
* 0100000000000020 (nfc)
 +
* 010000000000003C (jpegdec)
 
* 0100000000000022 (capsrv)
 
* 0100000000000022 (capsrv)
 +
* 010000000000001B (capmtp) [11.0.0+]
 
* 0100000000000024 (ssl)
 
* 0100000000000024 (ssl)
 
* 0100000000000025 (nim)
 
* 0100000000000025 (nim)
* 010000000000000C (bcat) [skipped in maintenance]
   
* 010000000000002B (erpt)
 
* 010000000000002B (erpt)
 
* 0100000000000033 (es)
 
* 0100000000000033 (es)
 
* 010000000000002E (pctl)
 
* 010000000000002E (pctl)
 
* 010000000000002A (btm)
 
* 010000000000002A (btm)
* 0100000000000030 (eupld) [skipped in maintenance]
   
* 0100000000000031 (glue)
 
* 0100000000000031 (glue)
 
* 0100000000000032 (eclct)
 
* 0100000000000032 (eclct)
* 010000000000002F (npns) [skipped in maintenance]
+
* 010000000000002F (npns)
 
* 0100000000000034 (fatal)
 
* 0100000000000034 (fatal)
 +
* 0100000000000037 (ro)
 +
* 0100000000000038 (profiler) (doesn't exist on retail systems)
 +
* 0100000000000039 (sdb)
 +
* 010000000000003A (migration) [10.0.0-11.0.1]
 +
* 0100000000000035 (grc) [10.0.0-11.0.1]
 +
* 010000000000003E (olsc)
 +
* 0100000000000041 (ngct)
 +
* 010000000000000E (friends) [skipped in maintenance mode]
 +
* 010000000000000C (bcat) [skipped in maintenance mode]
 +
* 0100000000000030 (eupld) [skipped in maintenance mode]
 +
 +
After launching all titles, it'll check the "boot!boot_devmenuapp_installer" setting and attempt to launch 01000000000020f0 (devmenuapp_installer) if it's set to true.
    
This list is probably optimized for boot-time. It launches display-related things first presumably to make sure it displays something as soon as possible.
 
This list is probably optimized for boot-time. It launches display-related things first presumably to make sure it displays something as soon as possible.
    
After that, the process exits itself.
 
After that, the process exits itself.
 +
 +
= boot2 =
 +
Just like [[#boot2.prodBoot|boot2.prodBoot]], it opens the [[Process_Manager_services#pm:shell|pm:shell]] service and prior to [[10.0.0|10.0.0]] launches the following titles in order:
 +
* 0100000000000021 (psc)
 +
* 0100000000000009 (settings)
 +
* 0100000000000006 (usb)
 +
* 010000000000001D (pcie)
 +
* 010000000000000A (bus)
 +
* 0100000000000007 (tma)
 +
* 010000000000001A (pcv)
 +
 +
It then launches the following titles in order:
 +
* 0100000000000023 (am)
 +
* 0100000000000019 (nvservices)
 +
* 010000000000001C (nvnflinger)
 +
* 010000000000002D (vi)
 +
* 010000000000001F (ns)
 +
* 0100000000003003 (DebugMonitor0) [1.0.0-4.1.0]
 +
* 010000000000000D (dmnt)
 +
* 0100000000000015 (lm)
 +
* 010000000000001B (ppc) [1.0.0-8.1.0]
 +
* 0100000000000010 (ptm)
 +
* 0100000000000017 (cs)
 +
* 0100000000000011 (shell)
 +
* 0100000000000013 (hid)
 +
* 0100000000000014 (audio)
 +
* 0100000000000029 (lbl)
 +
* 0100000000000016 (wlan)
 +
* 010000000000000B (bluetooth)
 +
* 0100000000000012 (bsdsockets)
 +
* 010000000000000F (nifm)
 +
* 0100000000000018 (ldn)
 +
* 010000000000001E (account)
 +
* 010000000000000E (friends) [skipped in maintenance mode]
 +
* 0100000000000020 (nfc)
 +
* 010000000000003C (jpegdec) [4.0.0+]
 +
* 0100000000000022 (capsrv)
 +
* 0100000000000024 (ssl)
 +
* 0100000000000025 (nim)
 +
* 010000000000000C (bcat) [skipped in maintenance mode]
 +
* 010000000000002B (erpt)
 +
* 0100000000000033 (es)
 +
* 010000000000002E (pctl)
 +
* 010000000000002A (btm)
 +
* 0100000000000030 (eupld) [skipped in maintenance mode]
 +
* 0100000000000031 (glue)
 +
* 0100000000000032 (eclct)
 +
* 010000000000B120 (nvdbgsvc)
 +
* 010000000000002F (npns) [skipped in maintenance mode on 1.0.0-6.2.0]
 +
* 0100000000000034 (fatal)
 +
* 0100000000000037 (ro) [3.0.0+]
 +
* 0100000000000038 (profiler)
 +
* 0100000000000039 (sdb) [3.0.0+]
 +
* 010000000000003A (migration) [4.0.0+]
 +
* 0100000000000035 (grc) [4.0.0+]
 +
* 010000000000003E (olsc) [6.0.0+]
 +
* 0100000000000041 (ngct) [9.0.0+]
 +
 +
In [[10.0.0|10.0.0]] the order was switched up a bit
 +
 +
It now starts by launching the following titles in order:
 +
* 0100000000000021 (psc)
 +
* 0100000000000009 (settings)
 +
* 0100000000000006 (usb)
 +
* 010000000000001D (pcie)
 +
* 010000000000000A (bus)
 +
* 010000000000001A (pcv)
 +
* 0100000000000007 (tma) or 010000000000B240 (htc)
 +
* 010000000000000D (dmnt) or 010000000000D609 (dmnt.gen2)
 +
 +
If the "boot!use_htc_gen2" setting is set to "true", htc and dmnt.gen2 are used, otherwise tma and dmnt are used.
 +
 +
Then it launches the following titles in order:
 +
* 0100000000000045 (omm)
 +
* 0100000000000023 (am)
 +
* 0100000000000019 (nvservices)
 +
* 010000000000001C (nvnflinger)
 +
* 010000000000002D (vi)
 +
* 010000000000B120 (nvdbgsvc)
 +
* 0100000000000017 (cs)
 +
* 0100000000000011 (shell)
 +
* 010000000000D633 [skipped in maintenance mode]
 +
* 0100000000000042 (pgl)
 +
* 010000000000001F (ns)
 +
* 0100000000000015 (lm)
 +
* 0100000000000010 (ptm)
 +
* 0100000000000013 (hid)
 +
* 0100000000000014 (audio)
 +
* 0100000000000016 (wlan)
 +
* 010000000000000B (bluetooth)
 +
* 0100000000000012 (bsdsockets)
 +
* 010000000000000F (nifm)
 +
* 0100000000000018 (ldn)
 +
* 010000000000001E (account)
 +
* 0100000000000020 (nfc)
 +
* 010000000000003C (jpegdec)
 +
* 0100000000000022 (capsrv)
 +
* 010000000000001B (capmtp) [11.0.0+]
 +
* 0100000000000024 (sll)
 +
* 0100000000000025 (nim)
 +
* 010000000000002B (erpt)
 +
* 0100000000000033 (es)
 +
* 010000000000002E (pctl)
 +
* 010000000000002A (btm)
 +
* 0100000000000031 (glue)
 +
* 0100000000000032 (eclct)
 +
* 010000000000002F (npns)
 +
* 0100000000000034 (fatal)
 +
* 0100000000000037 (ro)
 +
* 0100000000000038 (profiler)
 +
* 0100000000000039 (sdb)
 +
* 010000000000003A (migration) [10.0.0-11.0.1]
 +
* 0100000000000035 (grc) [10.0.0-11.0.1]
 +
* 010000000000003E (olsc)
 +
* 0100000000000041 (ngct)
 +
* 010000000000000E (friends) [skipped in maintenance mode]
 +
* 010000000000000C (bcat) [skipped in maintenance mode]
 +
* 0100000000000030 (eupld) [skipped in maintenance mode]
 +
 +
After launching all titles, it'll check the "boot!boot_devmenuapp_installer" setting and attempt to launch 01000000000020f0 (devmenuapp_installer) if it's set to true.
 +
 +
= boot2.SafeMode =
 +
Normally it launches the exact same titles as [[#boot2.prodBoot|boot2.prodBoot]] in the same order, but then finishes by launching 0100000000002041 (recovery) before exiting itself.
 +
 +
In maintenance mode its launch order is identical to the launch order in [[#boot2|boot2]] maintenance mode.
 +
 +
= boot2.Minimum =
 +
This is used for recovery mode on development systems on 4.1.0+.
 +
 +
Just like [[#boot2.prodBoot|boot2.prodBoot]], it opens the [[Process_Manager_services#pm:shell|pm:shell]] service and prior to 10.0.0 launches the following titles in order:
 +
* 0100000000000021 (psc)
 +
* 0100000000000009 (settings)
 +
* 0100000000000006 (usb)
 +
* 010000000000001D (pcie)
 +
* 010000000000000A (bus)
 +
* 0100000000000007 (tma)
 +
* 010000000000001A (pcv)
 +
* 0100000000000015 (lm)
 +
* 010000000000000D (dmnt)
 +
* 010000000000001F (ns)
 +
* 0100000000000037 (ro)
 +
* 010000000000B22A (scs)
 +
 +
In 10.0.0 the order was switched up a bit
 +
 +
It now launches the following titles in order:
 +
* 0100000000000021 (psc)
 +
* 0100000000000009 (settings)
 +
* 0100000000000006 (usb)
 +
* 010000000000001D (pcie)
 +
* 010000000000000A (bus)
 +
* 010000000000001A (pcv)
 +
* 010000000000000D (dmnt) or 010000000000D609 (dmnt.gen2)
 +
* 0100000000000007 (tma) or 010000000000B240 (htc)
 +
* 0100000000000015 (lm)
 +
* 0100000000000042 (pgl)
 +
* 0100000000000037 (ro)
 +
* 010000000000B22A (scs) [10.0.0-11.0.1]
 +
* 0100000000000017 (cs) [12.0.0+]
 +
 +
If the "boot!use_htc_gen2" setting is set to "true", htc and dmnt.gen2 are used, otherwise tma and dmnt are used (Note: htc and dmnt.gen2 are not currently present in recovery mode).
 +
 +
After launching all titles, it'll check the "boot!boot_devmenuapp_installer" setting and attempt to launch 01000000000020f0 (devmenuapp_installer) if it's set to true.
 +
 +
= boot2.ManuBoot =
 +
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)
 +
* 0100000000000009 (settings)
 +
* 0100000000000006 (usb)
 +
* 010000000000001D (pcie)
 +
* 010000000000000A (bus)
 +
* 0100000000000007 (tma)
 +
* 010000000000001A (pcv)
 +
 +
If maintenance mode was requested, it then launches the following titles in order:
 +
* 0100000000000023 (am)
 +
* 0100000000000019 (nvservices)
 +
* 010000000000001C (nvnflinger)
 +
* 010000000000002D (vi)
 +
* 010000000000001F (ns)
 +
* 010000000000000D (dmnt)
 +
* 010000000000001F (ns)
 +
* 0100000000000015 (lm)
 +
* 010000000000001B (ppc) [1.0.0-8.1.0]
 +
* 0100000000000010 (ptm)
 +
* 0100000000000017 (cs)
 +
* 0100000000000011 (shell)
 +
* 0100000000000013 (hid)
 +
* 0100000000000014 (audio)
 +
* 0100000000000029 (lbl)
 +
* 0100000000000016 (wlan)
 +
* 010000000000000B (bluetooth)
 +
* 0100000000000012 (bsdsockets)
 +
* 010000000000000F (nifm)
 +
* 0100000000000018 (ldn)
 +
* 010000000000001E (account)
 +
* 0100000000000020 (nfc)
 +
* 010000000000003C (jpegdec) [4.0.0+]
 +
* 0100000000000022 (capsrv)
 +
* 0100000000000024 (ssl)
 +
* 0100000000000025 (nim)
 +
* 010000000000002B (erpt)
 +
* 0100000000000033 (es)
 +
* 010000000000002E (pctl)
 +
* 010000000000002A (btm)
 +
* 0100000000000031 (glue)
 +
* 0100000000000032 (eclct)
 +
* 010000000000B120 (nvdbgsvc)
 +
* 010000000000002F (npns) [7.0.0+]
 +
* 0100000000000034 (fatal)
 +
* 0100000000000037 (ro) [3.0.0+]
 +
* 0100000000000038 (profiler) [3.0.0+]
 +
* 0100000000000039 (sdb) [3.0.0+]
 +
* 010000000000003A (migration) [4.0.0+]
 +
* 0100000000000035 (grc) [4.0.0+]
 +
* 010000000000003E (olsc) [6.0.0+]
 +
* 0100000000000041 (ngct) [9.0.0+]
 +
* 01000000000020D1 (DevSafeModeUpdater) [1.0.0]
 +
 +
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.
 +
 +
After launching all titles, it'll check the "boot!boot_devmenuapp_installer" setting and attempt to launch 01000000000020f0 (devmenuapp_installer) if it's set to true.
 +
 +
= boot2.Manu1st =
 +
As of version [[2.1.0|2.1.0]], 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)
 +
* 0100000000000009 (settings)
 +
* 0100000000000006 (usb)
 +
* 010000000000001D (pcie)
 +
* 010000000000000A (bus)
 +
* 0100000000000007 (tma)
 +
* 010000000000001A (pcv)
 +
 +
At this point it checks if the device is being booted in maintenance mode, if it is it opens the [[Process_Manager_services#pm:bm|pm:bm]] service and calls [[Process_Manager_services#pm:bm|SetMaintenanceBoot]] then attempts to to launch titles in the same order that [[#boot2.ManuBoot|boot2.ManuBoot]] does in maintenance mode.
 +
 +
Then it attempts to launch the following titles in the following order:
 +
* 010000000000001F (ns)
 +
* 0100000000000015 (lm)
 +
* 0100000000000034 (fatal)
 +
* 010000000000B14A (manu)
 +
 +
After launching these processes, it exits.
 +
 +
= boot2.FromHost =
 +
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)
 +
* 0100000000000009 (settings)
 +
* 0100000000000006 (usb)
 +
* 010000000000001D (pcie)
 +
* 010000000000000A (bus)
 +
* 0100000000000007 (tma)
 +
* 010000000000001A (pcv)
 +
 +
After launching these processes it'll attempt to load a list of process to launch off the host device.
 +
 +
First it checks if a "SIGLO_BOOT_LIST_DIR" environmental variable is present on the host device, if it is, it loads the list from "NX-NXFP2-a64.txt" from the directory specified in "SIGLO_BOOT_LIST_DIR".
 +
 +
If that fails, it checks if a "SIGLO_BOOT_LIST_PATH" environmental variable is present on the host device, if it is, it loads the list from the path specified by "SIGLO_BOOT_LIST_PATH".
 +
 +
If that also fails, it defaults to loading "C:/siglo_boot/list.txt" from the host PC.
118

edits

Navigation menu