Skip to content

Boot sequence

Tristan Israël edited this page Jun 23, 2026 · 5 revisions

This page describes the boot sequence of a system built upon Safecor.

Provisioning

The provisioning of the system is not described here, please look at the page Provisioning.

Steps

This section describes the steps during the boot of the system.

  • The system is powerd on by the user
  • Depending on the provisioning type, the local boot loader or the PXE boot loader is executed
  • The XEN kernel is loaded
  • The Linux kernel is loaded
  • The initial ramfs is loaded and init is started
    • The kernel modules are loaded for framebuffer, disks, etc
    • Safecor's splash screen is shown
  • The root filesystem is mounted
  • OpenRC is started
    • The sysinit runlevel is executed
      • The hardware is discovered
    • The boot runlevel is executed
      • AppArmor is started
      • The syslogger is started
      • The system configuration is done (hostname, clock, swap, ...)
      • The kernel modules for the hardware are loaded
    • The default runlevel is executed
      • The XEN services are started
      • The service libvirt is started
      • The security is enforced
      • If the debug mode is enabled, a serial TTY device and console are started
      • The X server is started
      • The product's splash screen is shown
      • The MQTT broker is started
      • The MQTT tunnels manager is started
  • The Safecor's initialization sequence is started
    • Depending on the provisioning type, Alpine packages may be downloaded from the public repository, including Safecor and specific application packages, into the local repository
    • The local PGP key is generated
    • The local repository is signed with the new PGP key
    • The Safecor Dom0 daemon is started
    • The orchestrator is started
      • The Domains configurations are created
      • The Domains are started
      • The USB devices are identified and attached to sys-usb
      • The communication channels are created for each Domain
        • Message channel
        • Log channel
        • Input channel
      • The Safecor's packages are installed in the Domains
        • safecor-sys-usb
        • safecor-sys-gui
      • In the sys-usb Domain:
        • The sys-usb controller is started
          • The mouse, keyboard and touch screen are monitored and all events are serialized in the inputs pv channel
        • A mdev rule is installed to monitor the USB storages, mount/unmount them and send notifications
        • If the debug mode is enabled the TTY tunnel is created between the serials ports and the tty pv channel.
      • In the sys-gui Domain:
        • The product's GUI package is deployed

Clone this wiki locally