OviOS 2.31OviOS is a Linux-based distribution which is designed to act as a storage appliance. OviOS can be thought of along similar lines as a network attached storage (NAS) device, a box dedicated to holding and sharing files over a network. Where OviOS differs from most NAS solutions is OviOS does not feature a graphical or web-based interface. Everything on OviOS is managed from a command line shell, typically over a secure shell (OpenSSH) connection. The OviOS distribution ships with its own, custom shell which should streamline administration. The central idea behind the project appears to be making file storage and sharing as minimal as possible, without any unnecessary features such as web-based control panels.
OviOS ships with ZFS support, giving us the ability to create multi-disk storage volumes, compress files at the file system level and create snapshots of our data. The distribution currently does not support booting on UEFI-enabled computers and runs on 64-bit x86 machines which support booting in legacy BIOS mode only.
I download OviOS 2.31 which is available as a 430MB ISO file. Booting from the project's media brings up a text console where we can sign in using one of two accounts. There is a root account and a regular user account called ovios. Both accounts are protected by the password ovios. To run the system installer we need to login as the root user and then run the setup command.
OviOS's system installer runs in a curses text environment and contains just two significant steps. In the first step we are given the option of setting our system clock and selecting our time zone from a list. The second step asks us to select which hard drive will be used to hold the operating system. Once we have selected a disk, the installer creates a partition, formats it with the ext4 file system and copies its files into place. The installer takes over the entire drive, wiping anything else we had on the disk. The installation takes just a few minutes and, when it is over, we can reboot the computer to try out our new copy of OviOS.
Launching our new install of OviOS brings us to a text console. The root and ovios accounts which existed on the installation disc are still in place, protected with the same password. Once we get signed in, we can create new passwords using the passwd command. OviOS is a minimal operating system, using about 1.5GB of disk space and 30MB of RAM with the default configuration. The system includes version 4.9 of the Linux kernel, SysV init, the standard collection of GNU userland tools and the Pacman package manager. Pacman is not configured with any repositories, meaning we cannot, with the default settings, install any new packages or upgrade existing software.
When we sign into OviOS's root account, the custom OviOS command line shell starts up. This shell is minimal and just grants us access to a few dozen commands which deal with storage, networking and sharing files. We can type "?" to see a full list of the available commands or run linuxcmd to switch to a Bash command line shell. A quick overview of key OviOS shell commands can be found in the project's documentation.
Using OviOS shell
I started out by setting up my OviOS system with a static IP address so I could use secure shell to access the server and later backup my files to a known address. Running the netsetup command walks us through configuring the network card with an address, network mask and gateway. However, there is no option in netsetup to choose a DNS server. The netsetup command assumes our gateway will also act as a DNS server, incorrectly in my case. This meant I was unable to connect to remote systems using hostnames (like google.com) at first. I was able to work around this problem by running a Bash shell and adding my real DNS servers to the /etc/resolv.conf file.
Since OviOS takes over an entire disk with its root partition we are left to set up data volumes on our remaining hard drives. From the OviOS shell we can set up new ZFS storage pools using the pool create command. This command basically acts as a wrapper for the zpool command line tool. It takes the names of devices we want to use (such as /dev/sdb), gets us to select the RAID layout of the disks and asks us to provide a name for the pool. Newly created pools are mounted under the /ovios directory.
There is an OviOS shell command called zfs-admin which I had assumed would act as a wrapper for the zfs command. However, I found zfs-admin would only enable and disable the ZFS module, more or less turning ZFS support on/off, and display the status of mounted file systems. A separate shell command, snap, manages ZFS snapshots on our mounted volumes.
Two of the more useful commands in the OviOS shell are options and services. The options command displays (and can alter) variables the system recognizes. For example, there is an option to determine which port the OpenSSH service listens on, another option controls whether we set the system clock using NTP, a third option determines whether we send logs to a remote server. There are several of these options the shell gives us quick access to. The only problem I had with the options command was there were so many options some would scroll off the screen if I was using a local terminal. When logged into the server remotely, I could use my virtual terminal's scroll function to scan through options.
The services command works almost exactly like other distributions' service or systemctl commands. OviOS's services shows us the status of daemons (ie whether they are running or not) and gives us the option of starting or stopping background services. By default, most services are disabled with just OpenSSH running. While using the OpenSSH service to login remotely I found I could sign in as the ovios user, but root logins are blocked. Once we sign in as ovios we can switch over to the root account using the su command. I like this feature as it gives us an extra layer of security against brute force attacks.
While the services, pool and options commands worked fairly well for me, many other built-in shell commands did not. For example, when I tried to create a Samba user to share my files, the OviOS shell reported the volume where I wanted to make my user's home directory did not exist. I confirmed the directory did exist, and tried a few alternative locations, but each time the user creation command failed.
Later, when I tried to create anonymous Samba shares to browse over the network, the OviOS shell gave me the unhelpful error: "DIALOG: command not found" and then the screen was wiped clean.
I ran into a similar problem when I tried to enable the FTP service. The FTP daemon doesn't work because it is configured to share files in the /home/ftp directory, which does not exist. The shared location not even in the same directory tree where storage volumes get mounted. We need to exit the shell and manually adjust the FTP services's configuration to get it working.
The OviOS documentation mentions a command called autosnap which will take scheduled snapshots of a ZFS volume. This seems like a good idea as having regular snapshots will help users avoid accidental data loss. However, the autosnap command is not recognized by the shell. There is a snap command for manually creating file system snapshots and it works in a similar matter to using zfs snapshot from the Bash command line.
I generally like appliance style distributions which focus on doing one thing well and streamlining the process. When I first started using OviOS things looked promising. The distribution has a small ISO, a very simple system installer and a dedicated shell for working with (and sharing) storage volumes. Having ZFS support built into a Linux distribution was another nice touch.
However, once I got OviOS installed I ran into one frustration after another. Many of the custom shell commands presented to the root user simply did not work, or were configured in ways which made it necessary to dig through configuration files to get things working properly. I don't mind doing away with the typical NAS web-based control panel, but the trade-off should be a system where the few controls presented work without fuss and that is not what I got with OviOS. I had to manually tweak DNS settings, manually set up network shares, and manually configure FTP access to use the proper directory.
What I found most odd though was that OviOS's custom shell tended not to simplify administrative tasks. Using the shell's built-in zfs-admin, pool and snap commands are not, in my opinion, easier and more streamlined than using the standard zpool and zfs programs, but OviOS's method provides less documentation.
OviOS's minimalism and easy setup are to be commended, but I think the project trades away too much functionality in its shell. I found most of the time I had to exit the OviOS shell and switch to Bash to get things working and it's not a great sign when the user is working around the provided features rather than using them. I was also concerned that there doesn't appear to be any way to apply security updates to the operating system. The Pacman package manager does not connect to any remote servers and I did not find any documentation on the project's website addressing this issue. The project's website claims, "OviOS Linux excels in its simplicity and packages can be installed or upgraded easily with pacman," but Pacman is disabled with the default setup. The website's FAQ, Documentation, Features and forum do not discuss which, if any, Pacman repositories OviOS can use. This is likely to be a significant security risk for systems which are designed to run network services and share files.