boot2 is the first non-built-in sysmodule. It's presumably hardcoded to be the first sysmodule launched by PM.
It connects to "pm:shell" service and launches the following titles in this order:
- 0100000000000021 (psc)
- 0100000000000009 (settings)
- 0100000000000006 (usb)
- 010000000000001D (pcie)
- 010000000000000A (bus)
- 0100000000000007 (tma)
- 010000000000001A (pcv)
Then it connects to "set:sys" and reads a bool from "boot" section called "force_maintenance" with default value true.
If the value reads successfully as false, it initializes "gpio" and opens sessions for GPIOs 26 and 25. 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:
- 0100000000000023 (am)
- 0100000000000019 (nvservices)
- 010000000000001C (nvnflinger)
- 010000000000002D (vi)
- 010000000000001F (ns)
- 0100000000000015 (lm)
- 010000000000001B (ppc)
- 0100000000000010 (ptm)
- 0100000000000013 (hid)
- 0100000000000014 (audio)
- 0100000000000029 (lbl)
- 0100000000000016 (wlan)
- 010000000000000B (bluetooth)
- 0100000000000012 (bsdsockets)
- 010000000000000F (nifm)
- 0100000000000018 (ldn)
- 010000000000001E (account)
- 010000000000000E (friends) [skipped in maintenance]
- 0100000000000020 (nfc)
- 0100000000000022 (capsrv)
- 0100000000000024 (ssl)
- 0100000000000025 (nim)
- 010000000000000C (bcat) [skipped in maintenance]
- 010000000000002B (erpt)
- 0100000000000033 (es)
- 010000000000002E (pctl)
- 010000000000002A (btm)
- 0100000000000030 (eupld) [skipped in maintenance]
- 0100000000000031 (glue)
- 0100000000000032 (eclct)
- 010000000000002F (npns) [skipped in maintenance]
- 0100000000000034 (fatal)
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.