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:
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.
Umgebungsvariable setzten:
Die folgende Zeile einfügen
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:
GID der Gruppe auf dem Client abfragen:
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:
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:
Gruppe 'users' mit GID 100 erstellen:
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:
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:
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):
Nur bestimmte Dienste anzeigen:
Dienst starten:
Dienst stoppen:
Dienst neu starten:
Dienst konfigurieren:
10. SSD-Trim
OmniOS bzw. ZFS unterstützt das Trim-Kommando
bei SSDs.
Standardmäßig ist Autotrim in OmniOS ausgeschaltet.
Autotrim aktivieren:
Abfragen, ob autotrim aktiviert ist:
Trim manuell anstoßen:
Den Trim-Status abfragen:
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