LinuxPizza

zfs

OmniOS - The distant cousin to Linux

Linux distant cousin – OmniOS

Not so long ago, there where plenty of cousins alive and well in the world. You may have heard about Solaris, IRIX, AIX, HP-UX – in this post, we will explore the grand-child to SunOS called OmniOS

OmniOS is based on the Illumos kernel – a fork of the long forgotten and abandoned OpenSolaris kernel that famously was killed by Oracle shortly after the takeover from Sun Microsystems (rest in peace).

I personally, are not fond of a homogeneous IT world, where every system is basically the same. I do think that diversity is good. So I hope that I can you as a reader interested in different Linux-alternatives (that is not BSD).

So, pick the hypervisor you want (Proxmox, VMWare, AHV, VirtualBox) and navigate to https://omnios.org/download to download the latest stable .iso.

The installation itself is very straight forward, so I'll be skipping that part here.

When you have installed the system, and rebooted – we need to get networking up and running. Login to the machine with the user “root”, and no password.

Lets enable networking, start by displaying the network-ports on your system. In my case – I'm using a virtualized Intel e1000 network card (available in basically every hypervisor)

dladm show-link -o link

Output:

LINK
e1000g0

Great, since this virtual machine only have a single NIC – this output is expected.

Lets create the interface, give it an IPv4 and add a default route via the network gateway:

ipadm create-if e1000g0
ipadm create-addr -T static -a 192.168.2.38/24 e1000g0/v4
route -p add default 192.168.2.254

Verify that you have network connection with ping:

ping 8.8.8.8
8.8.8.8 is alive

DNS-resolution is not yet working, so we have to take care of that. Lets modify /etc/resolv.conf with the following

echo "domain local.lan" > /etc/resolv.conf
echo "nameserver 192.168.1.254" >> /etc/resolv.conf

In some cases, I have had to overwrite nsswitch.conf aswell:

cat /etc/nsswitch.dns > /etc/nsswitch.conf

We should be able to resolve our way into the internet now:

ping linux.pizza
linux.pizza is alive

Create a user and enable SSH, most of you will probably recognize the steps, since they are fairly basic and do not differ that much from how you would to in on a modern Linux machine

Let's start by create a user:

useradd -m -d /home/jonathan -s /bin/bash jonathan

And set a password for the user, you can do it for the root-user aswell:

passwd jonathan
New password:
...

And last, enable the SSH-service:

svcadm enable ssh  

Great, you should now be able to SSH-into the machine with the user you just created. You can elevate yourself into the root-user with the “su” command. Not that complicated, right?

Let's update the system.

Lets update the package-information from the repositories

pkg refresh
pkg update

Just let this run, your system will be updated. In some cases, your system will have to reboot.

And here, is where OmniOS shines – you can reboot your system – test it after you have performed the updates, and if stuff does not really work, you can simply rollback the changes you've made with beadm

Rollback the system

After you have rebooted your system, check the output of beadm list

root@omnios:~# beadm list
BE               Active Mountpoint Space  Policy Created
omnios-r151038an -      -          65.40M static 2022-12-03 15:35
omnios-r151038ca NR     /          1.35G  static 2022-12-03 16:14

You'll see to environments, and the one marked with “NR” is the current active one. If you want to rollback, you could execute (in my case) `beadm activate omnios-r151038an

root@omnios:~# beadm activate omnios-r151038an
Activated successfully
root@omnios:~# 
root@omnios:~# 
root@omnios:~# 
root@omnios:~# ls
1
root@omnios:~# beadm list
BE               Active Mountpoint Space   Policy Created
omnios-r151038an R      -          869.15M static 2022-12-03 15:35
omnios-r151038ca N      /          580.90M static 2022-12-03 16:14

Then do a quick reboot to boot into the active one. Let's check the current active environment after the system has rebooted:

root@omnios:~# beadm list
BE               Active Mountpoint Space   Policy Created
omnios-r151038an NR     /          872.95M static 2022-12-03 15:35
omnios-r151038ca -      -          583.64M static 2022-12-03 16:14

And we can see that the old one, created at 15:35 is the one that is currently active. We can now remove the newer one, since we dont need it anymore:

root@omnios:~# beadm destroy omnios-r151038ca
Are you sure you want to destroy omnios-r151038ca?
This action cannot be undone (y/[n]): y
Destroyed successfully
root@omnios:~# beadm list 
BE               Active Mountpoint Space   Policy Created
omnios-r151038an NR     /          748.05M static 2022-12-03 15:35

So, what is the practical / real world use for OmniOS?

Since OmniOS use ZFS, anything storage-related makes sense, such as a Network Attached Storage (NAS) even a Virtual Machine Host with the bhyve hypervisor – which itself is very interesting.

If you are interested in more, you can check out my older post about Tribblix here.

#unix #solaris #omnisos #illumos #tribblix #zfs