====== 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 [[http://www.openbsd.org/ftp.html|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 [[http://www.openbsd.org/errata55.html|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 [[http://www.openbsd.org/anoncvs.html#CVSROOT|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 [[http://www.openbsd.org/errata55.html|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 [[http://ftp.openbsd.org/pub/OpenBSD/patches/5.5/common/001_icmp.patch.sig|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 ======
* Patches zu Releases (-stable) offiziell nur in Quellform. Diese müssen von Hand kompiliert und installiert werden.
* Die Konfiguration des Bootverhaltens erfolt NICHT in ///etc/rc.conf// (diese soll nicht durch den Benutzer verändert werden) sondern in ///etc/rc.conf.local// und ///etc/rc.local//.
* Installation von Drittsoftware mittels Packages empfohlen.
====== 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:
* [[http://www.openbsd.org/faq/index.html|Die Offizielle FAQ - Entspricht dem Handbuch]]
* [[http://www.tw.openbsd.org/faq/de/index.html|Die FAQ auf deutsch]]