How to package and deploy 3rd party applications to LEAFOS?
LEAFOS(X86) is an x86-64 Linux-based operating system designed for PC and laptop repurposing. Technically, applications or drivers which can be installed in a 64-bit Ubuntu Desktop environment should also be installable on LEAFOS to expand its functionality. This is now possible with LEAFOS firmware version 3.2.4 or higher versions.
3rd party applications need to be appropriately ‘packaged’ to make them deployable to LEAFOS devices. This packaging process must be performed with care to ensure that all required components and dependencies for the application, such as libraries, system services, drivers, etc., are included. Depending on the 3rd party application specifics, different levels of Linux expertise is required to perform the packaging process. For more advanced applications, collecting the necessary dependencies might be a complicated process requiring several days of work. If you don’t feel comfortable doing it on your own, please ask your NComputing representative and we will be glad to assist.
3rd party (custom) application support limitation
Packaging and installing 3rd party applications is NOT covered by our standard support. However, you can contract directly with NComputing for a one-time professional service fee and we will package the specified 3rd party applications. Please contact your NComputing representative for more information.
The following
describes the high-level technical concepts regarding the packaging of 3rd
party Linux application for the LEAFOS environment. This is intended for
technical personnel with extensive Linux knowledge.
Background
LEAFOS leverages a read-only Linux file system. However, LEAFOS has been designed to allow mounting designated 3rd party application(s) upon device bootup or application start thereby extending the core functionality.
To deploy a 3rd party application to LEAFOS, the software first needs to be put into a module (package) compatible with LEAFOS. This packaging is a one-time process. The created package must contain all dependencies (e.g., libraries) required by the 3rd party software that are not already present in the base LEAFOS. The created package file can then be deployed directly to LEAFOS devices (also remotely, with the PMC Endpoint Manager). Technically, the packages are files containing a squash file system (SquashFS) image.
To successfully proceed with 3rd party application packaging and deployment, it is important to understand the following LEAFOS concepts.
Modules:
LEAFOS modules are containers for the files which are necessary to extend the functionality of the base system. LEAFOS supports two module types: packaged application modules and system extension modules.
Packaged application modules:
· provide simplified method of deploying custom applications (of ‘packaged application’ type; see below), without the necessity to specify application details,
· allow deploying applications with conflicting dependencies (through separate ‘packaged application’ modules),
· only allow deploying one application in one module,
· do not require system reboot to be deployed,
· do not cause any risk of making the system unbootable, even when deploying modules containing errors.
System extension modules:
· integrate deeply with the underlying OS,
· allow deploying non-interactive daemons or services,
· allow updating system components (system tools, libraries, drivers, etc.),
· allow deploying multiple custom applications (of ‘system application’ type; see below) through one module,
· require LEAFOS system reboot to be deployed.
Warning: There is an inherent risk of making the system unbootable due to errors in the new system extension modules. If you do not have strong Linux expertise, we recommend you contact NComputing for technical assistance through our professional service program.
Custom Applications:
Besides the built-in local applications (Chromium web browser, Microsoft Teams, Zoom Client), the latest LEAFOS also allows defining custom applications. Custom applications are a special type of local application, where the application properties (the name, icon, executable command, etc.) can be specified manually or read from a deployed packaged application file (module).
LEAFOS supports two types of custom applications: packaged applications and system applications.
Packaged applications:
· have executable files located in ‘packaged application’ modules; the files are invisible by other system components and will be laid over the base LEAFOS only at application launch time,
· do not require the definition of application properties (the application package contains the definitions),
· run in an isolated environment, which even allows deploying applications having dependencies conflicting with the base LEAFOS.
System applications:
· have executable files located in the base LEAFOS or in ‘system extension’ modules; the files are visible by all system components,
· require definition of all properties (display name, executable command path, icon path, command parameters, etc.),
· run directly in LEAFOS (without isolation).
It is important to understand that although ‘packaged application module’ and the actual ‘packaged application’ are related with each other, they are not the same thing. Packaged application module is a container enclosing all packaged application files (all executables, dependencies, and metainformation describing the application’s properties). The packaged application is an item which appears on the local applications list. The user selects from the local applications list to launch the customer application.The following table compares both supported custom application types:
|
Packaged Applications |
System Applications |
Required module type |
Packaged Application Module |
None (just the base LEAFOS) or System Extension Module |
Characteristics |
· Run in isolated environment · Can have dependencies conflicting with base LEAFOS · Have the configuration contained in their modules · Must be launchable applications |
· Integrate deeply with underlying OS · Rely on base LEAFOS or on contents of System Extension modules · Must be explicitly configured · Can be launchable applications or non-interactive services |
Examples |
Web browsers, VoIP softphones, unified communication applications |
Libraries, drivers, VPN clients, monitoring agents, daemons or services |
Considerations before starting LEAFOS modules preparation
Before you start preparing a LEAFOS module which will be used to deploy a 3rd party application, please consider the following:
1. Application binary architecture
The binaries of the application you want to package must be available for 64-bit Linux environment. We use the 64-bit Ubuntu Desktop as reference 64-bit Linux OS.
2.
Application dependencies
You need to gather all Linux executables, libraries and configuration files
that are needed to run the 3rd party application in 64-bit Linux
environment (e.g., in 64-bit Ubuntu Desktop). Please refer to our example build
scripts for Linux commands used to extract all necessary Linux libraries for
the LEAFOS environment.
3.
Application launcher (optional)
You may need to create a launcher (which might be a script) to pre-set the
required configuration parameters specific to your 3rd party
application. The launcher uses the parameter values from the custom application
configuration in device settings to write those values into
application-specific files. Then it should launch the application’s executable.
4.
Application distribution rights
You must also have redistribution permissions for the software – usually this
is the case for open source/free software, but not for proprietary software.
Please read your license agreements and respect them.