<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>solaris &amp;mdash; LinuxPizza</title>
    <link>https://blogs.linux.pizza/tag:solaris</link>
    <description>Personal notes and occasional posts - 100% human, 0% AI generated</description>
    <pubDate>Tue, 14 Apr 2026 15:45:00 +0000</pubDate>
    <item>
      <title>OmniOS - The distant cousin to Linux</title>
      <link>https://blogs.linux.pizza/omnios-the-distant-cousin-to-linux</link>
      <description>&lt;![CDATA[OmniOS - The distant cousin to Linux&#xA;Linux distant cousin - OmniOS&#xA;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&#xA;&#xA;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).&#xA;&#xA;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).&#xA;&#xA;So, pick the hypervisor you want (Proxmox, VMWare, AHV, VirtualBox) and navigate to https://omnios.org/download to download the latest stable .iso.&#xA;&#xA;The installation itself is very straight forward, so I&#39;ll be skipping that part here.&#xA;&#xA;When you have installed the system, and rebooted - we need to get networking up and running.&#xA;Login to the machine with the user &#34;root&#34;, and no password.&#xA;&#xA;Lets enable networking, start by displaying the network-ports on your system. In my case - I&#39;m using a virtualized Intel e1000 network card (available in basically every hypervisor)&#xA;dladm show-link -o link&#xA;Output:&#xA;LINK&#xA;e1000g0&#xA;Great, since this virtual machine only have a single NIC - this output is expected.&#xA;&#xA;Lets create the interface, give it an IPv4 and add a default route via the network gateway:&#xA;ipadm create-if e1000g0&#xA;ipadm create-addr -T static -a 192.168.2.38/24 e1000g0/v4&#xA;route -p add default 192.168.2.254&#xA;Verify that you have network connection with ping:&#xA;ping 8.8.8.8&#xA;8.8.8.8 is alive&#xA;DNS-resolution is not yet working, so we have to take care of that. Lets modify echo &#34;domain local.lan&#34;   /etc/resolv.conf&#xA;echo &#34;nameserver 192.168.1.254&#34;     /etc/resolv.conf&#xA;In some cases, I have had to overwrite nsswitch.conf aswell:&#xA;cat /etc/nsswitch.dns   /etc/nsswitch.conf&#xA;We should be able to resolve our way into the internet now:&#xA;ping linux.pizza&#xA;linux.pizza is alive&#xA;&#xA;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&#xA;&#xA;Let&#39;s start by create a user:&#xA;useradd -m -d /home/jonathan -s /bin/bash jonathan&#xA;And set a password for the user, you can do it for the root-user aswell:&#xA;passwd jonathan&#xA;New password:&#xA;...&#xA;And last, enable the SSH-service:&#xA;svcadm enable ssh  &#xA;&#xA;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 &#34;su&#34; command.&#xA;Not that complicated, right?&#xA;&#xA;Let&#39;s update the system.&#xA;&#xA;Lets update the package-information from the repositories&#xA;pkg refresh&#xA;pkg update&#xA;Just let this run, your system will be updated. In some cases, your system will have to reboot. &#xA;&#xA;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&#39;ve made with ## Rollback the system&#xA;After you have rebooted your system, check the output of root@omnios:~# beadm list&#xA;BE               Active Mountpoint Space  Policy Created&#xA;omnios-r151038an -      -          65.40M static 2022-12-03 15:35&#xA;omnios-r151038ca NR     /          1.35G  static 2022-12-03 16:14&#xA;You&#39;ll see to environments, and the one marked with &#34;NR&#34; is the current active one. If you want to rollback, you could execute (in my case) &#xA;root@omnios:~# beadm activate omnios-r151038an&#xA;Activated successfully&#xA;root@omnios:~# &#xA;root@omnios:~# &#xA;root@omnios:~# &#xA;root@omnios:~# ls&#xA;1&#xA;root@omnios:~# beadm list&#xA;BE               Active Mountpoint Space   Policy Created&#xA;omnios-r151038an R      -          869.15M static 2022-12-03 15:35&#xA;omnios-r151038ca N      /          580.90M static 2022-12-03 16:14&#xA;Then do a quick Let&#39;s check the current active environment after the system has rebooted:&#xA;root@omnios:~# beadm list&#xA;BE               Active Mountpoint Space   Policy Created&#xA;omnios-r151038an NR     /          872.95M static 2022-12-03 15:35&#xA;omnios-r151038ca -      -          583.64M static 2022-12-03 16:14&#xA;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:&#xA;&#xA;root@omnios:~# beadm destroy omnios-r151038ca&#xA;Are you sure you want to destroy omnios-r151038ca?&#xA;This action cannot be undone (y/[n]): y&#xA;Destroyed successfully&#xA;root@omnios:~# beadm list &#xA;BE               Active Mountpoint Space   Policy Created&#xA;omnios-r151038an NR     /          748.05M static 2022-12-03 15:35&#xA;So, what is the practical / real world use for OmniOS?&#xA;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.&#xA;&#xA;If you are interested in more, you can check out my older post about Tribblix here.&#xA;&#xA;#unix #solaris #omnisos #illumos #tribblix #zfs&#xA;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p><img src="https://static.content.linux.pizza/jselea/content/omnios/omnios.svg" alt="OmniOS - The distant cousin to Linux" title="Linux distant cousin - OmniOS"></p>

<h1 id="linux-distant-cousin-omnios" id="linux-distant-cousin-omnios">Linux distant cousin – OmniOS</h1>

<h3 id="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" id="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">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</h3>

<p>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).</p>

<p>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).</p>

<p>So, pick the hypervisor you want (Proxmox, VMWare, AHV, VirtualBox) and navigate to <a href="https://omnios.org/download">https://omnios.org/download</a> to download the latest stable .iso.</p>

<p>The installation itself is very straight forward, so I&#39;ll be skipping that part here.</p>

<p>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.</p>

<p>Lets enable networking, start by displaying the network-ports on your system. In my case – I&#39;m using a virtualized Intel e1000 network card (available in basically every hypervisor)</p>

<pre><code>dladm show-link -o link
</code></pre>

<p>Output:</p>

<pre><code>LINK
e1000g0
</code></pre>

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

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

<pre><code>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
</code></pre>

<p>Verify that you have network connection with ping:</p>

<pre><code>ping 8.8.8.8
8.8.8.8 is alive
</code></pre>

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

<pre><code>echo &#34;domain local.lan&#34; &gt; /etc/resolv.conf
echo &#34;nameserver 192.168.1.254&#34; &gt;&gt; /etc/resolv.conf
</code></pre>

<p>In some cases, I have had to overwrite nsswitch.conf aswell:</p>

<pre><code>cat /etc/nsswitch.dns &gt; /etc/nsswitch.conf
</code></pre>

<p>We should be able to resolve our way into the internet now:</p>

<pre><code>ping linux.pizza
linux.pizza is alive
</code></pre>

<h3 id="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" id="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">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</h3>

<p>Let&#39;s start by create a user:</p>

<pre><code>useradd -m -d /home/jonathan -s /bin/bash jonathan
</code></pre>

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

<pre><code>passwd jonathan
New password:
...
</code></pre>

<p>And last, enable the SSH-service:</p>

<pre><code>svcadm enable ssh  
</code></pre>

<p>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?</p>

<h2 id="let-s-update-the-system" id="let-s-update-the-system">Let&#39;s update the system.</h2>

<p>Lets update the package-information from the repositories</p>

<pre><code>pkg refresh
</code></pre>

<pre><code>pkg update
</code></pre>

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

<p>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&#39;ve made with <code>beadm</code></p>

<h2 id="rollback-the-system" id="rollback-the-system">Rollback the system</h2>

<p>After you have rebooted your system, check the output of <code>beadm list</code></p>

<pre><code>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
</code></pre>

<p>You&#39;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) `<code>beadm activate omnios-r151038an</code></p>

<pre><code>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
</code></pre>

<p>Then do a quick <code>reboot</code> to boot into the active one.
Let&#39;s check the current active environment after the system has rebooted:</p>

<pre><code>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
</code></pre>

<p>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:</p>

<pre><code>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
</code></pre>

<h2 id="so-what-is-the-practical-real-world-use-for-omnios" id="so-what-is-the-practical-real-world-use-for-omnios">So, what is the practical / real world use for OmniOS?</h2>

<p>Since OmniOS use ZFS, anything storage-related makes sense, such as a Network Attached Storage (NAS) even a Virtual Machine Host with the <a href="https://omnios.org/info/bhyve">bhyve hypervisor</a> – which itself is very interesting.</p>

<p>If you are interested in more, you can <a href="https://blogs.linux.pizza/run-a-tor-relay-on-tribblix-an-illumos-retro-distribution">check out my older post about Tribblix here.</a></p>

<p><a href="https://blogs.linux.pizza/tag:unix" class="hashtag"><span>#</span><span class="p-category">unix</span></a> <a href="https://blogs.linux.pizza/tag:solaris" class="hashtag"><span>#</span><span class="p-category">solaris</span></a> <a href="https://blogs.linux.pizza/tag:omnisos" class="hashtag"><span>#</span><span class="p-category">omnisos</span></a> <a href="https://blogs.linux.pizza/tag:illumos" class="hashtag"><span>#</span><span class="p-category">illumos</span></a> <a href="https://blogs.linux.pizza/tag:tribblix" class="hashtag"><span>#</span><span class="p-category">tribblix</span></a> <a href="https://blogs.linux.pizza/tag:zfs" class="hashtag"><span>#</span><span class="p-category">zfs</span></a></p>
]]></content:encoded>
      <guid>https://blogs.linux.pizza/omnios-the-distant-cousin-to-linux</guid>
      <pubDate>Sat, 03 Dec 2022 15:46:53 +0000</pubDate>
    </item>
  </channel>
</rss>