XOROS Architecture Explained

September 7, 2023 ‐ 3 min read

XOROS is a modern operating system that is designed to run on embedded devices, such as point-of-sale (POS) terminals, kiosks, and self-service machines.

The architecture of XOROS is designed to be modular, extensible, and secure. The operating system is built on top of the Linux kernel and uses a microservices architecture to provide a flexible and scalable platform for developing applications.

Partition Layout

  • Boot Partition: Contains the bootloader, kernel, device tree, and initial ramdisk.
  • Root Partition A: Contains the root filesystem, including the system libraries, binaries, and configuration files.
  • Root Partition B: Contains a copy of the root filesystem. This partition is used for system updates and rollbacks.
  • Rescue Partition: Contains a minimal system image that can be used to recover the device in case of a failure.
  • Overlay Partition: Contains the overlay for /etc directory.
  • Data Partition: Contains the user data and application containers.

The following diagram illustrates the architecture of XOROS:

flowchart LR; LK[Linux Kernel]-->US; subgraph US[User Space] SD[Systemd]-->|Service|XS[XOROS Symbiote]; SD<-..->DBus; XS<-..->DBus; SD-->|Service|XD[XOROS Display]; XD<-..->DBus; AC<-..->|JSON-RPC|XA; XD-..->|HTTP|AC; SD-->|Service|AC[Application Container Image]; SD-->|Service|XA[XOROS Application Gateway]; XA<-..->DBus; SD-->|Service|XX[XOROS XFS]; XX<-..->DBus; end

XOROS Symbiote

The XOROS Symbiote is a service that acts as the core orchestrator of the XOROS operating system.

The Symbiote is responsible for managing the following aspects of the device that XOROS is running on:

  • Loading and unloading application container, managing container lifecycle
  • Configuring the device, its hardware components, and its software components

XOROS Display

The XOROS Display is a service that is responsible for managing the display of the device that XOROS is running on.

The display service is responsible for:

  • Rendering the user interface
  • Handling user input
  • Managing the display state
  • Managing the display resolution
  • Managing the display orientation

XOROS Display currently supports the following UI rendering technologies:

  • HTML5/CSS3/JavaScript
  • Qt/QML (in development)

XOROS Application Gateway

The XOROS Application Gateway is a JSON-RPC server that allows applications to communicate with other components of the XOROS operating system.

It is a service that runs in the user space and is managed by Systemd.

The gateway acts an application state-machine and is also responsible for managing the lifecycle of applications, handling application requests, and forwarding them to other XOROS components.

XOROS XFS

The XOROS XFS (based on LibreXFS project) is a service that acts as a hardware abstraction layer that provides a unified interface to the hardware components of the device that XOROS is running on.

The XFS is responsible for managing the hardware components of the device, such as:

  • PIN pad
  • Card reader
  • Printer
  • Cash acceptor
  • Cash dispenser
  • Coin acceptor
  • Coin dispenser
  • Cash recycler
  • Barcode scanner
  • Biometric scanner
  • NFC reader
  • Camera