| # Bootsvc |
| |
| `bootsvc` is (typically) the first program loaded by usermode (contrast with |
| [userboot](userboot.md), which is loaded by the kernel). `bootsvc` provides |
| several system services: |
| |
| - A filesystem service with the contents of the bootfs (/boot) |
| - A loader service that loads from that bootfs |
| |
| After preparing these services, it launches one program from the bootfs. The |
| program may be selected with a [kernel command line argument](/docs/reference/kernel/kernel_cmdline.md) |
| `bootsvc.next` (this default to `bin/component_manager` currently). The |
| launched program is provided with the bootfs mounted at `/boot` and the loader |
| service. `bootsvc.on_next_process_exit` controls whether bootsvc reboots or |
| shuts down the device when the process it starts exits. The kernel command |
| line arguments are provided to it via `envp`. See the documentation in |
| `system/core/bootsvc/main.cpp:LaunchNextProcess()` for more details. |