JLinux
JLinux is an operating system based on linux designed for central management of software with an infinite and continuous lifecycle.
The software is tested and maintained in accordance with ISO27001 and NIS2. Maintenance is performed automatically during each servers configured maintenance window. During this maintenance window, which can be for a second or minutes, the monitoring system automatically pauses alerts.
If an update failed, the management system is notified in real time triggering alerts via JService.
JLinux uses multifactor authentication based on
JID.
JLinux is maintained by the package manager jlinux-update which is supervised by JService.
Jlinux-update can run in central orchestrated or local stand-alone mode. In central mode all services and bootstrap config is configured from the orchestration portal.
To update software manually:
jlinux-update update
To update software and deployments when in orchestrated mode:
jlinux-update all
To check if there are pending updates:
jlinux-update check
To install a package it can either be added to /etc/app/jlinux/updatelist for continuous updates, or installed one-type using:
jlinux-update install <package> (optional version)
JLinux package structure
A package can contain anything from a single application to a collection of many. It is preferable to not make a
huge monolithic/static package containing every single dependency
because this will make it more time consuming to update and maintain the
system.
The folder structure of this package is as following
/usr/app/testpackage/1.0/
- bin - misc applications or non-privileged daemons. Automatically added to system path
- sbin - privileged applications and daemons. Automatically added to system path
- lib - libraries used by the applications in the package. Automatically added to LD library path.
- etc
- default template config files for the package. This folder will be
used as /etc/app/testpackage/. If service support multiple instances, it
may be used as /etc/app/testpackage/instancename/
- var - default
template data folder for the package. This folder will be used as
/var/app/testpackage/. If service support multiple instances, it may be
used as /var/app/testpackage/instancename/
- j/service - folder
with executable files, one for each supported service by the package
which can be started by jservice. The name of the file is the same as
the service name, and the parameter when executed is the path to the
config file.
- j/onupdate/service/ - folder with executable
files which if exist will be executed when a service is installed or
updated. This also include config updates.
- j/onupdate/package - executable file which will be executed when the package itself is installed or updated.
- dependencies - text file with list of jlinux packages on each line required to use this package
For software using autoconf, the above structure can easily be achieved using
#
configure --prefix=/usr/app/<NAME>/<VERSION>
--sysconfdir=/etc/app/<NAME> --localstatedir=/var/app/<NAME>
This folder structure is not required, but suggested in order to structure standard packages.
Deploying JLinux packages
Deploying new packages to the repository is done using the jlinux-deploy tool.
jlinux-deploy <username> <password> <path to private key> <.tar.gz file or package root path> <package name> <package version> <description>
A package can be either public or private. Public means that anyone can download it, while private is filtered on servers belonging to customer / service ID.