Installation und Einrichtung von OmniOS auf einem Homeserver

Inhaltsverzeichnis

1. OmniOS installieren

2. Swap-Datei vergrößern

3. System auf den neuesten Stand bringen

4. Lieblingseditor installieren


5. NFS-Server einrichten

6. PostgreSQL-Server installieren

7. SMF - Dienste verwalten

8. Handbücher / Literatur


9. SSD-Trim

10. Hilfe




HOME
An den Weihnachtstagen 2020 habe ich mich mit OmniOS beschäftigt. OmniOS ist eine auf dem Illumos Kernel basierende UNIX-Serverdistribution ohne grafische Benutzeroberfläche, die vom Solaris Betriebssystem der Firma Sun abstammt. Sun veröffentlichte in 2005 weite Teile von Solaris als Open-Source Betriebssystem unter dem Namen Opensolaris. Nach der Übernahme von Sun durch Oracle wurde Opensolaris wieder eingestellt und Solaris als proprietäres UNIX-Betriebssystem weiter geführt. Der Open-Source Code von Opensolaris wurde jedoch von Freiwilligen im Illumos Projekt weiterentwickelt. Auf Basis des Illumos Kernels gibt es u. a. die Open-Source Distributionen Openindiana, SmartOS und OmniOS. OmniOS ist auf den reinen Serverbetrieb ausgerichtet, Openindiana versucht den Desktop und Serverbereich abzudecken und SmartOS wird hauptsächlich als Hypervisor für Virtualisierung in Rechenzentren eingesetzt.

OmniOS unterstützt sämtliche Technologien von Solaris: ZFS, Dtrace, Zones usw.

Da ich schon immer neugierig auf ein echtes UNIX-Betriebssystem und Solaris war, habe ich OmniOS zunächst auf einem Testrechner installiert und einen Monat lang ausprobiert. Der Testrechner ist ein Lenovo Ideacentre mit einem Intel Core i3-8100 Prozessor, 4 GB RAM und einer 1 TB HDD. Solaris ist ganz neu für mich. Ich habe bisher nur Linux Kenntnisse.

Mein Ziel ist es, einen Datei- und Datenbankserver in der globalen Zone einzurichten (NFS und PostgreSQL). Ich habe keinerlei Erfahrung mit Zones. Ich habe auch noch keine umfassenden ZFS-Kenntnisse.

Nachdem OmniOS einen Monat ohne Probleme lief, habe ich das Betriebssystem auf meinem "produktiven" Server installiert und openSUSE Leap ersetzt. Es handelt sich um einen lüfterlosen Asus MiniPC PN 40 mit 8 GB RAM, 1 TB SSD und einem Intel Celeron N4100 Prozessor. Ich werde jetzt erst mal testen, ob ich langfristig damit zufrieden bin. Gespannt bin ich, ob Betriebssystem-Updates reibungslos funktionieren. Das werde ich aber erst im November 2021 erfahren, wenn der Support für die aktuelle stable 151036 endet.

Das USB-Betriebssystem Image ist nur 375 MB groß und kann von https://omnios.org/ heruntergeladen werden. OmniOS basiert auf einem minimalistischen Prinzip. Es wird nur das Betriebssystem selber und alle Werkzeuge, die zum Kompilieren des Betriebssystem benötigt werden, mitgeliefert. Zusätzlich kann noch das omnios-extra Repository eingebunden werden, das zusätzliche Programme, wie z.B. PostgreSQL enthält. Für meinen Homeserver reicht das völlig aus, da alles was ich benötige mitgeliefert wird.

Unter Linux habe ich zunächst einen bootfähigen USB-Stick mit dem Kommando:

sudo dd if=omniosce-r151036.usb-dd of=/dev/sdx status=progress && sync
 
erstellt. Das x muss durch den Gerätenamen des USB-Laufwerks ersetzt werden.

Nach dem Booten des USB-Sticks startet das übersichtliche Installationsprogramm innerhalb von wenigen Sekunden.

Das Installationsprogramm ist selbsterklärend, daher gehe ich jetzt nicht auf sämtliche Details ein. Um die Screenshots zu erstellen, habe ich den Installationsvorgang in Virtualbox nachgestellt.


1. OmniOS installieren



Durch Drücken der ENTER-Taste oder 8 Sekunden warten startet der Installer.



Ich habe den neuen Installer verwendet, also einfach ENTER-Taste drücken oder 8 Sekunden warten.




Jetzt wird das Tastaturlayout abgefragt.




Als nächstes den Menüpunkt "Find disks, create rpool, and install OmniOS auswählen.



Wenn OmniOS eine Festplatte erkannt hat, wird diese am Bildschirm angezeigt. Falls hier nichts angezeigt wird, wird das Speichermedium von OmniOS nicht erkannt bzw. nicht unterstützt. Standardmäßig kann nur die gesamte Festplatte für OmniOS ausgewählt werden.



Ich habe die Voreinstellungen für den ZFS Root Pool übernommen und mit "Continue" weitergemacht.

Auf den nächsten Seiten kann man einen Hostnamen vergeben und die Zeitzoneneinstellungen vornehmen. Ich verzichte hier auf die entsprechenden Screenshots.



Jetzt wird das Betriebssystem installiert.





Jetzt kann das installierte OmniOS Betriebssystem konfiguriert werden:



Ich empfehle, sämtliche Einstellungen nacheinander zu konfigurieren. Nach erfolgter Konfiguration sieht der Bildschirm so aus (ich habe allerdings auf meinem Testrechner noch ein Root-Passwort vergeben).




Ich habe dem Benutzer 'stefan' die Berechtigung des Administratorkontos hinzugefügt und sudo eingerichtet.



Jetzt muss das System neu gestartet werden ... und fertig ist die Installation. Hat bei mir ca. 10 Minuten gedauert!

Als erstes logge ich mich als root ins System ein, da noch einiges eingerichtet werden muss .. alle nachfolgenden Befehle müssen als root ausgeführt werden.


2. Swap-Datei vergrößern

Als erstes habe ich die Swap-Datei von den voreingestellten 1 GB auf 4 GB vergrößert:

Aktive Swap-Datei löschen

swap -d /dev/zvol/dsk/rpool/swap

Neue Größe setzen

zfs volsize=4G rpool/swap

Swap-Datei aktivieren

swap -a /dev/zvol/dsk/rpool/swap

Mit swap -lk kann man sich die Swap-Datei anzeigen lassen

root@omnios1:~# swap -lk
swapfile             dev    swaplo       blocks   free
/dev/zvol/dsk/rpool/swap 275,2        4K 4194300K 4194140K

 

3. System auf den neuesten Stand bringen

Das Paketmanagementsystem bei OmniOS ist wie bei Solaris IPS (Image Packaging System). Mit dem PKG - Befehl kann man Programme suchen, installieren, deinstallieren und updaten.

Zunächst sollte IPS auf den neuesten Stand gebracht werden:

pkg update pkg

Danach sämtliche Aktualisierungen einspielen:

pkg update


Sofern auch der Kernel aktualisiert wurde muss ein Reboot erfolgen. Es wird auch automatisch ein neues Boot Environment (BE) erstellt. Dies ist quasi eine Sicherungskopie des aktuellen BE. Hat den Vorteil, das man in das alte BE zurückwechseln kann, falls beim Update etwas schief gegangen ist. Beim Hochfahren des Rechners kann man auswählen, welches BE gestartet werden soll. Mit betätigen der ENTER-Taste wird das aktuelle, aktive BE gestartet.

Die BE kann man sich mit folgendem Befehl auflisten lassen:

root@omnios1:~# beadm list
BE                       Active Mountpoint Space  Policy Created
omnios-r151036           -      -          42,90M static 2021-02-12 15:25
omnios-r151036-backup-1  -      -          222K   static 2021-02-12 15:38
omnios-r151036o          -      -          7,70M  static 2021-02-12 15:40
omnios-r151036o-backup-1 -      -          257K   static 2021-02-14 22:37
omnios-r151036p          NR     /          1,68G  static 2021-02-19 21:57
omnios-r151036p-backup-1 -      -          180K   static 2021-03-24 20:05
omnios-r151036p-backup-2 -      -          267K   static 2021-03-25 19:11

Das aktive BE ist mit 'NR' gekennzeichnet.



4. Lieblingseditor installieren

Mein Lieblingseditor ist joe. Voreingestellt ist der vi mit dem ich leider nicht zurecht komme. joe erinnert mich an alte Wordstar Zeiten.

pkg install joe

Umgebungsvariable setzten:

joe .profile

Die folgende Zeile einfügen:

export EDITOR=joe

Mit STRG+kx joe verlassen und Datei speichern.

Danach Benutzer abmelden und wieder anmelden.



5. NFS-Server einrichten

In Verbindung mit meinen openSUSE Clients funktionierte NFSv3 am besten. Bei NFSv4 dauert es ca. 1 Minute bis das NFS-Share gemountet wurde.

5a) UID und GID

Wichtig ist, dass die Benutzer UID und die Gruppen GID auf dem NFS-Server und den NFS-Clients identisch ist. Ansonsten werden die auf dem NFS-Server gespeicherten Dateien dem User und der Gruppe 'nobody' zugeordnet.

UID des Benutzers auf dem Client abfragen:

cat /etc/passwd

GID der Gruppe auf dem Client abfragen:

cat /etc/group

In meinem Beispiel soll der Benutzer 'stefan' mit der UID 1000 und die Gruppe 'users' mit der GID 100 auf das NFS-Volume zugreifen können.

Auf dem OmniOS System können UID und GID ebenfalls über die /etc/passwd und /etc/group abgefragt werden.

Standardmäßig hat der bei der Installation eingerichtete Benutzer unter OmniOS die UID 100.

Änderung der UID:

usermod -u 1000 stefan

Die Zugriffsrechte des Benutzers 'stefan' aktualisieren:

chown -R stefan /home/stefan
chgrp -R staff /home/stefan

'staff' ist die Standardgruppe für einen Benutzer unter OmniOS. Kann so bleiben.

Unter OmniOS gibt es die Gruppe 'users' standardmäßig nicht und die Gruppe 'sudo' hat die GID 100.

GID der Gruppe 'sudo' in 101 ändern:

groupmod -g 101 sudo

Gruppe 'users' mit GID 100 erstellen:

groupadd -g 100 users


5b) Zu exportierendes Verzeichnis erstellen / NFS Server konfigurieren und starten

Das Verzeichnis /home/GRUPPE soll als NFS-Share exportiert werden.

ZFS Dataset anlegen:

zfs create rpool/home/GRUPPE

ZFS Datasets anzeigen:

root@omnios1:~# zfs list
NAME                                  USED  AVAIL  REFER  MOUNTPOINT
rpool                                 136G   763G  25,5K  /rpool
rpool/ROOT                           1,73G   763G    24K  legacy
rpool/ROOT/omnios-r151036            42,9M   763G   657M  legacy
rpool/ROOT/omnios-r151036-backup-1    222K   763G   665M  /
rpool/ROOT/omnios-r151036o           7,70M   763G   898M  /
rpool/ROOT/omnios-r151036o-backup-1   257K   763G   902M  /
rpool/ROOT/omnios-r151036p           1,68G   763G   890M  /
rpool/ROOT/omnios-r151036p-backup-1   180K   763G   886M  /
rpool/ROOT/omnios-r151036p-backup-2   267K   763G   916M  /
rpool/dump                           2,00G   763G  2,00G  -
rpool/home                            128G   763G    24K  /home
rpool/home/GRUPPE                     128G   763G   128G  /home/GRUPPE
rpool/home/stefan                    69,5K   763G  69,5K  /home/stefan
rpool/swap                           4,25G   767G  2,16M  -


Dem User 'stefan' und der Gruppe 'users' Lese- und Schreibrechte auf /home/GRUPPE einräumen.

chown -R stefan /home/GRUPPE
chgrp -R users /home/GRUPPE


Sharegroup erstellen:

sharemgr create -P nfs nfs-gruppe


NFS-Server starten:

svcadm enable -r network/nfs/server
svcadm enable -r network/nfs/mapid



Zu exportierendes Verzeichnis zur Sharegroup hinzufügen:

sharemgr add-share -s /home/GRUPPE nfs-gruppe


Bis OmniOS 151036

Datei /etc/dfs/dfstab mit dem Lieblingseditor aufrufen und die folgende Zeile einfügen (IP-Adresse natürlich durch die eigene ersetzen):

share -F nfs -o nosuid,sec=sys,rw=@192.168.1.100 /home/GRUPPE @nfs-gruppe

Datei speichern und Editor verlassen.

Bedeutung der eingefügten Zeile: Der NFS-Client mit der IP-Adresse 192.168.1.100 bekommt Lese- und Schreibrechte auf das Verzeichnis /home/GRUPPE. Wenn noch weitere NFS-Clients auf das Verzeichnis zugreifen sollen sind die IP-Adressen mit ':' getrennt einzufügen.

Einstellungen aus der /etc/dfs/dfstab anwenden:

shareall

Achtung: ab OmniOS 151038!

Ab Omnios 151038 scheint die Konfiguration über die /etc/dfs/dfstab nicht mehr zu funktionieren. Die o.a. Zeile aus der /etc/dfs/dfstab muss mit dem Befehl

sharemgr share -F nfs -o nosuid,sec=sys,rw=@192.168.1.100 /home/GRUPPE

eingegeben werden! Ansonsten erscheint eine Fehlermeldung!


5c) NFS-Client konfigurieren (Linux)

Ich setze voraus, dass der Leser dieser Anleitung weiss, wie man einen NFS-Client unter Linux installiert und konfiguriert.

Um NFSv3 zu verwenden sollte in der /etc/fstab unter den Optionen der Eintrag nfsvers=3 eingetragen werden. Beispiel:

omnios.home.de:/home/GRUPPE /home/GRUPPE nfs nfsvers=3,user,noauto,hard,intr 0 0


6. PostgreSQL-Server installieren und einrichten

PostgreSQL ist im omnios-extra Repository zu finden.

Die folgenden Pakete sind in OmniOS 151036 vorhanden:

root@omnios1:~# pkg search -p postgres
PACKAGE                                             PUBLISHER
pkg:/ooce/database/postgresql-10@10.16-151036.0     extra.omnios
pkg:/ooce/database/postgresql-11@11.10-151036.0     extra.omnios
pkg:/ooce/database/postgresql-11@11.11-151036.0     extra.omnios
pkg:/ooce/database/postgresql-11@11.9-151036.0      extra.omnios
pkg:/ooce/database/postgresql-12@12.4-151036.0      extra.omnios
pkg:/ooce/database/postgresql-12@12.5-151036.0      extra.omnios
pkg:/ooce/database/postgresql-12@12.6-151036.0      extra.omnios
pkg:/ooce/database/postgresql-13@13.0-151036.0      extra.omnios
pkg:/ooce/database/postgresql-13@13.1-151036.0      extra.omnios
pkg:/ooce/database/postgresql-13@13.2-151036.0      extra.omnios
pkg:/ooce/database/postgresql-96@9.6.19-151036.0    extra.omnios
pkg:/ooce/database/postgresql-96@9.6.20-151036.0    extra.omnios
pkg:/ooce/database/postgresql-96@9.6.21-151036.0    extra.omnios
pkg:/ooce/database/postgresql-common@1.0.0-151036.0 extra.omnios
pkg:/ooce/developer/freepascal@3.2.0-151036.0       extra.omnios


Um z.B. PostgreSQL 10.16 zu installieren geben Sie folgenden Befehl ein:

pkg install database/postgresql-10@10.16
pkg install database/postgresql-common


Das Paket postgresql-common muss immer installiert werden. Kann sein, dass es automatisch installiert wird, wenn postgresql-10 installiert wird. Mit dem Befehl pkg list kann man überprüfen, ob die Pakete installiert wurden ... in der letzten Spalte muss ein i stehen:

stefan@omnios1:~$ pkg list *postgres*
NAME (PUBLISHER)                                  VERSION                    IFO
ooce/database/postgresql-10 (extra.omnios)        10.16-151036.0             i-l
ooce/database/postgresql-common (extra.omnios)    1.0.0-151036.0             i--

Das Standard-Programmverzeichnis von PostgreSQL 10 lautet: /opt/ooce/pgsql-10/bin

Das Standard-Datenbankverzeichnis ist: /var/opt/ooce/pgsql/pgsql-10

Mit der Installation des Paketes postgresql-common wird automatisch der Benutzer 'postgres' und die Gruppe 'postgres' angelegt.

Die Initialisierung des Datenbankclusters muss mit dem Benutzer 'postgres' erfolgen.

Zum Benutzer 'postgres' wechseln:

su - postgres

Inititalisieren des Datenbankclusters:

initdb -E unicode -D /var/opt/ooce/pgsql/pgsql-10

exit (Benutzer postgres ausloggen)

Starten des PostgreSQL Servers:

svcadm enable -r database/postgresql10:default

Kontrollieren ob der PostgreSQL-Server läuft:

root@omnios1:~# svcs *postgres*
STATE  STIME    FMRI
online 19:08:45 svc:/ooce/database/postgresql10:default


Wenn bei STATE 'online' steht, läuft der Server. Wenn dort 'maintainance' steht, ist was schief gelaufen.

Wenn jetzt jemand mein Finanzbuchhaltungsprogramm TkFibu mal ausprobieren möchte, kann im TkFibu Handbuch nachlesen, wie der PostgreSQL-Server dafür konfiguriert werden muss ... ;-)


7. SMF - Dienste verwalten

Unter OmniOS (und Solaris) werden Dienste über SMF (Service Management Facility) verwaltet.

Hier in Kurzform die wichtigsten Befehle:

Alle auf dem System verfügbaren Dienste anzeigen (online = Dienst gestartet, disabled = Dienst nicht gestartet, maintainance = Dienst im Wartungsmodus):

svcs -a

Nur bestimmte Dienste anzeigen:

svcs *suchbegriff* 

Dienst starten:

svcadm enable

Dienst stoppen:

svcadm disable

Dienst neu starten:

svcadm restart

Dienst konfigurieren:

svccfg -s


8. Handbücher / Literatur

Die Infos für die oben beschriebenen Installationsanweisungen habe ich mir aus den folgenden Dokumentationen zusammen gesucht. Am umfangreichsten sind die offiziellen Solaris-Handbücher. Vieles funktioniert unter OmniOS, aber leider nicht alles.

Die offiziellen Solaris Handbücher von Oracle

Openindiana Docs (Dort gibt es Links zu den Openindiana und Opensolaris Handbüchern)

OmniOS


9. SSD-Trim

OmniOS bzw. ZFS unterstützt das Trim-Kommando bei SSDs.

Standardmäßig ist Autotrim in OmniOS ausgeschaltet.

Autotrim aktivieren:

zpool set autotrim=on

Abfragen, ob autotrim aktiviert ist:

zpool get autotrim

Trim manuell anstoßen:

zpool trim rpool

Den Trim-Status abfragen:

zpool status -t rpool


10. Hilfe

Alle Fragen, die ich zu OmniOS hatte, wurden super schnell und kompetent auf der Mailingliste beantwortet. Eine sehr freundliche und hilfsbereite Community!


HOME

letzte Aktualisierung: 28.05.2021