OneOS is a distributed operating system based on the "pseudokernel" architecture.
The "pseudokernel" is realized by a network of communicating middleware services, which collectively appears as a single POSIX-based operating system.
The distributed middleware network is organized in a similar manner to many other distributed platforms/frameworks such as Kubernetes, Kafka, Flink, etc., with the control-plane components performing system-level orchestration tasks such as job placement.
The difference between OneOS and the other systems mentioned is that OneOS preserves the POSIX interface facing the applications, allowing unmodified user applications to run in a distributed setting. This means that the user does not need to write "OneOS apps". Instead, OneOS adopts the flow-based programming model, popular in many distributed application paradigms (e.g., serverless, stream-processing). A user can simply connect different POSIX processes using the familiar POSIX API such as files and sockets. For example, one can simply pipe the stdout
of a OneOS process to the stdin
of another.
Here we briefly describe the organization of this repository, for those who want to work with the source code. If you simply want to run OneOS, you can skip ahead to the installation section.
/src
/OneOS
/OneOS-Core
/OneOS-WebTerminal
src
directory contains the source code. OneOS is written mainly in C#, with some components written in JavaScript. Inside it, you will find theOneOS.sln
file, which is the Visual Studio solution file that you can load into Visual Studio.OneOS
directory contains most of the core OneOS components.OneOS-Core
directory contains just a single "main" file to be compiled into the OneOS CLI.OneOS-WebTerminal
directory contains the web-based GUI -- the "OneOS Desktop" -- written in JavaScript (usingexpress
andvue
).
The quickest way to install OneOS is to download one of the compiled binaries from the releases page. Download the appropriate binary for your platform. Once downloaded, change the name of the binary and make it executable by running:
mv oneos-linux-x64 oneos
chmod +x oneos
Then, you will need to configure OneOS before you run it for the first time. Run the following command to begin the interactive configuration process:
./oneos config
We include a sample exchange below -- make sure you change the values as necessary.
A configuration file will be created in the ~/.oneos
directory.
Finally, you can test your installation by spinning up a local test cluster and logging into it through the OneOS shell. Start the local test cluster by entering the following:
./oneos cluster
If this is the first time running the test cluster, you should see some directories being created and some NPM packages being installed. Then, you should see the nodes in the test cluster exchanging some initial handshakes. After you start the cluster, you can log in to OneOS using the OneOS shell:
./oneos shell
Once inside the shell environment, you can navigate using traditional Linux commands (note: we currently support a limited set of common commands for navigating the file system and monitoring the system. Common Linux programs such as vim are not available.)
Here are some of the publications and other materials that discuss OneOS in more depth:
- Conference Paper (IoTDI 2024) - ImmunoPlane: Middleware for Providing Adaptivity to Distributed Internet-of-Things Applications
- Conference Paper (SEC 2021) - OneOS: Middleware for running edge computing applications as distributed POSIX pipelines
- Short Paper (Middleware 2021) - OneOS: a distributed operating system for the Internet of Things
- Poster (EuroSys 2019), Abstract, and Demo Video (No Sound) - EuroSys2019
- Workshop Paper (HotEdge 2019), Slides - OneOS:IoT Platform based on POSIX and Actors
- Web Desktop Demo Video
Note: The code had a major rewrite in 2021, so the UI you see in demos and posters from before 2021 will look different from the current version.
MIT