[OpenBSD]

[FAQ-Index] [Zum Kapitel 7 - Tastatur- und Bildschirmkontrollen] [Zum Kapitel 9 - Zu OpenBSD migrieren]

8 - Allgemeine Fragen


Inhaltsverzeichnis


8.1 - Ich habe mein Rootpasswort vergessen ... was kann ich nun tun?

Üblicherweise startet man in den Singleuser-Modus, mountet alle relevanten Partitionen (/ und /usr) und führt passwd(1) aus, um das Rootpasswort umzustellen. Danach kannst du wieder booten und normal einloggen.

Genauere Details:

Falls mehrere Personen Zugang auf die Maschine haben, solltest du sudo(8) verwenden, um mehreren (vertrauenswürdigen) Personen die Möglichkeit zu geben, Befehle mit Rootrechten auszuführen.

»Moment mal, das war ja viel zu einfach! Sonderlich sicher ist das aber nicht!« Wenn ein Angreifer physikalischen Zugriff auf dein System hat, hat er bereits gewonnen; egal welches Betriebssystem installiert ist. Du kannst ein Passwort für den Singleuser-Modus erzwingen (siehe ttys(5)) oder die Wartezeit auf i386/amd64 (siehe boot.conf) deaktiveren - um zu sagen wie es ist: Diese Tricks können leicht umgangen werden (eine Möglichkeit: Mit Diskette oder CD-ROM booten und die Passwortdatei austauschen). Das wiederum kannst du auch verhindern, doch dann kann der Angreifer einfach die Festplatte aus dem Gehäuse nehmen. Es ist nicht sonderlich sicher, wenn du deinen Computer schwer administrierbar machst. Wenn dein System nicht physikalisch sicher ist, hast du keine echte Sicherheit.

Hinweis: Viele Systeme zur »Fernwartung« bieten die meisten Möglichkeiten an, die du bei physikalischem Zugriff hättest. Das muss unbedingt berücksichtigt werden. Rede dir nicht ein, dass dein System sicher sei, so lange es einem Angreifer möglich ist, eine Konsole zu öffnen, eine virtuelle Diskette einzulegen und einen Neustart des Systems zu erzwingen. Sie könnten dann auch genauso gut physischen Zugriff auf das System haben. Das Konsolenmanagementsystem ist vermutlich nicht so sicher wie OpenBSD ...

8.2 - X startet nicht, ich bekomme jede Menge Fehlermeldungen

Eine häufige Ursache für Probleme mit X ist die sysctl(8)-Einstellung namens machdep.allowaperture. Da diese Einstellung unter OpenBSD standardmäßig ausgeschaltet ist, wird dies sehr wahrscheinlich der Grund für das Problem sein.

Du musst /etc/sysctl.conf editieren und machdep.allowaperture=2 (oder 1 - abhängig von deiner Plattform) setzen. Dies wird X ermöglichen, nach dem nächsten Neustart auf den Aperturetreiber xf86(4) zuzugreifen. Ohne Neustart kann dieser Zugriff nicht ermöglicht werden. Diese Einstellung kann auch schon während der Installation getätigt worden sein, falls du mit Y geantwortet hast, als du gefragt wurdest, ob du das X Window System einsetzen möchtest.

OpenBSD setzt den aktivierten Aperturetreiber auf den alpha-, amd64-, i386-, macppc- und sparc64-Plattformen voraus, um den Zugriff auf die Grafikkarten zu verwalten. Andere Plattformen verwenden eine sicherere Methode, um das Grafiksystem zu verwalten, sodass sie diese Einstellung nicht benötigen (und somit diesen Treiber auch nicht im Kernel haben müssen). Wenn du X nicht auf deinem System verwenden möchtest, so solltest du den Aperturetreiber nicht aktivieren.

Für weitere Informationen über das Konfigurieren und Verwenden von X auf deiner Plattform, lies die /usr/X11R6/README-Datei auf deinem installierten System.

8.3 - Kann ich Programmiersprache XYZ unter OpenBSD einsetzen?

Du wirst Unterstützung für die meisten gängigen Programmiersprachen entweder im Basissystem (genauer gesagt in den Dateisets baseXX.tgz und compXX.tgz) oder im Packages- und Portssystem finden. Es wird empfohlen, dass du das benötigte Dateiset oder das Package für den Compiler installierst, den du benutzen möchtest, statt ihn vom Quelltext aus zu übersetzen. Für das Übersetzen einiger Compiler werden viele Systemressourcen benötigt. Es ist meist auch nur sinnvoll, wenn du spezielle Ansprüche stellst oder kein Package vorliegt.

Die folgende Tabelle liefert einen Überblick über die Compiler der unterschiedlichen Sprachen. In ihr kannst du sowohl die Compiler als auch mögliche Probleme oder Begrenzungen finden, die bei der Benutzung der Sprachen auftreten können. Einige Compiler stehen nur für bestimmte Plattformen bereit. Ob deine Plattform unterstützt wird kannst du herausfinden, indem du entweder das Suchergebnis durch den Ports-Tree überprüfst oder direkt einen Blick auf das Makefile des Ports wirfst. Im zweiten Fall musst du nach den Zeilen ONLY_FOR_ARCHS, NOT_FOR_ARCHS, BROKEN etc. suchen.

Hinweis: In diesem Artikel wird eine alphabetisch sortierte Liste bereitgestellt, um das Suchen nach einer bestimmten Sprache zu vereinfachen (zwischen den unterschiedlichen Kategorien der Programmiersprachen wurde nicht unterschieden). Es wurden nicht alle Sprachen aufgeführt, die es für OpenBSD gibt oder unter OpenBSD genutzt werden können. Wenn du Ungenauigkeiten oder Probleme entdeckst, die hier nicht behandelt wurden, sende bitte einen Bericht darüber.

SpracheWo?Hinweise
Awk base42.tgz, awk(1)
lang/gawk GNU awk
C, C++ comp42.tgz, gcc(1) Die C/C++-Compiler im Basissystem wurden überprüft und standardmäßig mit Sicherheitsverbesserungen (z. B. ProPolice) ausgestattet. Lies bitte gcc-local(1) für weitere Details. Diese Compiler werden ebenfalls Warnungen ausgeben, wenn unsichere Funktionen wie sprintf(), strcpy(), strcat(), tmpnam() etc. genutzt werden. Beachte, dass die meisten Plattformen gcc 3.3.5 nutzen - einige verwenden immer noch 2.95.3.
C, C++ lang/gcc Diese Compiler wurden nicht auf Sicherheit überprüft und beinhalten keine Sicherheitsverbesserungen wie die Compiler, die sich im Basissystem befinden. Die Compiler wurden in egcc, eg++ etc. umbenannt, um die Verwechslung mit ihren Pendanten im Basissystem auszuschließen.
Caml lang/ocaml Objective Caml
COBOL lang/open-cobol
Erlang lang/erlang
Fortran comp42.tgz, g77(1) Nur Unterstützung für Fortran 77.
lang/gcc Fortran 95 wird auch von egfortran unterstützt, der sich im gcc 4.0 und neueren Versionen befindet. Dieser neue Compiler wird als Subpackage (g95) vom gcc bereitgestellt.
Haskell lang/ghc
lang/nhc98
Java devel/jdk Sun JDK - keine Packages verfügbar; siehe die Übersetzungsanweisungen weiter unten.
lang/classpath Wichtige Kernklassenbibliotheken für Java
lang/kaffe
lang/jikes Schneller Compiler, der gut läuft. Er benötigt ein »Laufzeit-jar: die Bytecodeversion der gesamten Standard-API.
devel/eclipse Große IDE; funktioniert mit dem Sun JDK
Lisp lang/clisp
Lua lang/lua Zusätzliche Lua-Bibliotheken und Hilfswerkzeuge können über den Ports-Tree installiert werden.
Perl base42.tgz, perl(1) Viele Perl-Module sind über den Ports-Tree verfügbar; suche also erst dort, bevor du Module von CPAN installierst.
PHP www/php4 Viele Subpackages werden für unterschiedliche PHP-Module bereitgestellt.
www/php5
Prolog lang/gprolog GNU Prolog-Compiler.
lang/swi-prolog SWI-Prolog-Umgebung.
Python lang/python Andere Ports verwenden standardmäßig Python 2.3.
Ruby lang/ruby
Scheme lang/chicken
lang/scheme48
lang/scm
shells/scsh
Smalltalk lang/squeak
Tcl lang/tcl

Sun JDK übersetzen

Aufgrund Suns restriktiver SCSL-Lizenz kann OpenBSD keine Binärpackages des JDKs ausliefern. Dies bedeutet, dass du es aus den Ports erstellen musst. Beachte, dass du sehr viel RAM benötigst, damit die Erzeugung erfolgreich beendet werden kann.

Die JDK-Ports befinden sich in dem Unterverzeichnis devel/jdk des Ports-Trees. Du kannst zwischen verschiedenen Versionen wählen - jede hat ihr eigenes Unterverzeichnis. Wenn du einfach nur make eingibst, dann wirst du eine Bildschirmmeldung sehen, die dir mitteilt, dass du die Quelltextdateien von Suns Website per Hand herunterladen musst. Vor dem Runterladen musst du dich auf der Website registieren - und die Lizenzbestimmungen akzeptieren. Das ist der Grund, warum das Ports-Framework den Download nicht automatisch starten kann.

Kopiere die benötigten Distributionsdateien und -patches in das Verzeichnis /usr/ports/distfiles sobald du sie heruntergeladen hast. Du musst ebenfalls X auf deinem System installiert haben. Beginne mit dem Build, indem du im Unterverzeichnis des Ports make aufrufst.

Das JDK benötigt einen funktionierenden Java-2-Compiler als Bootstrap, um erzeugt werden zu können. Für diesen Zweck verwendet der Port von JDK 1.5 seit OpenBSD 4.0 kaffe, wodurch JDK 1.5 sowohl auf der i386- als auch auf der amd64-Plattform eingesetzt werden kann. Des Weiteren wird die benötigte Zeit für die Übersetzung erheblich reduziert.

Ältere JDK-Versionen benötigen weiterhin eine Linux-Version des JDKs. Wenn du das ungerecht findest, dann kannst du dich bei Sun beschweren und nachfragen, warum sie keine native OpenBSD-Version bereitstellen. Die Linux-Emulation unter OpenBSD funktioniert nur auf i386-Systemen, sodass ältere JDKs nur auf i386 erzeugt werden können. Das Ports-Framework sollte sich selbst darum kümmern, die benötigten Dateien zu installieren und kern.emul.linux=1 zu setzen. Für weitere Informationen über die Linux-Emulation lies bitte die compat_linux(8)-Manualseite sowie FAQ 9 - Linux-Binarys unter OpenBSD ausführen. Beachte, dass diese Linux-Emulation nur während der Erzeugungsphase vom JDK benötigt wird; das Ergebnis wird nativ unter OpenBSD laufen. Du benötigst keine Linux-Emulation, um das Java-Plugin benutzen zu können.

Nach vielen Stunden wird der Build dann fertig sein. Mache dann mit make install weiter, um das JDK zu installieren.

Wenn Fehlermeldungen wie zum Beispiel "Could not reserve enough space for object heap" auftauchen, erhöhe die Speicherbegrenzung für die Prozesse, indem du das eingebaute Shellkommando ulimit mit der Option -d verwendest.

Andere Entwicklungswerkzeuge

Zusätzlich gibt es viele andere Entwicklungswerkzeuge, die im Basissystem bereitgestellt werden oder als Package oder Port installiert werden können. Ein paar Beispiele sind:

8.4 - Was ist der Ports-Tree?

Lies bitte FAQ 15, Mit Ports arbeiten.

8.5 - Was sind Packages?

Lies bitte FAQ 15, Verwaltung der Packages.

8.6 - Sollte ich nun Ports oder Packages benutzen?

Lies bitte FAQ 15.

8.8 - Gibt es einen Weg, mein Diskettenlaufwerk zu benutzen, obwohl es während des Bootens nicht angeschlossen war?

Du musst den Kernel so einstellen, dass er immer davon ausgeht, dass ein Diskettenlaufwerk angeschlossen ist, selbst wenn keines während der Hardwareüberprüfung gefunden wurde, indem du das 0x20-Optionsbit beim fdc(4) einrichtest. Unter Verwendung von der User Kernel Config oder von config(8) kannst du deinen Kernel anpassen,

# config -e -f /bsd OpenBSD 4.2 (GENERIC) #375: Tue Aug 28 10:38:44 MDT 2007 deraadt@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC Enter 'help' for information ukc> change fd* 254 fd* at fdc0 drive -1 flags 0x0 change [n] y drive [-1] ? ENTER flags [0] ? 0x20 254 fd* changed 254 fd* at fdc0 drive -1 flags 0x20 ukc> q Saving modified kernel. #

8.9 - OpenBSD-Bootloader (i386, amd64 spezifisch)

Wenn du dein OpenBSD-System bootest, ist dir vermutlich der Bootprompt bereits aufgefallen.

boot>

Für die meisten Leute gilt, dass sie hier nichts machen müssen. Er wird automatisch booten, wenn keine Kommandos angegeben werden. Aber manchmal tauchen Probleme auf oder spezielle Funktionen werden benötigt. Und hier können diese Optionen nützlich sein. Zu Beginn solltest du dich durch die boot(8)-Manualseite lesen. Hier werden wir die meist genutzten Kommandos des Bootloaders besprechen.

Zu Beginn sei gesagt, dass, wenn keine Kommandos angegeben wurden, der Bootloader automatisch versucht, /bsd zu booten. Wenn das fehlschlägt, wird er es nochmal mit /obsd versuchen und wenn auch das fehlschlägt, wird er /bsd.old versuchen. Du kannst einen Kernel per Hand angeben, indem du eingibst:

boot> boot hd0a:/bsd
oder
boot> b /bsd

Dies wird den Kernel mit dem Namen bsd von der Partition a der ersten vom BIOS erkannten Festplatte booten.

Hier ist eine kurze Liste an Optionen, die du mit dem OpenBSD-Kernel nutzen kannst.

Diese Optionen werden in folgendem Format eingegeben: boot [ image [-acds]]

Für weitere Informationen kannst du die Manualseite von boot(8) lesen.

8.10 - S/Key

S/Key ist ein ,Einweg-Passwort'-Authentifikationsschema. Das kann für Leute hilfreich sein, die nicht die Möglichkeit haben, einen verschlüsselten Kanal für ihre Übertragung der Authentifikationsnachweise zu verwenden. Ein solcher Kanal kann zum Beispiel mit ssh(1) aufgebaut werden.

WARNUNG: Systeme mit Einwegpasswörtern schützen nur die Authentifikationsinformationen. Sie können keine Eavesdropper im Netzwerk davon abhalten, Zugriffe auf private Informationen zu erlangen. Des Weiteren wird geraten, dass du auf ein sicheres System A über ein anderes sicheres System B zugreifst, um sicherzustellen, dass niemand auf System A zugreifen kann, indem er deine Tastatureingabe abfängt und/oder sowohl Ein- als auch Ausgabe deines Terminaldevices modifiziert.

Das S/Key-System generiert eine Reihe Einwegpasswörter (können nur ein einziges Mal verwendet werden) vom sicheren Passphrase eines Benutzers mit einer vom Server ausgehenden Anfrage - einer sicheren Hashfunktion. Das System ist nur dann sicher, wenn das sichere Passphrase niemals über das Netzwerk übertragen wurde. Daher muss dein sicheres Passphrase über einen sicheren Kanal erstellt oder geändert werden - zum Beispiel über ssh(1) oder direkt an der Konsole.

OpenBSDs S/Key-Implementation kann eine Reihe Algorithmen für die Einweg-Hashfunktion nutzen. Die folgenden Algorithmen stehen zur Verfügung:

S/Key einrichten - Die ersten Schritte

Zu Beginn muss das Verzeichnis /etc/skey existieren. Wenn dieses Verzeichnis nicht vorliegt, lasse den Administrator es erstellen. Dies kann mit folgendem Befehl einfach durchgeführt werden:

# skeyinit -E

Sobald das Verzeichnis existiert, kannst du dein S/Key einrichten. Um dies zu tun, musst du skeyinit(1) verwenden. Da skeyinit(1) dich nach deinem sicheren S/Key-Passphrase fragen wird, musst du dieses Programm über einen sicheren Kanal ausführen - Anweisungen hierfür stehen weiter oben! Das Programm wird dich im Übrigen hieran erinnern. skeyinit(1) wird dich zuerst nach deinem Passwort für das System fragen. Dies kann das gleiche Passwort sein, das du zum Anmelden an das System verwendest. Sobald du dich mit deinem Systempasswort angemeldet hast, wirst du nach deinem sicheren S/Key-Passphrase gefragt. Hierbei handelt es sich NICHT um dein Systempasswort. Dein sicherer Passphrase sollte mindestens 10 Zeichen lang sein. Wir empfehlen, einen einprägsamen Satz als sicheren Passphrase zu verwenden, der aus mehreren Wörtern besteht. Hier wird ein Beispielnutzer hinzugefügt.

$ skeyinit Reminder - Only use this method if you are directly connected or have an encrypted channel. If you are using telnet, exit with no password and use skeyinit -s. Password: [Adding ericj with md5] Enter new secret passphrase: Again secret passphrase: ID ericj skey is otp-md5 100 oshi45820 Next login password: HAUL BUS JAKE DING HOT HOG

Eine Zeile mit besonderer Wichtigkeit hier ist ID ericj skey is otp-md5 100 oshi45820. Dies gibt eine Menge Informationen an den Benutzer. Hier wird nun unter Sektionen und ihrer Wichtigkeit aufgeteilt:

Aber von größerer Bedeutung ist dein Einweg-Passwort. Dein Einweg-Passwort besteht aus 6 kleinen Wörtern, zusammengesetzt ergibt sich daraus dein Einweg-Passwort, Leerstellen und alles andere zählen dazu. Das Einweg-Passwort, das von skeyinit ausgegeben wurde, kann nicht zum Einloggen genutzt werden (Es gibt eine Verwendung für dieses erste Einweg-Passwort, siehe skeyinit(1)). Um in der Lage sein, sich anmelden zu können, muss ein Einweg-Passwort korrespondierend zu dem Challenge, das vom Loginprozess ausgegeben wird, unter Verwendung von skey(1) ermittelt werden. Die nächste Sektion zeigt, wie man das macht.

S/Key tatsächlich zum Anmelden verwenden.

Bisher wurde dein skey initialisiert. Du bist bereit, dich anzumelden. Hier ist eine Beispielsitzung, bei der S/Key zum Anmelden genutzt wird. Um ein S/Key-Login durchzuführen, hänge :skey an deinen Loginnamen an.

$ ftp localhost Connected to localhost. 220 oshibana.shin.ms FTP server (Version 6.5/OpenBSD) ready. Name (localhost:ericj): ericj:skey 331- otp-md5 96 oshi45820 331 S/Key Password: 230- OpenBSD 4.2 (GENERIC) #375: Tue Aug 28 10:38:44 MDT 2007 230- 230- Welcome to OpenBSD: The proactively secure Unix-like operating system. 230- 230- Please use the sendbug(1) utility to report bugs in the system. 230- Before reporting a bug, please try to reproduce it with the latest 230- version of the code. With bug reports, please try to ensure that 230- enough information to reproduce the problem is enclosed, and if a 230- known fix for it exists, include that as well. 230- 230 User ericj logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp> quit 221 Goodbye.

Beachte, dass ich »:skey« an meinen Benutzernamen angehängt habe. Dies teilt ftpd mit, dass ich mich unter Verwendung von S/Key anmelden möchte. Einigen wird vielleicht aufgefallen sein, dass sich meine Sequenznummer auf otp-md5 96 oshi45820 geändert hat. Dies passierte, da ich bisher mein S/Key einige Mal genutzt habe, um mich einzuloggen. Aber wie bekommst du nun dein Einweg-Passwort? Nun gut, um das Einweg-Passwort zu ermitteln, musst du wissen, welche Sequenznummer du verwendest und was dein Schlüssel ist. Du fragst dich wahrscheinlich gerade, wie du dir merken kannst, bei welcher Sequenznummer du gerade bist?

Wenn du dich anmeldest, gibt der Loginprozess eine Zeile aus, die die benötigten Informationen beinhaltet, nämlich die, die du verwenden kannst, um ein Einweg-Passwort sofort auf einem anderen vertrauenswürdigen Zugriff auf dein System über einen sicheren Kanal durch Copy & Paste dieser Zeile in eine Kommando-Shell ermitteln zu können:

otp-md5 96 oshi45820

Nach der Eingabe von deinem Passwort wird dein Einweg-Passwort ausgegeben, was du dann wiederum mit Copy & Paste beim S/Key-Passwortprompt eingeben kannst, um dich anzumelden. Nicht nur ist otp-md5 eine Beschreibung vom Hash, der genutzt wird, sondern ist ebenfalls ein alternativer Name für das skey(1)-Kommando.

Wenn du bereits angemeldet bist und ein Einweg-Passwort für den nächsten Login generieren lassen möchtest, verwende skeyinfo(1), es wird dir sagen, was du für das nächste Anmelden verwenden musst. Hier zum Beispiel muss ich ein weiteres Einweg-Passwort für einen Login generieren lassen, den ich später durchführen muss. (Denke daran, dass ich das von einem sicheren Kanal aus mache).

$ skeyinfo 95 oshi45820

Ein noch besserer Weg ist, skeyinfo -v zu nutzen, was ein Kommando ausgibt, das zum Ausführen in einer Shell geeignet ist. Zum Beispiel:

$ skeyinfo -v otp-md5 95 oshi45820

Der einfachste Weg, das nächste S/Key-Passwort zu erzeugen, ist einfach:

$ `skeyinfo -v` Reminder - Do not use this program while logged in via telnet. Enter secret passphrase: NOOK CHUB HOYT SAC DOLE FUME

Achte auf die Backticks im vorherigen Beispiel.

Ich bin mir sicher, dass viele von euch nicht immer einen sichere Verbindung oder einen vertrauenswürdigen lokalen Computer haben, um diese Passwörter zu erstellen, und sie über einen unsichere Verbindung zu erstellen ist nicht machbar, so wie kann man mehrere Passwörter zur gleichen Zeit erstellen? Nun, du kannst skey(1) die Anzahl der zu erstellenden Passwörter übergeben. Diese können dann ausgedruckt werden und du kannst sie so an jeden beliebigen Ort mithinnehmen.

$ otp-md5 -n 5 95 oshi45820 Reminder - Do not use this program while logged in via telnet. Enter secret passphrase: 91: SHIM SET LEST HANS SMUG BOOT 92: SUE ARTY YAW SEED KURD BAND 93: JOEY SOOT PHI KYLE CURT REEK 94: WIRE BOGY MESS JUDE RUNT ADD 95: NOOK CHUB HOYT SAC DOLE FUME

Beachte hierbei aber, dass das unterste Passwort zuerst genutzt wird, weil wir von von 100 herunterzählen.

S/Key mit telnet(1) und ssh(1) nutzen

S/Key mit telnet(1) oder ssh(1) zu nutzen ist fast genauso wie mit ftp - du hängst einfach »:skey« an deinen Benutzernamen an. Beispiel:

$ telnet localhost Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. OpenBSD/i386 (oshibana) (ttyp2) login: ericj:skey otp-md5 98 oshi45821 S/Key Password: SCAN OLGA BING PUB REEL COCA Last login: Thu Apr 7 12:21:48 on ttyp1 from 156.63.248.77 OpenBSD 4.2 (GENERIC) #375: Tue Aug 28 10:38:44 MDT 2007 Welcome to OpenBSD: The proactively secure Unix-like operating system. Please use the sendbug(1) utility to report bugs in the system. Before reporting a bug, please try to reproduce it with the latest version of the code. With bug reports, please try to ensure that enough information to reproduce the problem is enclosed, and if a known fix for it exists, include that as well. You have mail. $

8.12 - Unterstützt OpenBSD SMP?
(Symmetric Multi-Processor)

SMP wird auf den OpenBSD/i386- und OpenBSD/amd64-Plattformen unterstützt.

Ein separater SMP-Kernel (bsd.mp) wird mit den Installations-Dateisets mitgeliefert, welcher während der Installation ausgewählt werden kann. Es wird angenommen, dass du zuerst versuchst, diesen Kernel zu booten, bevor du ihn in bsd umbenennst und ihn somit zum standardmäßigen Kernel machst.

Wir hoffen, dass andere SMP-fähige Plattformen in Zukunft unterstützt werden. Auf den meisten anderen Plattformen wird OpenBSD zwar auf einem SMP-System laufen aber nur einen Prozessor nutzen. Die Ausnahme hierfür ist die SPARC-Plattform - OpenBSD/sparc benötigt manchmal, dass zusätzliche MBus-Module entfernt werden, damit das System bootet. Multi-Prozessor-SPARC64-System laufen, vorausgesetzt, dass die Basismaschine unterstützt wird.

8.13 - Ich bekomme manchmal Ein-/Ausgabefehler, wenn ich meine tty-Devices benutze

Du musst /dev/cuaXX für Verbindungen nutzen, die vom OpenBSD-System aus erstellt werden, die /dev/ttyXX-Devices sind nur für Terminal- und Dialin-Verwendungen gedacht. Obwohl es möglich war, die tty-Devices in der Vergangenheit zu nutzen, unterstützt der OpenBSD-Kernel diese Gebrauchsweise nicht mehr.

Aus cua(4):

For hardware terminal ports, dial-out is supported through matching device nodes called calling units. For instance, the terminal called /dev/tty03 would have a matching calling unit called /dev/cua03. These two devices are normally differentiated by creating the calling unit device node with a minor number 128 greater than the dial-in device node. Whereas the dial-in device (the tty) normally requires a hardware signal to indicate to the system that it is active, the dial-out device (the cua) does not, and hence can communicate unimpeded with a device such as a modem. This means that a process like getty(8) will wait on a dial-in device until a connection is established. Meanwhile, a dial-out connection can be established on the dial-out device (for the very same hardware terminal port) without disturbing anything else on the system. The getty(8) process does not even notice that anything is happening on the terminal port. If a connecting call comes in after the dial-out connection has finished, the getty(8) process will deal with it properly, without having noticed the intervening dial-out action.

8.14 - Welche Webbrowser gibt es für OpenBSD?

Lynx, ein textbasierter Browser, befindet sich im Basissystem und hat SSL-Unterstützung. Andere Browser im Ports-Tree sind unter anderem (in keiner bestimmten Reihenfolge):

Grafische (X-)Browser

Konsolenbrowser (Textmodus)

Du kannst sie alle in der Packagekollektion finden. Alle zuvor erwähnten Browser befinden sich unter /usr/ports/www nach der Installation des Ports-Trees. Die meisten sind als vorkompilierte Packages auf den FTP-Servern und auf der CD-ROM vorfindbar. Die meisten der grafischen Browser sind sehr groß und benötigen recht viel Zeit, um heruntergeladen und kompiliert zu werden, man selte ernsthaft die Verwendung von Packages in Betracht ziehen, wann immer es geht.

8.15 - Wie benutzt man den Editor mg?

Mg ist ein Mikro-, Emacs-artiger Texteditor, der in OpenBSD integriert ist. Mikro bedeutet, dass er klein (Emacs ist sehr groß!). Lies die mg(1)-Manualseite und das Tutorial für den Einstieg, beide werden mit dem Quelltext mitgeliefert. Für weitere interessante Fragen (wie zum Beispiel »Ich habe keine Meta-Taste!«), lies auch die Emacs-FAQ.

Denke daran, dass viele der anderen Funktionalitäten von Emacs nicht mit abgebildet werden, da mg eine kleine Emacs-Implementation ist, welche den Editorfunktionen von Emacs 17 sehr ähnlich ist. (Das betrifft die Mail- und News-Funktionalität, sowie die Modi für Lisp, C++, Lex, Awk, Java etc.)

8.16 - ksh(1) liest offenbar meine .profile nicht!

Es gibt zwei sehr wahrscheinliche Gründe dafür, dass ksh(1) scheinbar die .profile-Datei eines Benutzers ignoriert.

8.17 - Wieso wird meine /etc/motd-Datei überschrieben, wenn ich sie modifiziert habe?

Die /etc/motd-Datei wird bei jedem Hochfahren des Systems editiert, um alles bis zur ersten leeren Zeile - diese ist dann aber ausgeschlossen - mit den Versionsinformationen des Systemkernels zu überschreiben. Wenn du diese Datei bearbeitest, stelle sicher, dass du nach dieser Leerzeile anfängst, sodass /etc/rc davon abgehalten wird, diese Zeilen zu löschen, wenn /etc/motd beim Hochfahren editiert wird.

8.18 - Wieso läuft www.openbsd.org auf Solaris?

Obwohl keiner der Entwickler denkt, dass das von besonderer Bedeutung wäre, wurde diese Frage in den Mailinglisten oft genug gestellt, so dass sie hier beantwort wird. www.openbsd.org und die Haupt-OpenBSD-FTP-Site werden von SunSITE in der University of Alberta, Kanada bereitgestellt. Diese Sites werden auf einem großen Sun-System bereitgestellt, welches Zugriff auf jede Menge Speicherplatz und Internetbandbreite hat. Die Anwesenheit von SunSITE gibt der OpenBSD-Gruppe Zugriff auf diese Bandbreite. Das ist der Grund, warum unsere Hauptsite hier läuft. Viele der OpenBSD-Mirror laufen mit OpenBSD, aber da sie keinen garantierten Zugriff auf diese große Bandbreite haben, hat die Gruppe sich dazu entschlossen, die Hauptsite bei der University of Alberta SunSITE aufzubewahren.

8.20 - Kantengeglättete und TrueType-Schriftarten unter X

Siehe dieses Dokument.

8.21 - Unterstützt OpenBSD irgendwelche Journaling-Dateisysteme?

Nein, tut es nicht. Wir verwenden einen anderen Mechanismus, um ähnliche Resultate zu erzielen, der Softupdates genannt wird. Lies bitte FAQ 14 - Softupdates für weitere Informationen.

8.22 - Reverse DNS
     - oder -
»Wieso dauert es so lange, wenn ich mich anmelde?«

Viele neue Anwender von OpenBSD erleben einen zwei Minuten langen Verzug während dem Login, wenn Dienste wie ssh, ftp oder telnet verwendet werden. Dies kann auch passieren, wenn ein Proxy eingesetzt wird, wie zum Beispiel ftp-proxy, oder wenn Mails von einer Workstation über sendmail gesendet werden.

Dies liegt fast immer an Reverse-DNS-Problemen. DNS ist »Domain Name Servies«, das System, das das Internet verwendet, um Namen wie zum Beispiel www.openbsd.org in eine nummerische IP-Adresse umzuwandeln. Eine andere Aufgabe von DNS ist die Möglichkeit, eine nummerische Adresse zu nehmen und sie zurück zu einem Namen umzuwandeln, das wird dann Reverse DNS genannt.

Um besseres Logging zur Verfügung zu stellen, führt OpenBSD ein »Reverse DNS Lookup« auf die Maschinen aus, die sich auf einen der vielen Wege mit dem System verbindet, dazu gehören auch ssh, ftp, telnet, sendmail und ftp-proxy. Unglücklicherweise passiert es in einigen Fällen, dass die Maschine, die die Verbindung aufbaut, keinen gültigen Reverse-DNS-Eintrag besitzt.

Ein Beispiel für diese Situation:

Ein Benutzer richtet seine OpenBSD-Kiste als Firewall und Gateway für ihr internes Heimnetzwerk ein, alle internen Rechner werden die gleiche externe IP unter Verwendung von NAT verwenden. Vielleicht nutzen sie die Kiste auch als ausgehenden Mail-Relay. Sie folgen den Installationsanweisungen und sind mit den Resultaten sehr zufrieden, mit Ausnahme einer Sache - jedes Mal, wenn sie versuchen, sich auf irgendeine Art und Weise mit dem System zu verbinden, müssen sie zwei Minuten lang warten, bevor irgendwas passiert.

Was passiert:

Von einer Workstation hinter der NAT des Gateways mit der nicht registrierten IP-Adresse 192.168.1.35 aus verwendet der Benutzer ssh, um auf das Gateway-System zuzugreifen. Der ssh-Client fragt nach Benutzername und Password und sendet sie zur Gateway-Kiste. Das Gateway versucht dann herauszufinden, wer gerade versucht, sich anzumelden und führt ein »Reverse DNS Lookup« auf 192.168.1.35 aus. Das Problem ist, dass 192.168.0.0-Adressen für privaten Gebrauch sind, sodass ein vernünftig konfigurierter DNS-Server außerhalb des Netzwerks keine Informationen über diese Adressen haben sollte. Einige werden schnell eine Fehlermeldung zurückgeben, in diesen Fällen nimmt OpenBSD an, dass es keine Informationen erhalten kann und wird ebenso schnell aufhören, weiter zu suchen, und dem Benutzer Zugang gewähren. Andere DNS-Server werden GAR KEINE Antwort geben. In diesem Fall wirst du warten müssen, bis der OpenBSD-Namensauflöser eine Zeitüberschreitung hat, was dazu führt, dass du ungefähr zwei Minuten warten musst, bis du weitermachen darfst. In dem Fall von ftp-proxy ist es so, dass einige FTP-Clients bereits eine Zeitüberschreitung haben, bevor das Gleiche mit der Reverse-DNS-Anfrage passiert, was wiederum dazu führt, dass es scheint, als wenn ftp-proxy nicht läuft.

Das kann recht nervig sein. Zum Glück ist es einfach, den Fehler zu beheben.

Korrektur, Verwendung von /etc/hosts:

Der einfachste Weg zum Lösen des Problems ist, eine /etc/hosts-Datei anzulegen, die alle Workstations in deinem internen Netzwerk beinhaltet, und stelle sicher, dass deine /etc/resolv.conf-Datei die Zeile lookup file bind enthält, welche sicherstellt, dass der Resolver weiß, dass er mit der /etc/hosts-Datei beginnen soll, und wenn das fehlschlägt, die DNS-Server nutzen soll, die in den »nameserver«-Zeilen der /etc/resolv.conf angegebenen DNS-Server anzufragen hat.

Deine /etc/hosts-Datei wird in etwa so aussehen:

::1 localhost.in.example.org localhost 127.0.0.1 localhost.in.example.org localhost 192.168.1.1 gw.in.example.org gw 192.168.1.20 scrappy.in.example.org scrappy 192.168.1.35 shadow.in.example.org shadow

Deine resolv.conf-Datei wird ungefähr so aussehen:

search in.example.org nameserver 24.2.68.33 nameserver 24.2.68.34 lookup file bind

Eine typische Anmerkung hierzu ist »Aber ich verwende DHCP für mein internes Netzwerk! Wie kann ich da meine /etc/hosts konfigurieren?« Eigentlich recht einfach. Trage einfach für alle Adressen, die der DHCP-Server vergeben wird, zusätzlich zu denen der statischen Geräte, eine Zeile ein:

::1 localhost.in.example.org localhost 127.0.0.1 localhost.in.example.org localhost 192.168.1.1 gw.in.example.org gw 192.168.1.20 scrappy.in.example.org scrappy 192.168.1.35 shadow.in.example.org shadow 192.168.1.100 d100.in.example.org d100 192.168.1.101 d101.in.example.org d101 192.168.1.102 d102.in.example.org d102 [... Schnipp ...] 192.168.1.198 d198.in.example.org d198 192.168.1.199 d199.in.example.org d199

In diesem Fall nehme ich an, dass der DHCP-Bereich so eingerichtet wurde, dass er von 192.168.1.100 bis 192.168.1.199 reicht, zusätzlich zu den drei statischen Definitionen, die am Anfang der Datei eingetragen wurden.

Wenn dein Gateway DHCP für die Konfiguration nutzen muss, dann wirst du wohl in der Tat ein Problem haben - dhclient wird deine /etc/resolv.conf jedes Mal überschreiben, wenn die Lease erneuert wird, was die »lookup file bind«-Zeile überschreibt. Dies kann gelöst werden, indem die Zeile »lookup file bind« in die Datei /etc/resolv.conf.tail eingetragen wird.

Korrektur, Unter Verwendung eines lokalen DNS-Servers

Details darüber würden den Rahmen dieses Dokuments sprengen, aber der grundsätzliche Trick besteht darin, deinen bevorzugten DNS-Server einzurichten und sicherzustellen, dass er sowohl für den Forward-DNS als auch den Reverse-DNS für die Geräte in deinem Netzwerk zuständig ist, und stelle ebenfalls sicher, dass deine Computer (einschließlich deinem Gateway) wissen, dass sie ihn als DNS-Server nutzen sollen.

8.23 - Warum sind die OpenBSD-Webseiten nicht standardkonform zu HTML4/XHTML?

Die vorliegenden Webseiten wurden sorgfältig erstellt, damit sie mit einer breiten Palette an Browsern zusammenarbeiten können, von aktuellen Browsern bis hin zu Version 4.0 und noch älter. Wir möchten diese alten Seiten konform zu HTML4 oder XHTML machen, außer wir sind uns sicher, dass sie ebenfalls auf alten Browsern richtig angezeigt werden; es ist halt einfach keine Priorität für uns. Wir begrüßen neue Beitragende, aber weisen darauf hin, dass du Code schreiben solltest oder neue Aspekte des Systems dokumentieren solltest, statt die existierenden Webseiten so zu optimieren, dass sie zu neuen Standards konform sind.

8.24 - Warum geht meine Uhr um gut zwanzig Sekunden falsch?

Wenn rdate(8) genutzt wird, um deine Uhr mit einem NTP-Server abzugleichen, dann kann es sein, dass deine Uhr gut zwanzig Sekunden mit der lokalen Zeitvorgabe abweicht.

Das wird durch einen Unterschied zwischen der UTC- (Coordinated Universal Time, die auf astronomischen Beobachtungen beruht) -Zeit und der TAI- (Internation Atomic time, basiert auf Atomuhren) -Zeit. Um die Variationen in der Erddrehung zu kompensieren, werden ,Sprungsekunden' in die UTC eingeführt, die TAI jedoch wird nicht angepasst. Diese Sprungsekunden sind der Grund dieses Umstandes. Für eine detailliertere Beschreibung hierfür, suche im Web nach »leap seconds UTC TAI«.

Das Problem anzugehen ist recht einfach. In den meisten Ländern wirst du die korrekte Zeit erhalten, wenn du den Parameter -c mit rdate(8) verwendest und eine Zeitzone aus dem Verzeichnis /usr/share/zoneinfo/right/ nutzt. Wenn du zum Beispiel in Deutschland wohnst, könntest du diese Befehle nutzen: # cd /etc && ln -sf /usr/share/zoneinfo/right/CET localtime # rdate -ncv ptbtime1.ptb.de In anderen Ländern müssen eventuell andere Regeln genutzt werden.

8.25 - Warum geht meine Uhr um mehrere Stunden falsch?

Standardmäßig nimmt OpenBSD an, dass deine Hardwareuhr auf UTC (Universal Coordinated Time) steht, statt auf Ortszeit, wie es bei einigen anderen Betriebssystemen angenommen wird. Das kann zu Problemen beim Multibooting führen.

Die meisten anderen Betriebssysteme (einschließlich Windows) können so eingestellt werden, dass sie das gleiche machen. Damit kann das Problem einfach umgangen werden. Unter Windows NT/2000/XP z. B. kann man folgenden DWORD-Wert in der Registry erstellen und auf 1 setzen, sodass angenommen wird, dass die Hardwareuhr auf UTC eingestellt ist.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal

Falls du ein Problem damit haben solltest dass die Hardwareuhr auf UTC gestellt ist, kannst du auch das standardmäßige Verhalten von OpenBSD mittels config(8) ändern. Um zum Beispiel OpenBSD so zu konfigurieren, dass die Hardwareuhr auf US/Eastern gestellt wurde (5 Stunden hinter UTC, also 300 Minuten):

# config -ef /bsd OpenBSD 4.2 (GENERIC) #375: Tue Aug 28 10:38:44 MDT 2007 deraadt@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC Enter 'help' for information ukc> timezone 300 timezone = 300, dst = 0 ukc> quit Saving modified kernel.
Siehe options(4) und suche nach der Option TIMEZONE=value für weitere Informationen.

Normalerweise wird die Zeitzone während der Installation eingestellt. Wenn du die Zeitzone ändern musst, dann kannst du einen neuen symbolischen Verweis auf die passende Zeitzonen-Datei unter /usr/share/zoneinfo anlegen. Um zum Beispiel die Maschine so einzurichten, dass sie EST5EDT als neue lokale Zeitzone nutzt:

# ln -fs /usr/share/zoneinfo/EST5EDT /etc/localtime

Siehe auch:

[FAQ-Index] [Zum Kapitel 7 - Tastatur- und Bildschirmkontrollen] [Zum Kapitel 9 - Zu OpenBSD migrieren]


[back] www@openbsd.org
$OpenBSD: faq8.html,v 1.49 2008/01/13 13:43:34 tobias Exp $