The life of a service starts during the boot process, but with different hooks available, sometimes it is challenging
to find the correct one. This paragraph aims to explain the various integration spots availabe, which are
being explained in more detail in the rest of the chapter.
....................................
Bootup
....................................
After the kernel is loaded and the machine starts to boot, the following integration points are being executed
in sequence:
1.:doc:`syshook/early </development/backend/autorun>`, simple shell scripts to run before any network services are loaded,
can for example be used to load specific drivers.
2.:doc:`plugins/device </development/backend/legacy>`, register and create devices, services like OpenVPN use this on
our end to make sure :code:`tun` and :code:`tap` devices exist before doing further configuration.
3.:doc:`plugins/configure/early </development/backend/legacy>`, configure :code:`early` event in bootup process, before normal services are being started (things like ssh and the webconfigurator use this spot)
4.:doc:`plugins/firewall </development/backend/legacy>` allows for automatic firewall (nat) rule registration in cases where the service is able to ship its own rules. (some do this optionally for easy setup)
5.:doc:`plugins/configure/vpn </development/backend/legacy>`, configure :code:`vpn` event, vpn type services are being configured here (e.g. IPsec, OpenVPN)
6.:doc:`plugins/configure/bootup </development/backend/legacy>`, configure :code:`bootup` event, normal legacy service configuration, when not using the rc(8) system (for example: unbound, ntpd)
7.:doc:`syshook/start </development/backend/autorun>`, simple shell scripts to run after all networking has been setup.
8.:doc:`rc(8) </development/backend/autorun>`, regular `rc(8)` scripts (executed using the above :code:`the rc.syshook.d/start``)