Stefans Computer Blog


Installation von OmniOS auf meinem Homeserver

Inhaltsverzeichnis

1. Einleitung
2. OmniOS installieren
3. Swapdatei vergrößern
4. System auf den neuesten Stand bringen
5. Lieblingseditor installieren
6. NFS-Server einrichten
7. PostgreSQL-Server installieren
8. NTP-Dienst einrichten
9. SMF - Dienste verwalten
10. SSD-Trim
11. Hilfe
12. Handbücher - Literatur

1. Einleitung

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. Für einen USB-Stick muss unbedingt das Image mit der Endung '.usb-dd' ausgewählt werden!

Das DVD-Image hat die Endung '.iso'.

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.


2. 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. Ich empfehle, die gesamte Festplatte für OmniOS auszuwählen.




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. Außerdem habe ich den SSH-Server und das Extra Packages Repo aktiviert.




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.


3. Swapdatei 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


stefan@omnios1:~$ swap -lk
swapfile             dev          swaplo   blocks     free
/dev/zvol/dsk/rpool/swap 275,2        4K 4194300K 4189300K
			


4. 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.

Mit dem folgenden Befehl wird das komplette System auf den aktuellen Stand gebracht:


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:


stefan@omnios1:~$ beadm list
BE                        Active Mountpoint Space  Policy Created
omnios-r151036            -      -          42,90M static 2021-02-12 15:25
omnios-r151038            -      -          7,04M  static 2021-05-17 19:06
omnios-r151038g           -      -          6,77M  static 2021-06-14 20:09
omnios-r151038k           -      -          6,69M  static 2021-07-13 20:05
omnios-r151038s           -      -          6,82M  static 2021-09-07 21:50
omnios-r151038v           -      -          4,55M  static 2021-09-29 00:07
omnios-r151038ag          -      -          4,98M  static 2021-12-22 14:31
omnios-r151038an          -      -          6,60M  static 2022-01-31 18:13
omnios-r151038aq          -      -          5,16M  static 2022-02-22 19:14
omnios-r151038aw          NR     /          4,33G  static 2022-04-09 22:24
omnios-r151038aw-backup-1 -      -          255K   static 2022-04-11 20:47
omnios-r151038aw-backup-2 -      -          252K   static 2022-04-22 20:36
omnios-r151038aw-backup-3 -      -          267K   static 2022-05-05 23:06
omnios-r151038aw-backup-4 -      -          243K   static 2022-05-14 15:13
omnios-r151038aw-backup-5 -      -          280K   static 2022-05-16 20:31
omnios-r151038aw-backup-6 -      -          276K   static 2022-05-28 19:50
			

Das aktive BE ist mit 'NR' gekennzeichnet.

Nicht mehr benötigte Boot Environments kann man mit folgendem Befehl löschen:


beadm destroy -Ffs "Name des Bootenvironments"
			


5. 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.


6. 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.

6a) 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
			


6b) 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!


6c) NFS-Client konfigurieren

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
			


7. PostgreSQL-Server installieren

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.

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
			

Anschließend mit exit den 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 der PostgreSQL-Serverdienst im Maintainance-Modus ist kann man in der entsprechenden Logdatei nachschauen warum das so ist:


joe /var/svc/log/ooce-database-postgresql10:default.log
			


8. NTP-Dienst einrichten

Um die Systemzeit auf Client und Server synchron zu halten, empfiehlt es sich, den NTP-Dienst zu aktivieren (NTP=Network Time Protocol).


svcadm enable -r network/ntp:default
			


9. 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
			


10. 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
			

Ich persönlich habe auf meinem Server autotrim ausgeschaltet. Über einen cronjob wird zweimal monatlich ein manueller Trim durchgeführt.


11. Hilfe

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


12. 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. Es sollten die Handbücher zu Solaris 10 herangezogen werden, hier besteht noch die größte Übereinstimmung mit OmniOS.

Die offiziellen Solaris Handbücher von Oracle

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

OmniOS

Weiterhin stelle ich in meinem Computer Blog diverse Anleitungen zu OmniOS zur Verfügung.


Nach oben


Kontakt: mail@tkfibu.de


HOME