OviOS 3.11OviOS Linux is an independent, storage operating system which combines open source technologies to provide a dedicated, performance-oriented storage system. The goal is to keep OviOS Linux a pure storage, appliance-like platform. The operating system features a command line interface and a special utility called OviOS Shell (sometimes written ovios-shell) to assist the administrator in setting up and managing services.
There is one build of OviOS for 64-bit (x86_64) computers. The download is a relatively compact 487MB in size. Looking over the documentation on the project's website reveals a few items I feel are worth mentioning. One is that booting OviOS is only supported on Legacy BIOS, not UEFI-enabled systems. Also, OviOS takes over one entire hard drive for the operating system. The install process will wipe out anything on the disk selected to hold the distribution: "The drive chosen for the install will be automatically wiped and partitioned for OviOS, any data will be permanently lost."
Booting from the install media brings up a console where we are asked to provide login credentials. We can sign in as the root user using the password "ovios". The system automatically launches the OviOS Shell which provides customized, limited control over key parts of the operating system. I will talk about this shell later. To get to a regular command line interface we can type "linuxcmd" to get a Bash shell. We can then configure networking and install the operating system.
From Bash we can run a command called setup to start the installer. The system installer uses a series of text-based menus to walk us through a few short steps. We are asked to pick our time zone and set the system clock. We are asked which hard drive the distribution should take over. No information about the available detected disks is shown, apart from their names. We do not get to see their size or manufacturer information.
The installer takes over the first disk, installing OviOS to the second partition. When it is done we can restart the computer or return to the command line interface. Something which first occurred during the install process, and regularly happened later during my trial, was background service messages would be periodically written to the screen. This happened regardless of which terminal I was using and what program I was running. The result was that text and prompts were sometimes hidden by these status messages, making it impossible to tell what I was selecting in a menu or what a status message had told me.
My newly installed copy of OviOS booted to a text console where I could still sign in with the original credentials. We can reset the root password (and regular user account passwords) once we get signed in. As before, when root signs in the OviOS Shell automatically runs.
Before using the OviOS Shell, I recommend checking out the documentation which covers working with services like Samba and setting up new storage pools through the OviOS Shell utility.
While we can use the Bash command line to set up user accounts, manage services, and deal with ZFS storage pools, I wanted to focus on what sets OviOS apart from other distributions, especially those with a NAS-like focus. For the most part I tried to stick with using OviOS Shell which is the heart of the distribution.
To start with, I feel it is worth mentioning pressing the Tab key while using the shell brings up a list of commands OviOS Shell can work with. Often times we can run a command and add a question mark or "-h" after it to see supported functions. For example we can run "pool ?" or "snap ?" to see options related to storage pools and snapshots.
The shell's built-in documentation is terse and often shows only supported keywords without any description. I also found not all commands support the question mark flag. To further cause confusion, not all commands listed with the Tab key are valid commands. For instance, if I pressed Tab OviOS Shell would display "status" as a command we can run. Trying to run "status" would result in an error saying the command wasn't recognized. The same error occurred when trying to use the shell's built-in "list" command.
I found some shell commands are just front-ends for regular command line programs. Running df just shows ZFS disk usage data in df's format. Running the OviOS Shell command top displays the output of the htop program.
To get started I used the OviOS Shell's pool command to set up ZFS storage. Running "pool create" offered me a list of RAID options and asked me to type in the full device name of the target drive. Unfortunately available devices are not listed so we need to look up the name of the device some other way ahead of time. We are then asked if we want to enable compression, with the default being "yes". I typed "yes" and hit Enter, only to be told compression was disabled as a result of my choice. Despite the lack of compression, I now had a ZFS pool located at /ovios/data.
After rebooting the computer I found my new ZFS pool was not mounted. There is an option set in OviOS which skips importing available ZFS storage at boot time. We can adjust this by running the following command from the OviOS Shell: "option skip.import off". I also found networking, even wired networking, was not enabled by default. We can set up a network connection by running the netsetup command from Bash. This allows us to assign a static IP address or a dynamic address to a selected interface.
Looking around the system a little I discovered OpenSSH is enabled by default and blocks direct access to the root account. We can create a regular user and have them login over secure shell. This provides access to files and the user account. This is especially useful when paired with tools which can work over OpenSSH, such as the FileZilla file transfer tool or rsync.
I looked at enabling Samba shares for easier access to files on the network through various file managers. There are a few steps involved in this process. We need to enable and start the Samba service. Following the on-line documentation I then needed to create a new user to be created for Samba remote access. The system asked me to provide it with the location of a filesystem share it would associate with the new user. The location is requested in the format of "/pool/volume". However, I found this doesn't work. The actual format needs to be the filesystem path to the directory we want to share. For instance, with my ZFS pool called "data", the proper name would be "/ovios/data" or "/ovios/data/share-this", not "/data/share-this". Once I worked that out the system asked me to make up a new username and password for the share. I did this and, a moment later, OviOS displayed an error saying it has failed to create the new user, but gave no indication of why. I was then returned to the shell prompt.
This failed process highlights an issue I repeatedly ran into with OviOS. The documentation and on-screen messages often feel terse or incomplete. There isn't a lot of information provided on how to use the OviOS Shell. There are some hints as to how to find available options or commands we can run to set up services, but very little explains what the available options do. There are rarely examples which show using the available commands.
OviOS is quite small and uses few resources. A fresh install consumed about 50MB of RAM when signed into the command line. Once I had created a ZFS storage pool and added some services, such as Samba, memory usage remained at a pleasant 60MB. The operating system itself only uses about 1.6GB of disk space.
Apart from some services such as Samba, NFS, and OpenSSH the distribution does not ship with much software. There are common command line tools, but the system stays focused and lightweight. OviOS runs the SysV init software (version 2.88) and version 4.14 of the Linux kernel. Both of these packages are a few years old at the time of writing. It seems OviOS is more inclined to sticking with tried and true software than the latest versions available.
In the distribution's documentation it mentions software management can be handled with pacman, the same package manager used by Arch Linux and its derivatives: "OviOS Linux excels in its simplicity and packages can be installed or upgraded easily with pacman." While it is true pacman is installed on the system and can be used to add new software from local packages, OviOS does not enable any repositories by default. There is no mirror list on the system. I searched through the documentation and found no reference to enabling repositories. As far as I can tell, apart from performing a fresh new install of OviOS about once a year, there isn't any way to keep software on the distribution up to date, short of installing new versions of vulnerable packages manually from source code.
OviOS offers a concept I find appealing: a minimal distribution designed to handle network storage and virtually nothing else. It's lightweight and focused. As someone who runs a backup server on an old Raspberry Pi, this is a style of distribution I can appreciate.
However, there were a number of issues with setting up and maintaining OviOS which frustrated me and made me reluctant to recommend the distribution. Earlier I mentioned the documentation tends to be terse and the on-screen messages are sometimes vague or misleading. There are OviOS Shell commands listed which are not recognized, not all commands have help messages, and those that do don't explain what their options do. Similarly, services and built-in options are listed, but not described. When I went to set up a Samba share and user, I was told the user account couldn't be created, but not why. This leaves the administrator fumbling in the dark.
This trend continues into package management. The pacman utility is present, but only seems to work with local packages we have downloaded from other projects. Which makes me wonder how one is supposed to keep OviOS up to date with security fixes. If the project provides updates I didn't find a way to enable them, and if it doesn't that leaves the user to manually upgrade packages from upstream source code, which isn't ideal for a dedicated device.
Most other storage-focused distributions I have used tend to do two things: streamline setting up storage volumes and provide a web-based interface. OviOS does neither of these. Setting up ZFS pools takes more manual effort that it would on platforms such a Ubuntu, FreeBSD, or TrueNAS. Unlike most NAS-style platforms there is no web-based administration, everything is handled from the command line. This makes OviOS slightly smaller than the alternatives, but using it requires more work.
The key to OviOS seems to be the OviOS Shell. It makes several options more visible and this can be useful. However, the shell often acts as a front-end to other commands without simplifying their use. I usually found myself getting frustrated with the custom shell and exiting to a Bash prompt to get work done because the commands available through Bash (such as zfs and zpool) work the same across multiple operating systems and that meant I didn't need to learn OviOS's custom approach to doing things. With more time to explore OviOS I would probably get used to the way it handles options and exposing system information, it might be worthwhile too. At this point though I find it easier to work around OviOS Shell to get the system set up.