Inhaltsverzeichnis

Allgemein

In diesem Artikel soll der Weg von einer OpenBSD-Release Basis-Installation beschrieben werden. Beginnend bei der Installation von CD oder USB-Stick über das Einspielen verfügbarer Patches und die Installation und Aktualisierung von Drittsoftware per Packages.

Installation

Download der Installationsmedien

Auf der Homepage von OpenBSD steht unter Getting Releases eine Liste von verschiedenen Mirrors zur Verfügung welche die Installationsmedien zum Download anbieten. Dort kann das notwendige Installationsmedium heruntergeladen werden. Um z.B. die aktuelle OpenBSD-Version 5.5 für die Installation auf einem amd64-System per CD durchzuführen liegt das Installationsimage unter 5.5/amd64/install55.iso. Für die Installation über einen USB-Stick wird die Datei install55.fs (nicht iso) benötigt.

Erstellen des Bootmediums

Die Installation kann entweder von einer CD oder einem USB-Stick erfolgen. Je nachdem welches Variante gewählt wird muss zunächst ein entsprechendes Bootmedium vorbereitet werden.

ISO-Datei auf CD brennen

Für die Installation des Systems mittels CD muss die ISO-Datei als Image auf eine CD/DVD gebrannt werden. Hierzu sollte je nach Betriebssystem ein entsprechendes Programm verwendet werden. Unter BSD-Systemen kann hier z.B. cdrecord verwendet werden.

USB-Stick vorbereiten

Um das System von einem USB-Stick zu installieren wird die Datei install55.fs als Image auf den USB-Stick kopiert. Der Stick muss logischerweise größer als das zu kopierende Image sein. Unter BSD-Systemen wird hierfür gewöhnlich der Befehl dd verwendet.

Installation des Basissystems

Nachdem das Bootmedium vorbereitet wurde kann die Installation beginnen.

Starten vom Bootmedium

Zunächst muss das System vom gerade erzeugten Bootmedium gestartet werden. Je nach System und BIOS müssen hier ggf bestimmte Einstellungen angepasst werden. Sobald das Bootmedium startet erscheint kurz der Bootloader.

boot>

Dieser kann durch Enter bestätigt werden und das Installationssystem startet.

Installation starten

Nachdem das System gestartet ist erscheint eine Eingabe ähnlich der folgenden:

Welcome to the OpenBSD/amd64 5.5 installation program.
(I)nstall, (U)pgrade, (A)utoinstall or (S)hell?

Um eine Installation zu beginnen wird I gewählt.

Keyboard-Layout

Als nächstes wird das Keyboardlayout abgefragt:

Choose your keyboard layout ('?' or 'L' for list) [default] 

Für eine deutsche Tastatur kann hier de gewählt werden.

Hostname

Anschließend wird der Hostname des Rechners festgelegt.

System hostname? (short form, e.g. 'foo') myhostname

Hier kann ein beliebiger Name vergeben werden (hier z.B. myhostname).

Netzwerk

Um das Netzwerk einzurichten bietet OpenBSD nun alle Netzwerkinterfaces an die es findet. Hier wird das Interface bewählt welches man zunächst einrichten möchte (z.B. für den Internetzugang).

Available network interfaces are: em0 vlan0.
Which network interface do you wish to configure? (or 'done') [em0]

In diesem Beispiel ist em0 das einzige echte Interface und wird somit ausgewählt

Nun besteht die Möglichkeit das Interface automatisch per dhcp für IPv4 einzurichten.

IPv4 address for em0? (or 'dhcp' or 'none') [dhcp]

Um dhcp zu verwenden kann mit Return bestätigt werden und es werden die abgerufenen Informationen des dhcp-Servers angezeigt.

Nach der IPv4-Einrichtung ist die Konfiguration für IPv6 möglich

IPv6 address for em0? (or 'rtsol' or 'none') [none]

Mit none wird keine IPv6-Einrichtung vorgenommen.

Ist die Einrichtung der Netzwerkinterfaces vollständig kann auf die erneute Frage:

Available network interfaces are: em0 vlan0.
Which network interface do you wish to configure? (or 'done') [done]

Mit done , bzw. Return da es bereits vorbelegt ist, die Netzwerkeinrichtung beendet werden. Sollen weitere Interfaces eingerichtet werden können diese statt dessen angegeben werden.

root-Account

Nun wird das Kennwort für den root-Account erfragt

Password for root account? (will not echo)

und bestätigt

Password for root account? (again)

sshd starten

Soll der Rechner später Remotelogins per SSH erlauben kann automatisch sshd beim Systemstart mitgestartet werden.

Start sshd(8) by default? [yes]

Für ein reines Einzelsystem (z.B. ein Notebook) kann dies auch mit no abgelehnt werden. Ein Remoteserver muss einen sshd laufen haben da hierüber der Login am System erfolgt!

ntpd starten

Um automatisch die Systemzeit abzugleichen kann ntpd verwendet werden. Hier kann er automatisch mit dem Systemstart mitgestartet werden.

Start ntpd(8) by default? [no]

X11 verwenden

OpenBSD liefert, im Gegensatz zu anderen Systemen, automatisch einen X11-Server im Basissystem mit. Dieser kann bei der Installation gleich mit installiert werden.

Do you expect to run the X Window System? [yes]

Für ein Desktopsystem sollte hier yes gewählt werden. Für einen reinen Server kann hier auch no gewählt werden.

Soll beim Systemstart automatisch eine grafischer Login erscheinen kann die folgende Frage mit yes bestätigt werden.

Do you want the X Window System to be started by xdm(1)? [no]

Benutzer anlegen

Da es nicht sinnvoll ist dauerhaft als Benutzer root zu arbeiten ist es immer sinnvoll zusätzlich einen normalen Benutzer-Account anzulegen.

Setup a user? (enter a lower-case loginname, or 'no') [no] fritz

Um einen Benutzer anzulegen wird die Frage mit dem gewünschten Benutzernamen (hier im Beispiel fritz) in Kleinbuchstaben bestätigt.

Anschließend wird noch der vollständige Name des Benutzers erfragt.

Full name for user username? [fritz]

Zum Abschluss der Benutzergenerierung wird noch das zu verwendende Passwort abgefragt.

Password for user username? (will not echo)

… und muss bestätigt werden…

Password for user username? (again)

Wurde sshd zuvor aktiviert so kann er nun so eingerichtet werden, dass keine direkten Remotelogins per sshd für den Benutzer root durchgeführt werden. So wie die Einrichtung eines normalen Benutzeraccounts ist auch dies aus Sicherheitsgründen dringend zu empfehlen. Ein normaler Benutzer kann sich immernoch per sshd anmelden und dann mittels su oder sudo (falls eingerichtet) root-Berechtigungen erlangen.

Since you set up a user, disable sshd(8) logins to root? [yes]

Zeitzone

Die Einstellung der Zeitzone erfolgt an folgendem Dialog:

What timezone are you in? ('?' for list) [Europe/Berlin]

Für Deutschland ist Europe/Berlin die richtige Einstellung.

Festplatteneinrichtung

Im nächsten Schritt muss die Festplatte für die Installation eingerichtet werden.


Achtung: Hierdurch gehen alle auf der ausgewählten Festplatte gespeicherten Daten verloren!


Der Installer zeigt zunächst die vorgefundenen Festplatten an (in diesem Beispiel nur wd0)

Available disks are: wd0
Which disk is the root disk? ('?' for details) [wd0]

Nach der Auswahl der Festplatte muss noch bestätigt werden, dass DUIDs statt der Devicenamen verwendet werden sollen.

Use DUIDs rather than device names in fstab? [yes]

Dies ist grundsätzlich sinnvoll, da hierdurch verhindert wird, dass eine falsche Zuordnung mehrerer Laufwerke zu ihrem internen Anschluss (z.B. durch Umstecken am Mainboard) das System durcheinander bringt. Demnach wird die Frage mit yes beantwortet.

Im Anschluss wird die Partitionierung der Festplatte vorgenommen. Je nach Zustand der Festplatte (wie sie bisher partitioniert und installiert war) sieht dieser Dialog unterschiedlich aus. Im Falle einer leeren Festplatte sieht die Nachfrage wie folgt aus.

Use (W)hole disk or (E)dit the MBR? [whole]

Mit whole wird die gesamte Festplatte gelöscht und für die Installation von OpenBSD verwendet.

Im Folgenden Partitionierungslayout kann festgelegt werden wie Festplatte für OpenBSD aufgeteilt werden soll. Die hier vorgenommene Einteilung finde Innerhalb EINER MBR-Partition statt (man beachte den Unterschied zwischen BSD-Slices und BSD-Partitionen).

Use (A)uto layout, (E)dit auto layout, or create (C)ustom layout? [a]

Im Allgemeinen, und vor allem wenn man keinen guten Grund dagegen hat, kann hier a gewählt werden um das automatische Layout zu verwenden. Anschließend wird die Festplatte entsprechend den Vorgaben eingerichtet.

Installation des Basissystems

Das Basissystem ist in verschiedene Sets unterteilt. Im folgenden Schritt werden die für die Installation gewünschten Sets auf die Festplatte installiert.

Installation von CD

Zunächst wird das Medium mit den Sets ausgewählt.

Let's install the sets!
Location of sets? (cd disk ftp http or 'done') [cd]

Wenn die Installation von einer CD vorgenommen wird, dann ist cd die passende Auswahl.

Available CD-ROMs are: cd0
Which CD-ROM contains the install media? (or 'done') [cd0]

Im Falle eines einzigen CD-Laufwerks fällt die Auswahl leicht. Im anderen Falle muss hier das passende Laufwerk gewählt werden.

Zum Abschluss muss noch gewählt werden wo auf der CD die Sets abgelegt sind.

Pathname to the sets? (or 'done') [5.5/amd64]

Im Falle einer Standard-Installations-CD und einer amd64-Installation passt der voreingestellte Pfad und kann übernommen werden.

Nun folgt die Auswahl der zur Verfügung stehenden Sets. Im Allgemeinen sollte die Vorauswahl stimmen und es kann fortgefahren werden.

Werden die Sets von CD oder USB-Stick installiert kann die folgende Meldung ignoriert werden, da auf den Medien keine Signaturen hinterlegt werden. Um die Integrität der Daten zu prüfen sollte das CD- oder USB-Image vor der Installation auf ihre Gültigkeit geprüft werden (Stichwort Hash prüfen).

Directory does not contain SHA256.sig. Continue without verification? [no]

Im Falle der Installation von einem Image (CD oder USB) kann also yes gewählt werden. Sollte der Fehler auch auftauchen wenn die Sets direkt von einem http- oder ftp-Mirror installiert werden sollten diese nicht installiert werden. In diesem Falle sollte sicherheitshalber ein Server gewählt werden der gültige Signaturen anbietet.

Die Installation der einzelnen Sets wird nun angezeigt und mit der neuerlichen Frage nach Sets abgeschlossen

Location of sets? (cd disk ftp http or 'done') [done]

Wenn alle gewünschten Sets installiert wurden kann dieses Mal mit done die Installation abgeschlossen werden.

Wenn die Zeit zu sehr von der durch den ntp ermittelten abweicht kommt es zur folgenden Meldung.

Time appears wrong. Set to '#die aktuelle Zeitangabe#'? [yes]

Sollte die Zeit stimmen kann dies mit yes bestätigt werden.

Nun ist die Installation von OpenBSD abgeschlossen und es erscheint ein Prompt.

Um das neu installierte System das erste mal zu starten wird die eingelegte CD / der eingelegte USB-Stick entfernt und neu gestartet:

# reboot

Erster Login

Nach dem Neustart des Systems erscheint nun, entweder ein grafischer Login per xdm, falls dies bei der Installation gewählt wurde, oder ein nicht grafischer Login. Da bei der Installation des Systems ein Benutzer angelegt wurde sollte ein Login stets mit diesem erfolgen. Arbeiten mit root-Rechten sollten dann jeweils mittels su oder sudo durchgeführt werden.

Update des Systems (-stable folgen)

Sollte es Sicherheitslücken im installierten System geben werden diese vom OpenBSD-Team meist schnell behoben. Existieren solche Patches werden diese auf der OpenBSD-Homepage unter Errata (z.B. in diesem Fall für OpenBSD Version 5.5) veröffentlicht.

Sources beziehen

Zum Einspielen der Patches ist der Quellcode von OpenBSD notwendig da Sicherheitspatches nur in Quellform angeboten werden und anschließend selbst kompiliert und installiert werden müssen. Unter OpenBSD werden die Systemquellen mit CVS verwaltet. Um das erste Mal den aktuellen Quellbaum zu beziehen wird wie folgt vorgegangen. Dies ist nur notwendig wenn unter /usr/src noch keine Quellen vorhanden sind.

Um z.B. für ein OpenBSD 5.5 aktuelle Patches zu erhalten:

# cd /usr
# cvs -qd CVSROOT get -rOPENBSD_5_5 -P src

Wobei CVSROOT ein Server aus dieser Liste ist. Die folgende Frage ob der Schlüssel des Servers akzeptiert wird kann mit yes bestätigt werden (natürlich sollte man den Schlüssel auch vorher prüfen). Das Herunterladen des Quellbaums kann eine Weile dauern…

Sourcen aktualisieren

Um später den Quellbaum zu aktualisieren wird in das /usr/src-Verzeichnis gewechselt und cvs mit den Optionen zum Updaten des Verzeichnisses angestoßen.

# cd /usr/src
# cvs -q up -rOPENBSD_5_5 -Pd

Auch dies dauert eine Weile.

Patches übersetzen und installieren

Wie bereits zuvor erwähnt stellt die Errata-Seite des OpenBSD Projects die Patches für das entsprechende Release vor. Nachdem der Quellbaum des System unter /usr/src aktuell ist werden die Patches entsprechend der Beschreibung in den jeweiligen Einträgen installiert. Da der aktuelle Quellbaub bereits per cvs vorliegt wird in der Patchbeschreibung der Teil zum patchen übersprungen.

Ein Beispiel

Am 15.03.2014 wurde der Patch 001 für OpenBSD 5.5 eröffentlicht. Der komplette Inhalt des Patches, wie er in der Errata zu finden ist, sieht wie folgt aus:

untrusted comment: signature from openbsd 5.5 base secret key
RWRGy8gxk9N931I5zFR8QzfeyD2OQkGJHvzdIeM+94h1HSePXfTzt2eojrqu3AiQ2CHnuS69+livrtk60oBnbrRPAR5dhPtf7wQ=

OpenBSD 5.5 errata 1, Mar 15, 2014:  Memory corruption happens during
ICMP reflection handling.  ICMP reflection is disabled by default.

Apply patch using:
    
    signify -Vep /etc/signify/openbsd-55-base.pub -x 001_icmp.patch.sig -m - | \
        (cd /usr/src && patch -p0)

Then build and install a new kernel:

    cd /usr/src/sys/arch/`machine`/conf
    KK=`sysctl -n kern.osversion | cut -d# -f1`
    config $KK
    cd ../compile/$KK
    make
    make install

Index: sys/netinet/ip_icmp.c
===================================================================
RCS file: /cvs/src/sys/netinet/ip_icmp.c,v
retrieving revision 1.114
diff -u -p -r1.114 ip_icmp.c
--- sys/netinet/ip_icmp.c	19 Jan 2014 05:01:50 -0000	1.114
+++ sys/netinet/ip_icmp.c	14 Mar 2014 16:24:03 -0000
@@ -611,9 +611,12 @@ reflect:
 		memset(&ssrc, 0, sizeof(ssrc));
 		sdst.sin_family = sgw.sin_family = ssrc.sin_family = AF_INET;
 		sdst.sin_len = sgw.sin_len = ssrc.sin_len = sizeof(sdst);
-		memcpy(&sdst.sin_addr, &icp->icmp_ip.ip_dst, sizeof(sdst));
-		memcpy(&sgw.sin_addr, &icp->icmp_gwaddr, sizeof(sgw));
-		memcpy(&ssrc.sin_addr, &ip->ip_src, sizeof(ssrc));
+		memcpy(&sdst.sin_addr, &icp->icmp_ip.ip_dst,
+		    sizeof(sdst.sin_addr));
+		memcpy(&sgw.sin_addr, &icp->icmp_gwaddr,
+		    sizeof(sgw.sin_addr));
+		memcpy(&ssrc.sin_addr, &ip->ip_src,
+		    sizeof(ssrc.sin_addr));
 
 #ifdef	ICMPPRINTFS
 		if (icmpprintfs) {

Der obere Abschnitt der Beschreibung Apply patch using wird wie erwähnt ausgelassen.

Zur Installation des Patches wird einfach verfahren wie anschließend unter Then build and install a new kernel erwähnt:

    cd /usr/src/sys/arch/`machine`/conf
    KK=`sysctl -n kern.osversion | cut -d# -f1`
    config $KK
    cd ../compile/$KK
    make
    make install

Diese Patches werden nun der Reihe nach angewendet. Werden neue Patches veröffentlicht wird zunächst der Quellbaum erneut aktuallisiert und dann die neuen Patches der Reihenfolge nach installiert.

PKG_PATH einrichten

Damit Drittsoftware direkt aus dem Internet installiert werden kann muss der Pfad zu einer Paketquelle gesetzt werden. Der Pfad zu den Paketen hängt vom gewählten Mirror ab. Für den Mirror der Universität in Erlangen wäre dieser Pfad z.B. http://openbsd.cs.fau.de/pub/OpenBSD/5.5/packages. Um den Pfad für die Pakete zu setzen wird die Datei /etc/pkg.conf erzeugt und wie folgt gefüllt:

installpath=http://openbsd.cs.fau.de/pub/OpenBSD/5.5/packages/amd64/

Dies kann einfach durch den folgenden Befehl mit root-Rechten erfolgen:

# echo "installpath=http://openbsd.cs.fau.de/pub/OpenBSD/5.5/packages/amd64/" > /etc/pkg.conf

Der hier verwendete Pfad ist für Pakete auf einem amd64-System ausgelegt. Bei anderen Systemen ist der letzte Abschnitt des Pfades anzupassen (z.B. i386 auf einem 32Bit-Intel-System). Was genau hier eingetragen werden muss erhält man auch durch den folgenden Befehl:

# machine -a

Pakete installieren

Ist die Umgebungsvariable PKG_PATH gesetzt kann einfach per pkg_add Drittsoftware aus den Paketen installiert werden.

Um z.B. vim zu installieren genügt folgender Aufruf mit root-Rechten

# pkg_add vim

Gibt es, wie in diesem Fall, mehrere Varianten dieses Pakets wird man automatisch gefragt welche man gerne verwenden würde.

Will man zunächst etwas über ein Paket oder dessen Varianten (Flavours) erfahren ist dies mittels pkg_info möglich. Um z.B. mehr über vim zu erfahren dient der Aufruf:

$ pkg_info vim

Netzwerk einrichten

Die Einrichtung des Netzwerks erfolgt unter /etc. Um z.B. das Netzwerk des Devices em0 einzurichten erfolgt die Konfiguration in der Datei /etc/hostname.em0. Eine genauere Beschreibung ist in der Manpage hostname.if(5) nachzulesen. Für jedes Device kann eine entsprechende Datei angelegt werden. Diese werden dann beim Systemstart nacheinander abgearbeitet bis eine Netzwerkverbindung hergestellt wurde.

WLAN

Um ein WLAN-Interface per WPA-Verschlüsselung und DHCP einzurichten sähe eine solche Datei z.B. wie folgt aus

nwid HIER_DIE_SSID_DES_WLANS
wpakey HIER_DER_SCHLÜSSEL_DES_WLANS
dhcp

Wobei HIER_DIE_SSID_DES_WLANS durch die SSID des WLANs und HIER_DER_SCHLÜSSEL_DES_WLANS durch den WPA-Schlüssel des WLANs zu ersetzen ist.

Unterschiede zu FreeBSD

Firmware herunterladen

Nicht für alle Geräte kann die für den Betrieb dieser Geräte benötigte Firmware mit OpenBSD verbreitet werden. Ein Beispiel sind WLAN-Karten von intel die den Treiber wpi verwenden. Diese Firmware wird aus lizenzrechtlichen Gründen nicht mit den Installationsmedien verbreitet und muss im Nachgang über das Internet nachinstalliert werden. Daher ist in dem Fall einer solchen WLAN-Karte die grundlegende Installation und Einrichtung eines Internetzugangs über das Ethernet-Device notwendig. Ist das System installiert und mit dem Internet verbunden kann einfach mit dem folgenden Befehl die Firmware heruntergeladen werden.

# fw_update

Weitere Hilfe

Weitere umfangreiche Hilfe gibt es unter Anderem hier: