MINI-FAQ: OpenBSD upgraden - Alte Releases

Hier aufgeführte Releases: 2.3 bis 4.2

Dieses Dokument enthält Einträge der Mini-FAQ über das Upgraden von OpenBSD-Releases, die nicht mehr aktiv unterstützt werden. Lies die Seite Der Entwicklung von -current folgen, um Informationen für das aktuelle Release zu erhalten.

1.0: Allgemeine Fragen über das Upgrade

1.1: Wo finde ich Informationen über aktuellere OpenBSD-Releases?

Von 4.1 auf 4.2 upgraden

Von 4.0 auf 4.1 upgraden

Von 3.9 auf 4.0 upgraden

Von 3.8 auf 3.9 upgraden

Von 3.7 auf 3.8 upgraden

Von 3.6 auf 3.7 upgraden

2004-10-27 - Flagday für die Verarbeitung von Exceptions (amd64, cats, hppa, sgi, sparc64)
2004-10-29 - Wechsel auf gcc3 (macppc)
2004-11-11 - Verhaltensänderung vom bgpd
2004-11-24 - Neuer Benutzer und neue Gruppe: _ftp
2004-12-30 - Wechsel auf gcc3 (i386)
2005-01-18 - Neuer Benutzer und neue Gruppe: _ospfd
2005-01-24 - pfsync nimmt syncdev statt syncif
2005-02-02 - POSIX-konforme hexadezimale und oktale Konstanten in (k)sh

Von 3.5 auf 3.6 upgraden

3.5.1: Unternummern des pty-Devices geändert
3.5.2: Neuer Benutzer und neue Gruppe namens _dhcp
3.5.3: Neuer Benutzer und neue Gruppe namens _mopd
3.5.4: Neuer Benutzer und neue Gruppe namens _tftpd
3.5.5: Neuer Benutzer und neue Gruppe namens _rbootd
3.5.6: cksum nach /bin verschoben
3.5.7: Neuer Benutzer und neue Gruppe namens _afs
3.5.8: Neuer Benutzer und neue Gruppe namens _ppp
3.5.9: Neuer Benutzer und neue Gruppe namens _ntp
3.5.10: Flagday für Versionserhöhung der Bibliotheken
3.5.11: Änderungen in PF-Anker

Von 3.4 auf 3.5 upgraden

3.4.1: Unternummern des svnd-Devices geändert
3.4.2: Neuer Benutzer und neue Gruppe namens _pflogd
3.4.3: Interfacecloning
3.4.4: Neuer Benutzer und neue Gruppe namens _bgpd
3.4.5: Neue Version von join(1)
3.4.6: Übersetzungsänderung von sudo
3.4.7: Neuer Benutzer und neue Gruppe namens _tcpdump
3.4.8: Änderungen an machdep.c (i386)
3.4.9: Aktualisierte bsd.own.mk
3.4.10: Wechsel auf gcc3 (sparc64)

Von 3.3 auf 3.4 upgraden

3.3.1: W^X-Unterstützung für i386
3.3.2: Änderung am mquery-syscall
3.3.3: i386-Flagday: Änderung an exe addr/MAXDSIZ
3.3.4: Entfernung der KerberosIV-Authentikation
3.3.5: Änderung an config
3.3.6: Verwende __attribute__((bounded)) bei bestimmten Funktionen
3.3.7: Neuer Benutzer und neue Gruppe namens _syslogd
3.3.8: Verwende das Formatattribut __kprintf__ in Kernelheader

Von 3.2 auf 3.3 upgraden

3.2.1: Neues Perl
3.2.2: Neue Gruppen: _radius, _token und _shadow
3.2.3: Wichtige Compileränderungen
3.2.4: Neuer Benutzer und neue Gruppe namens _spamd
3.2.5: Alias für ipv6-icmp
3.2.6: Neue Gruppe namens _lkm
3.2.7: Neue libpthread
3.2.8: Linkeränderungen für ELF-Architekturen
3.2.9: Entfernung von /var/at und Änderungen an Crontabs

Von 3.1 upgraden

3.1.1: Neue Benutzer/Gruppen
3.1.2: NNeue Gruppe für crontab(1) und at(1)
3.1.3: Neue Binutils
3.1.4: Neue S/Key-Konfiguration
3.1.5: Neue Rechte für lp*
3.1.6: atrun(8) wird nicht mehr benötigt
3.1.7: nat.conf in pf.conf eingebunden
3.1.8: Neuer fbtab-Eintrag für xdm benötigt
3.1.9: Verwende __attribute__((sentinel)) mit bestimmten Funktionen

Von 3.0 upgraden

3.0.1: Neues Schlüsselwort wird von mtree(8) unterstützt
3.0.2: Entfernung von libdl auf ELF-Plattformen
3.0.3: Neues Regressionframework
3.0.4: Konfigurationsdateien von ssh nach /etc/ssh/ verschoben

Von 2.9 upgraden

2.9.1: Neue Benutzer/Gruppen: proxy, smmsp und popa3d
2.9.2: Neuer Paketfilter: pf
2.9.3: Änderungen an make
2.9.4: Erzeugung bricht wegen KerberosV-Fehlern ab
2.9.5: Neue Version von sendmail
2.9.6: /etc/primes verschoben

Von 2.8 upgraden

2.8.1: Neue Gruppe namens auth
2.8.2: Neues wscons-Konsolensystem
2.8.3: Kernelkompilierung schlägt wegen undefinierten Symbolen fehl

Von 2.7 upgraden

2.7.1: Welche großen Probleme treten beim Upgrade von 2.7 auf 2.8 auf?

Von 2.6 upgraden

2.6.1: Termcap-Einträge sind zu lang.
2.6.2: Mein pn- (oder mx-, al-, ax-) Device wird nicht mehr vom Kernel erkannt.
2.6.3: Von gcc 2.95.1 auf 2.95.2 upgraden
2.6.4: Kerberos upgraden.
2.6.5: M4 upgraden.
2.6.6: Sendmail upgraden.
2.6.7: Nach dem Upgraden booten die Kernel nicht mehr, die Unterstützung für apm(8) beinhalten.
2.6.8: Standardgruppe des Benutzers daemon geändert

Von 2.5 upgraden

2.5.1: Welche großen Probleme treten beim Upgrade von 2.5 auf 2.6 auf?
2.5.2: Wie upgrade ich von gcc auf egcs

2.5.2.1 - i386 und sparc werden nicht mehr per #define definiert
2.5.2.2 - Erzeugungsphase bricht bei xlint ab
2.5.2.3 - Coredump bei uthread_autoinit.c
2.5.2.4 - egcs scheint viel langsamer zu sein als gcc
2.5.2.5 - egcs generiert größeren Code als gcc
2.5.2.6 - Nach der Installation von egcs hatte ich nur noch wenig Plattenspeicher übrig
2.5.2.7 - Meine Erzeugungsphase bricht während libcurses ab
2.5.2.8 - make obj schlägt fehl

2.5.3: Mein make build bricht mit Fehlern über unimplemented syscall ab
2.5.4: Verweis auf das neue 2.6-Verzeichnis.
2.5.5: Nach einem (U)pgrade schlägt das Entpacken von base26.tar.gz mit einer Meldung fehl.

Von 2.4 upgraden

2.4.1: Änderungen an den Manualseiten
2.4.2: Syntax von cap_mkdb wurde geändert
2.4.3: Snake

Von 2.3 upgraden

2.3.1: Neuer Benutzer: named
2.3.2: Ich habe versucht, das System zu erzeugen, doch schlägt der Prozess fehl, wenn ssleay kompiliert werden soll.
2.3.3: Ich habe versucht, dass System zu erzeugen, doch schlägt der Prozess fehl, wenn ich das System für die PowerPC-Architektur erstelle.

 

1.0: Allgemeine Fragen über das Upgrade

1.1: Wo finde ich Informationen über aktuellere OpenBSD-Releases?

Lies die Seite Der Entwicklung von -current folgen.

Von 4.1 auf 4.2 upgraden

2007-03-26 - Xenocara ersetzt XF4 in -current

Der xenocara-Tree wird nun statt des XF4-Trees eingesetzt, um X für OpenBSD zu übersetzen. Weitere Details gibt es auf undeadly.org.

Wenn du weiterhin Option "xkbrules" "xfree86" in deiner /etc/X11/xorg.conf-Konfigurationsdatei verwenden möchtest, musst du sie gegen Option "xkbrules" "xorg" austauschen.

Wenn du Xenocara unbedingt vom Quelltext aus übersetzen willst (mach das nicht, verwende die Snapshots!), lies xenocara/README und release(8)

2007-03-27 - aktualisierter ahci(4) könnte die Gerätenamen von SATA-Platten vertauschen

Kürzlich vorgenommene Änderungen am ahci(4)-Subsystem könnten dazu führen, dass zuvor als wd* (z. B. wd0) erkannte Geräte nun als sd* (z. B. sd0) angesprochen werden.

Dies kann zu einem Problem führen, wenn du von einem frühern Snapshot aktualisieren möchtest. Lies die Ausgabe von dmesg währen des Bootvorgangs. Ein Laufwerk, das vorher wie folgt erkannt wurde:

pciide1 at pci0 dev 31 function 2 "Intel 82801GBM AHCI SATA" rev 0x02: DMA, channel 0 wired to native-PCI, channel 1 wired to native-PCI
pciide1: using apic 2 int 11 (irq 11) for native-PCI interrupt
wd0 at pciide1 channel 0 drive 0: <FUJITSU MHV2080BH>
wd0: 16-sector PIO, LBA48, 76319MB, 156301488 sectors
wd0(pciide1:0:0): using PIO mode 4, Ultra-DMA mode 5
wird ab jetzt so erkannt:

ahci0 at pci0 dev 31 function 2 "Intel 82801GBM AHCI SATA" rev 0x02: AHCI 1.1: apic 2 int 16 (irq 11)
scsibus1 at ahci0: 32 targets
sd0 at scsibus1 targ 0 lun 0: <ATA, FUJITSU MHV2080B, 0084> SCSI2 0/direct fixed
sd0: 76319MB, 76319 cyl, 64 head, 32 sec, 512 bytes/sec, 156301488 sec total

Wir empfehlen dir, deine /etc/fstab-Datei so zu editieren, dass alle relevanten /dev/wd-Einträge stattdessen auf /dev/sd-Geräte und -Partitionen zeigen.

Die andere Möglichkeit wäre, ahci mit config(8) oder boot -c zu deaktiveren.

Lies die Manualseiten von ahci(4) und config(8), falls du weitere Details benötigst.

2007-03-31 - Filtersprache von bgpd geändert

bgpd-Filter, die nur mit prefixlen als Filterparameter arbeiten, müssen nun eine Adressfamilie als Bezeichner wie zum Beispiel inet oder inet6 angeben:

allow from any inet prefixlen 8 - 24
deny from any inet6 prefixlen > 64

2007-05-10 - Packages verwenden libexpat, die mit xenocara ausgeliefert wird

Der libexpat-Port wurde entfernt. Packages verwenden stattdessen nun libexpat, die mit xenocara ausgeliefert wird.

Sehr viele Packages benötigen über weitere Abhängigkeiten libexpat. Zum Beispiel die etlichen Packages, die gettext benötigen, benötigen auch libexpat.

Somit musst du unbedingt xbase42.tgz installiert haben, bevor du neue Packages installieren kannst oder dein System auf einen Snapshot upgradest, der neuer ist als deine Packages. Dies gilt selbst wenn deine Packages keine grafischen Ausgaben haben. Lies bitte die FAQ, um zu erfahren, wie du xbase42.tgz in ein bereits installiertes System einbinden kannst. Falls du dies nicht machst und ein Package installieren willst, das libexpat benötigt, wird pkg_add(1) eine Fehlermeldung ausgeben.

Wenn du das erste Mal irgendein X-Dateiset auf deinem System installiert hast, muss der Cache für die Shared Librarys nach der Installation mit ldconfig(8) aktualisiert werden. Um die X-Bibliotheken zum Cache hinzuzufügen:

# ldconfig -m /usr/X11R6/lib
Alternativ dazu kannst du auch das System neustarten - dann wird dieser Schritt automatisch ausgeführt.

Nachdem du all deine Packages auf eine aktuellere Snapshotversion aktualisiert hast, entferne das alte expat-Package von deinem System:

# pkg_delete expat

2007-05-29 - [i386] apm(4) hat gegenüber acpi(4) Vorrang

Die Geräteerkennung für i386 wurde so verändert, dass apm(4) gegenüber acpi(4) bevorzugt wird. Das bedeutet, dass nur apm aktiviert wird, falls deine Hardware sowohl über APM- als auch ACPI-Geräte verfügt. Falls du aus irgendeinem Grund acpi bevorzugen solltest, deaktiviere apm in deinem acpi-aktivierten Kernel unter Verwendung von config(8) oder boot -c.

2007-07-10 - Aktualisierter wpi(4) benötigt neue Firmware

Die neuesten Änderungen am wip(4)-Treiber setzen voraus, dass das wpi-firmware-Package auf Revision 2.14.4 aktualisiert wird.

Wie gewöhnlich kannst du eine zusammengestellte Fassung des Firmwares hier herunterladen:
http://damien.bergamini.free.fr/packages/openbsd/wpi-firmware-2.14.4.tgz

2007-07-10 - Änderungen in der Umgebungsübergabe in sudo(8)

Aus Sicherheitsgründen setzt sudo(8) die Umgebungsvariablen auf ein kleines Standardset zurück, in die nur wenige bestimmte Variablen aus der vorherigen Umgebung übernommen werden.

Damit ein Großteil der Aufrufe weiterhin wie erwartet funktionieren, füge die folgende Zeile in deine /etc/sudoers-Datei mit dem Programm visudo(8) ein:

# Defaults specification Defaults env_keep +="DESTDIR FETCH_CMD FLAVOR FTPMODE MAKE MULTI_PACKAGES OKAY_FILES PKG_DBDIR PKG_DESTDIR PKG_CACHE PKG_PATH PKG_TMPDIR PORTSDIR RELEASEDIR SUBPACKAGE"

2007/08/01 - [alpha] einige de(4)-Netzwerkkarten werden zu dc(4)

Auf der Alpha-Plattform werden einige Netzwerkkarten, die zuvor vom de(4)-Treiber unterstützt wurden, jetzt vom dc(4)-Treiber unterstützt.

FALLS deine Netzwerkkarte dazugehört, musst du auf jeden Fall deine /etc/hostname.deX (Hinweis: Hardlink) und deine pf.conf anpassen.

Nochmals: Dies betrifft nur die Alpha-Plattform.

Von 4.0 auf 4.1 upgraden

2006-09-26 - Wechsel auf gcc3 (alpha)

OpenBSD/alpha wechselte auf gcc3. Um upzugraden: # rm -rf /usr/include/g++ # cp /usr/src/share/mk/bsd.own.mk /usr/share/mk/ Als nächstes muss gcc3 übersetzt werden (im gcc3-Verzeichnis), dann der neue ld.so: cd /usr/src/libexec/ld.so make clean make obj make depend make make install Übersetze nun den Kernel und das System wie gewohnt.

2006-10-06 - »flags S/SA keep state« ist in pf.conf(5) impliziert

flags S/SA keep state ist nun Standard für pass-Regeln in pf.conf(5). Des Weiteren wurden die beiden Optionen no state und flags any so umgestellt, dass sie diesen Standard überschreiben. Aktuelle Regelsätze können weiterhin geladen werden, doch wird sich ihr Verhalten geringfügig ändern, da diese Standard restriktiver sind. Regelsätze, die ohne Zustand filtern (no state) oder Zustände (states) für Zwischenpakete erstellen müssen (flags any, sollten aktualisiert werden, um ausdrücklich das gewünschte Verhalten zu erzielen.

Vor allem beim enc0-Interface ist besondere Vorsicht geboten, da Floatingstates ein potenzielles Problem für die Filterung von IPsec-Traffic darstellen: Zustände, müssen an ein Interface gebunden werden, um unverschlüsselten Datenverkehr zu verhindern, sollte isakmpd(8) beendet werden. Daher sollten alle Regeln für das enc0-Interface explizit mit keep state (if-bound) versehen werden.

2006-10-11 - Disklabel weder in FreeBSD- noch NetBSD-Partitionen

FreeBSD- und NetBSD-DOS-MBR-Partitionen werden nicht mehr verwendet, um Disklabels abzulegen - daher werden sie auch nicht mehr nach Disklabels durchsucht. Festplatten, auf denen sich nur FreeBSD- oder NetBSD-DOS-MBR-Partitionen befinden, werden keine »a«-Partition mehr im vorgetäuschten Disklabel auflisten. Das Disklabel solcher Platten wird im Sektor 1 gespeichert und aus diesem geladen. Beim Laden dieses Sektors könnte aber ein altes Disklabel gefunden werden. Verwende fdisk(8), um den Partitionstyp auf OpenBSD (»A6«) umzustellen. Auf diese Weise kannst du das bestehende Disklabel verwenden.

2006-10-12 - Bootet nicht von NetBSD-Partitionen

amd64, i386, macppc und mvmeppc versuchen nicht länger, von der ersten NetBSD-Partition zu booten, wenn keine OpenBSD-Partition gefunden wurde.

2006-10-29 - Neuer Benutzer für ripd(8)

Ein neuer RIP-Daemon wurde eingebunden. Für die Verwendung des Daemons werden ein neuer Benutzer und eine neue Gruppe benötigt. Für den folgenden Benutzer und die folgende Gruppe als root mit useradd(8) hinzu:
# useradd -u88 -g=uid -c"RIP Daemon" -d/var/empty -s/sbin/nologin _ripd
Mit diesem Schritt werden sowohl der neue Benutzer als auch die zu ihm gehörende Gruppe hinzugefügt. Eventuell kannst du in deiner Arbeitsumgebung Copy&Paste für die Zeile verwenden.

2006-12-27 - Flagday für ARM (zaurus/armish)

Der syscall-Mechanismus für arm wurde geändert, wodurch Binarys und Shared Librarys, die vor dem 7. November erzeugt wurden, nicht länger funktionieren. Es ist notwendig, das System über einen Snapshot zu aktualisieren, um diese ABI-Änderung zu überwinden.

2007-01-31 - Neuer Benutzer für hoststated(8)

Ein HostState-Daemon wurde eingeführt. Um diesen verwenden zu könnnen, müssen ein neuer Benutzer und eine neue Gruppe erstellt werden. Führe als root useradd(8) aus, um den folgenden Benutzer und die Gruppe hinzuzufügen:
# useradd -u89 -g=uid -c"HostState Daemon" -d/var/empty -s/sbin/nologin _hoststated
Mit diesem Schritt werden sowohl der neue Benutzer als auch die zu ihm gehörende Gruppe hinzugefügt. Eventuell kannst du in deiner Arbeitsumgebung Copy&Paste für die Zeile verwenden.

2007-02-02 - Accounting wird nun während des Bootvorgangs anders (de)aktiviert

Um Accouting während des Bootvorgangs zu aktivieren, setze die neue rc.conf-Variable »accouting=YES«. Das Vorhandensein der Datei /var/account/acct führt nicht länger zum automatischen Start.

2007-02-26 - spamd: standardmäßig Greylisting; Konfigurationsdatei in /etc/mail

Greylisting ist nun der standardmäßige Laufzeitmodus für spamd(8); die Option -g ist überflüssig. Um Greylisting zu deaktiveren und nur noch im Blacklistmodus zu laufen, muss die Option -b übergeben werden. Mit der neuen Option -l wird angegeben, auf welcher Adresse spamd lauschen soll.

spamd-setup(8) kann ebenfalls nur im Blacklistmodus laufen, indem die neue Option -b übergeben wird.

Die spamd.conf(5)-Datei wurde von /etc in /etc/mail verschoben.

Lies bitte die Manualseiten für spamd(8) und spamd-setup(8) um alle Details zu erfahren.

Von 3.9 auf 4.0 upgraden

2006-03-27 - Neue iwi(4)-Firmware

iwi(4) setzt nun die Firmwareversion 3.0 voraus. Aufgrund von Lizenzproblemen kann die Firmware momentan nicht mit OpenBSD ausgeliefert werden. Die Firmware kann als Package http://damien.bergamini.free.fr/iwifw/OpenBSD/iwi-firmware-3.0.tgz mit den pkg-Werkzeugen installiert werden.

2006-05-18 - spppcontrol(8) wurde entfernt

Die Konfiguration vom In-Kernel-PPP wird nun vollständig von ifconfig(8) unterstützt. Das überholte Werkzeug spppcontrol(8) wurde aus dem Tree entfernt. Wirf einen Blick auf die beiden Manualseiten sppp(4) und pppoe(4) wenn du Konfigurationsbeispiele sehen möchtest.

Bisher sah die /etc/hostname.pppoe0-Datei wie folgt aus: pppoedev ne0 !/sbin/ifconfig ne0 up !/usr/sbin/spppcontrol \$if myauthproto=pap myauthname=testcaller \ myauthkey=donttell !/sbin/ifconfig \$if inet 0.0.0.0 0.0.0.1 netmask 0xffffffff !/sbin/route add default 0.0.0.1 up Diese Datei sollte mit dem folgenden Beispiel ersetzt werden: inet 0.0.0.0 255.255.255.255 0.0.0.1 pppoedev ne0 \ authproto pap authname testcaller authkey donttell up !/sbin/route add default 0.0.0.1 Das physikalische Interface muss ebenfalls auf UP gesetzt werden: # echo "up" > /etc/hostname.ne0

2006-05-26 - ipsecadm(8) wurde entfernt

IPsec-Konfiguration wird nun vollständig von ipsecctl(8) unterstützt. Das nun überflüssige ipsecadm(8)-Werkzeug wurde daher aus dem Tree entfernt. Wirf einen Blick auf die ipsec.conf(5)-Manualseite für Konfigurationsbeispiele.

2006-06-21 - dvmrpd(8) wurde hinzugefügt

Es wurde mit einem mrouted(8)-Ersatz begonnen und importiert. Damit dieser (Hinweis: bisher nicht sonderlich funktionsreiche) neue Daemon genutzt werden kann, muss der Benutzer _dvmrpd hinzugefügt werden:

# useradd -u87 -g=uid -c"DVMRP Daemon" -d/var/empty -s/sbin/nologin _dvmrpd

2006-06-25 - wicontrol(8) wurde entfernt

Drahtloskonfiguration für wi(4) wird nun vollständig von ifconfig(8) unterstützt. Das nun überflüssige wicontrol(8)-Werkzeug wurde aus dem Tree entfernt.

2006-07-27 - neue Kompileroption

Auf allen Plattformen wird der Kernel nun mit der vor kurzem hinzugefügten Kompileroption -Wstack-larger-than erzeugt. Bevor ein Kernel erzeugt werden kann, muss der Kompiler daher neu erzeugt und installiert werden.

Folge den Anweisungen unter FAQ 5 - Wie führe ich ein Bootstrap für eine neue Version des Kompilers (gcc) aus? für weiterführende Informationen.

Von 3.8 auf 3.9 upgraden

2005-09-27 - Die Erzeugungsphase benötigt eine neue Funktionalität von xargs

Übersetze und installiere xargs(1). # cd /usr/src/usr.bin/xargs && make obj && make && make install Führe dann make build aus.

2005-10-06 - Änderungen an MAKEDEV(8)

Änderungen wurden an MAKEDEV gemacht, um dessen Geschwindigkeit deutlich zu verbessern. Diese Änderungen bauen auf den Änderungen auf, die zuvor an ksh gemacht wurden. Installationsmedien, die vor diesem Tag erstellt wurden, können daher nicht mehr verwendet werden.

2005-11-16 - Neue Version von ftp-proxy(8)

Der ftp-proxy wurde durch den Proxy ersetzt, der zuvor pftpx genannt wurde. Der neue ftp-proxy läuft nun selbstständig und muss nicht mehr von inetd.conf aus aufgerufen werden, wie das zuvor der Fall war.

Dies ist die Upgradeanleitung:

Beende den alten ftp-proxy, indem du eine neue /etc/inetd.conf installierst oder einfach per Hand den Eintrag aus der /etc/inetd.conf entfernst oder kommentierst. cp /usr/src/etc/inetd.conf /etc/inetd.conf Sende dann ein HUP-Signal an inetd mittels kill:

kill -HUP `cat /var/run/inetd.pid` Starte den neuen ftp-proxy, indem du das neue /etc/rc-Skript und die neue /etc/rc.conf installierst und danach ftpproxy_flags="" in /etc/rc.conf.local einträgst. cp /usr/src/etc/{rc,rc.conf} /etc echo 'ftpproxy_flags=""' >> /etc/rc.conf.local Alternativ dazu kann er gestartet werden, indem einfach /usr/sbin/ftp-proxy in /etc/rc.local aufgerufen wird.

Der neue Proxy verwendet Anker, um Datenverbindungen zu erlauben. Das bedeutet, dass /etc/pf.conf angepasst werden muss. In der NAT-Sektion benötigt man:

nat-anchor "ftp-proxy/*" rdr-anchor "ftp-proxy/*" Diese sind notwendig selbst wenn du sonst kein NAT verwendest. Die folgende Regel, die eventuell schon für den alten ftp-proxy eingetragen wurde, muss bleiben: rdr pass on $int_if proto tcp from $lan to any port 21 -> \ 127.0.0.1 port 8021 In dieser Regelsektion wird Folgendes benötigt: anchor "ftp-proxy/*" Regeln, die dem Proxy erlauben, FTP-Kontrollverbindungen (Zielport 21/tcp) aufzubauen, müssen bleiben. Regeln, die FTP-Datenverbindungen erlauben, werden nicht länger benötigt. Derartige Regeln können Begriffe wie »user proxy« oder »to port > 49151« enthalten. Die übergebenen Kommandoparameter müssen auf ähnliche Weise sorgfältig überprüft werden, da sich einige geändert haben könnten. Siehe in der Manualseite von ftp-proxy nach.

Ein Fall muss besonders hervorgehoben werden: wenn du alte Clients hast, die auf Datenverbindungen im aktiven Modus aufbauen (20/tcp als Quellport), muss der Parameter -r übergeben werden (den alten Proxy musste man in diesem Fall mit »-u root« aufrufen).

Führe ftp-proxy mit »-d -D7« aus, wenn du Probleme hast und untersuchen möchtest, was gerade passiert.

2005-12-16 - libresolv wurde entfernt

Du musst libresolv von deiner Maschine entfernen, da sie nicht länger installiert wird. # rm /usr/lib/libresolv*

2006-01-04 - mac68k-Wechsel auf wscons(4)

Vor dem Reboot mit dem neuen Kernel müssen Systemdateien für wscons(4) aktualisiert werden. # cp /usr/src/etc/etc.mac68k/MAKEDEV /dev # cd /dev && sh ./MAKEDEV wscons

Ändere in /etc/ttys das getty ttye0 in ttyC0 und reboote nun mit dem neuen Kernel.

2006-01-13 - Typenänderungen

Bevor ein »make build« aufgerufen werden kann, muss der Kompiler neu übersetzt und installiert werden. Sollte dies nicht geschehen, kann libstdc++ nicht erzeugt werden.

Folge den Instruktionen, die in FAQ 5 - Wie führe ich ein Bootstrap für eine neue Version des Kompilers aus? aufgeführt werden, um weitere Details zu erfahren.

2006-01-31 - XKB-Konfigurationsupdates

Mit der Einbindung von X.Org 6.9 hat sich die XKB-Konfiguration geändert, sodass Änderungen in /etc/X11/xorg.conf nötigt sind. Die wichtigsten Änderungen sind:

2006-02-21 - Aktualisierungen an ipsec.conf(5)

Wenn ike rules keine Parameter für den Hauptmodus (main mode) beinhalten, dann wird ipsecctl(8) nun AES statt 3DES als Verschlüsselung für den Hauptmodus wählen. Um mit Peers arbeiten zu können, die -stable verwenden, müssen diese Werte in ihre ipsec.conf(5)-Dateien eingefügt werden, damit sie sich dem neuen Standard anpassen: main auth hmac-sha1 enc aes

Von 3.7 auf 3.8 upgraden

2005-03-29 - Flagday für die Verarbeitung von Exceptions (i386)

OpenBSD/i386 wurde auf die DWARF-basierte Verarbeitung von Exceptions umgestellt. Um upzugraden musst du zunächst gcc3 übersetzen und installieren und dann eine neue Version der libstdc++ installieren: # cd /usr/src/gnu/lib/libstdc++ # make -f Makefile.bsd-wrapper cleandir # make -f Makefile.bsd-wrapper obj # make -f Makefile.bsd-wrapper # make -f Makefile.bsd-wrapper install

2005-03-31 - Flagday für mmap(2) (vax)

Die Begrenzung des virtuellen Speichers hat sich für OpenBSD/vax geändert. Die Tatsache, dass OpenBSD/vax statisch gelinkt wird, setzt eine spezielle Vorgehensweise voraus. Die folgenden Schritte müssen befolgt werden, um ein brauchbares System zu erzeugen.

2005-04-13 - Neuer Benutzer und neue Gruppe: _hostapd

Der neue, privilegiengetrennte HostAP-Daemon benötigt einen neuen Benutzer und eine neue Gruppe mit dem Namen _hostapd. Füge den Benutzer und die Gruppe hinzu, indem du useradd -u86 -g=uid -c"HostAP Daemon" -d/var/empty -s/sbin/nologin _hostapd als root ausführst.

2005-05-27 - Aus pf log-all wird log (all)

Das pf.conf(5)-Schlüsselwort log-all wurde entfernt. Die neue Syntax für diese Funktionalität ist nun log (all).

2005-06-01 - mmap wird nun vom rlimit datasize berücksichtigt

Anonyme Speicherallokierung mittels mmap(2) wird nun bei der Auswertung der Ressourcenbegrenzung für die Datengröße von Prozessen berücksichtigt. Daraus folgt, dass Prozesse nun scheinbar mehr Speicher als sonst in Anspruch nehmen; die alten Ressourcenbegrenzungen könnten somit zu klein sein. Um das Problem mit den Ressourcenbegrenzungen zu lösen, aktualisiere die /etc/login.conf: # cd /usr/src/etc # cp login.conf /etc Melde dich danach ab und und wieder an.

2005-06-09 - Konfigurationsänderung vom bgpd

Die bgpd.conf(5)-Schlüsselwörter network connected [set ...] und network static [set ...] sind veraltet. Sie sollten jeweils mit network inet connected [set ...] und network inet static [set ...] ausgetauscht werden.

2005-08-02 - Neue Funktionalitäten in crunchgen

Eine Aktualisierung von crunchgen(1) fand statt, um zusätzliche Bibliotheksverzeichnisse zu verarbeiten. Starte unbedingt neu und installiere wieder crunchgen, bevor du ein Release oder eines der Installationsmedien erstellst.

2005-08-06 - LC_CTYPE-Locales erstellen

Übersetze und installiere mklocale(1). # cd /usr/src/usr.bin/mklocale && make obj && make depend && make && make install Führe danach make build aus.

Von 3.6 auf 3.7 upgraden

2004-10-29 - Wechsel auf gcc3 (macppc)

OpenBSD/macppc wurde auf gcc3 umgestellt. Um upzugraden, Folgendes ausführen: # rm -rf /usr/include/g++ Als nächstes muss gcc3 erzeugt werden (unter Verwendung des gcc3-Verzeichnisses) und danach wie gewöhnlich der Kernel und das System.

2004-11-11 - Verhaltensänderung vom bgpd

Das neue rde route-age [evaluate|ignore] änderte das Verhalten vom bgpd. Bisher war evaluate der implizierte Standard; jetzt ist es ignore. Die Auswertung des Routenalters wird nicht im RFC 1771 bestimmt. Das resultiert nun in nicht deterministischen Entscheidungen im Vorzug für stabiliere Verbindungen.

2004-11-24 - Neuer Benutzer und neue Gruppe: _ftp

Der FTP-Daemon wird überarbeitet, um Privilegientrennung zu verwenden. Aus diesem Grund ist ein neuer Benutzer und eine neue Gruppe mit dem Namen _ftp notwendig. Füge den Benutzer und die Gruppe hinzu, indem du useradd -u84 -g=uid -c"FTP Daemon" -d/var/empty -s/sbin/nologin _ftp als root aufrufst.

2004-12-30 - Wechsel auf gcc3 (i386)

OpenBSD/i386 wurde auf gcc3 umgestellt. Um upzugraden, führe Folgendes aus: # rm -rf /usr/include/g++ Als nächstes muss gcc3 erzeugt werden (unter Verwendung des gcc3-Verzeichnisses) und danach wie gewöhnlich der Kernel und das System.

2005-01-18 - Neuer Benutzer und neue Gruppe: _ospfd

Der bald erscheinende ospf-Daemon benötigt seinen eigenen Benutzer und seine eigene Gruppe namens _ospfd. Füge sie hinzu, indem du useradd -u85 -g=uid -c"OSPF Daemon" -d/var/empty -s/sbin/nologin _ospfd als root ausführst.

2005-01-24 - pfsync nimmt syncdev statt syncif

Wenn das pfsync-Device konfiguriert wird, so muss syncdev statt dem veralteten Schlüsselwort syncif genutzt werden.

2005-02-02 - POSIX-konforme hexadezimale und oktale Konstanten in (k)sh

Sowohl sh(1) als auch ksh(1) interpretieren nun C-ähnliche hexadezimale (0x...) und oktale (0...) Konstanten in arithmetischen Ausdrücken. Daraus folgt, dass das MAKEDEV-Skript aktualisiert werden muss: # cp /usr/src/etc/etc.`machine`/MAKEDEV /dev

Von 3.5 auf 3.6 upgraden

3.5.1: Unternummern des pty-Devices geändert (2004-04-11)

Die Unternummern des Devices pty wurde geändert, um die maximale Anzahl der Pseudoterminals von 256 auf 992 zu erhöhen, sodass du eine aktualisierte /dev/MAKEDEV ausführen musst, bevor der neue Kernel gebootet werden kann:

3.5.2: Neuer Benutzer und neue Gruppe namens _dhcp (2004-04-12)

Die etlichen dhcp-bezogenen Daemons werden überarbeitet, um ihre Privilegien fallenzulassen oder Privilegientrennung zu verwenden. Aus diesem Grund werden ein neuer Benutzer und eine neue Gruppe namens _dhcpd benötigt. Füge die Gruppe hinzu, indem du # groupadd -g 77 _dhcp als root ausführst, und erstelle den Benutzereintrag unter Verwendung von vipw(8): _dhcp:*:77:77::0:0:DHCP programs:/var/empty:/sbin/nologin

3.5.3: Neuer Benutzer und neue Gruppe namens _mopd (2004-04-14)

Der mopd(8)-Daemon lässt nun seine Privilegien nach der Initialisierung fallen und benötigt einen neuen Benutzer und eine neue Gruppe namens _mopd. Füge die Gruppe hinzu, indem du # groupadd -g 78 _mopd als root ausführst, und erstelle den Benutzereintrag unter Verwendung von vipw(8): _mopd:*:78:78::0:0:MOP Daemon:/var/empty:/sbin/nologin

3.5.4: Neuer Benutzer und neue Gruppe namens _tftpd (2004-04-17)

Der tftpd(8)-Daemon lässt nun seine Privilegien nach der Initialisierung fallen und benötigt einen neuen Benutzer und eine neue Gruppe namens _tftpd statt wie bisher nobody. Füge die Gruppe hinzu, indem du # groupadd -g 79 _tftpd als root ausführst, und erstelle den Benutzereintrag unter Verwendung von vipw(8): _tftpd:*:79:79::0:0:TFTP Daemon:/var/empty:/sbin/nologin

3.5.5: Neuer Benutzer und neue Gruppe namens _rbootd (2004-04-30)

Der rbootd(8)-Daemon lässt nun seine Privilegien nach der Initialisierung fallen und verwendet danach die Rechte vom Benutzer _rbootd und der Gruppe _rbootd. Füge die Gruppe hinzu, indem du # groupadd -g 80 _rbootd als root ausführst, und erstelle den Benutzereintrag unter Verwendung von vipw(8): _rbootd:*:80:80::0:0:rbootd Daemon:/var/empty:/sbin/nologin

3.5.6: cksum verschoben (2004-05-02)

Das Werkzeug cksum(1) wurde von /usr/bin nach /bin verschoben. Nachdem ein make build erfolgreich ausgeführt wurde, führe Folgendes als root aus: # rm -f /usr/bin/cksum /usr/bin/sum

3.5.7: Neuer Benutzer und neue Gruppe namens _afs (2004-05-06)

Der afsd(8)-Daemon ist bald so weit, dass seine Privilegien getrennt werden können. Ein neuer Benutzer und eine neue Gruppe namens _afs werden hierfür benötigt. Füge die Gruppe hinzu, indem du # groupadd -g 81 _afs als root ausführst, und erstelle den Benutzereintrag unter Verwendung von vipw(8): _afs:*:81:81::0:0:afs Daemon:/var/empty:/sbin/nologin

Du musst den Besitzer des Caches ändern, indem du Folgendes ausführst: # chown -R _afs:_afs /var/spool/afs

3.5.8: Neuer Benutzer und neue Gruppe namens _ppp (2004-05-06)

Das pppoe(8)-Program lässt nun seine Privilegien fallen und läuft mit den Rechten des Benutzers _ppp und der Gruppe _ppp weiter. Füge die Gruppe hinzu, indem du # groupadd -g 82 _ppp als root ausführst, und erstelle den Benutzereintrag unter Verwendung von vipw(8): _ppp:*:82:82::0:0:PPP utilities:/var/empty:/sbin/nologin

3.5.9: Neuer Benutzer und neue Gruppe namens _ntp (2004-05-30)

Das bald erscheinende Programm ntpd(8) benötigt einen neuen Benutzer und eine neue Gruppe namens _ntp. Füge die Gruppe hinzu, indem du # groupadd -g 83 _ntp als root ausführst, und erstelle den Benutzereintrag unter Verwendung von vipw(8): _ntp:*:83:83::0:0:NTP Daemon:/var/empty:/sbin/nologin

3.5.10: Flagday für Versionserhöhung der Bibliotheken (2004-07-13)

Bibliotheks- und Systeminterfaceänderungen machten es notwendig, eine Erhöhung aller Obernummern jeder einzelnen Bibliothek durchzuführen. Die folgenden Schritte müssen befolgt werden, um ein brauchbares System zu erhalten.

3.5.11: Änderungen in PF-Anker (2004-08-07)

Anwender von authpf sollten ihre Ankerregel im Hauptregelsatz von anchor authpf in anchor "authpf/*" abändern.

Von 3.4 auf 3.5 upgraden

3.4.1: Unternummern des svnd-Devices geändert (2003-10-10)

Die Unternummern des Devices svnd wurden geändert, sodass du eine aktualisierte /dev/MAKEDEV nach der Installation des neuen Kernels ausführen musst:

Dies betrifft alle, die svnd-Devices verwenden; dazu gehören auch alle, die make release ausführen.

3.4.2: Neuer Benutzer und neue Gruppe namens _pflogd (2003-10-23)

Der pflogd(8)-Daemon läuft nun im privilegiengetrennten Modus und benötigt einen neuen Benutzer und eine neue Gruppe namens _pflogd. Füge die Gruppe hinzu, indem du # groupadd -g 74 _pflogd als root ausführst, und erstelle den Benutzereintrag unter Verwendung von vipw(8): _pflogd:*:74:74::0:0:pflogd privsep:/var/empty:/sbin/nologin

3.4.3: Interfacecloning (2003-12-07)

Viele Pseudonetzwerktreiber (wie zum Beispiel gif(4), lo(4) und tun(4)) wurden verschoben, um Cloning zu unterstützten, d. h. die Erstellung und Entfernung von Devices je nach Bedarf. Wenn du auf diese Interfaces angewiesen bisst, so musst du aktualisierte Versionen von ifconfig(8) und netstart(8) übersetzen und installieren, bevor du mit deinem neuen Kernel neustartest.

Übersetze und installiere zunächst deinen neuen Kernel wie gewühnt und führe dann Folgendes aus: # cd /usr/src && make includes # cd sbin/ifconfig # make obj depend # make # make install # cp /usr/src/etc/netstart /etc Starte nun deine Maschine neu und setze die Übersetzung des neuen Userlands fort.

3.4.4: Neuer Benutzer und neue Gruppe namens _bgpd (2003-12-17)

Der neue bgpd(8)-Daemon läuft nun im privilegiengetrennten Modus und benötigt einen neuen Benutzer und eine neue Gruppe namens _bgpd. Füge die Gruppe hinzu, indem du # groupadd -g 75 _bgpd als root ausführst, und erstelle den Benutzereintrag unter Verwendung von vipw(8): _bgpd:*:75:75::0:0:BGP Daemon:/var/empty:/sbin/nologin

3.4.5: Neue Version von join(1) (2003-12-28)

Das Kommando join(1) wurde aktualisiert, sodass es dem POSIX-Standard beim Schreiben von nicht zutreffenden Zeilen folgt. Hieraus folgt, dass security(8) aktualisiert werden muss: # cp /usr/src/etc/security /etc

3.4.6: Übersetzungsänderung von sudo (2004-01-15)

Die Art und Weise, wie das Kommando sudo(8) übersetzt wird, wurde geändert. Ein Nebeneffekt hiervon ist, dass du Folgendes ausführen musst: # rm -f /usr/obj/usr.bin/sudo/* bevor du erfolgreich ein »make build« aufrufen kannst. Wenn du diesen Schritt nicht ausführst, wird die Erzeugungsphase während dem Versuch, Objektverzeichnisse zu erstellen, abbrechen.

3.4.7: Neuer Benutzer und neue Gruppe namens _tcpdump (2004-01-19)

Das tcpdump(8)-Kommando läuft nun im privilegiengetrennten Modus und benötigt einen neuen Benutzer und eine neue Gruppe namens _tcpdump. Füge die Gruppe hinzu, indem du # groupadd -g 76 _tcpdump als root ausführst, und erstelle den Benutzereintrag unter Verwendung von vipw(8): _tcpdump:*:76:76::0:0:tcpdump:/var/empty:/sbin/nologin

3.4.8: Änderungen an machdep.c (i386) (2004-02-01)

Eine Änderung an machdep.c setzt voraus, dass binutils neu erzeugt wird, bevorder Kernel kompiliert werden kann. Dies betrifft nur i386. # cd /usr/src/gnu/usr.bin/binutils # make -f Makefile.bsd-wrapper cleandir # make -f Makefile.bsd-wrapper obj # make -f Makefile.bsd-wrapper depend # make -f Makefile.bsd-wrapper # make -f Makefile.bsd-wrapper install

Du kannst nun den Kernel und das restliche System wie in der Sektion 1.5 beschrieben neu erzeugen.

3.4.9: Aktualisierte bsd.own.mk (2004-02-20)

Du musst /usr/share/mk/bsd.own.mk aktualisieren, um die USE_GCC3-Definition zu haben: # cd /usr/src/share/mk # make install

3.4.10: Wechsel auf gcc3 (sparc64) (2004-02-20)

OpenBSD/sparc64 wurde auf gcc3 umgestellt. Um upzugraden, führe Folgendes aus: # rm -rf /usr/include/g++ Als nächstes muss gcc3 erzeugt werden (unter Verwendung des gcc3-Verzeichnisses) und danach wie gewöhnlich der Kernel und das System.

Von 3.3 auf 3.4 upgraden

3.3.1: W^X-Unterstützung für i386 (2003-04-16)

Um die »Schreibbar oder ausführbar«- (Writable xor eXecute) Unterstützung für i386 zu aktivieren, wurde OpenBSD/i386 vom a.out-Binaryformat auf das ELF-Binaryformat umgestellt. Die Flexibilität von ELF ermöglicht bessere Kontrolle über das Layout der Binary, wodurch die Unterstützung für W^X ermöglicht wurde. Kompatibilität für a.out existiert nur in begrenzter Form. Staische a.out-Binarys werden wie bisher funktionieren; dynamische a.out-Binary aber WERDEN NICHT UNTERSTÜTZT.

QUELLTEXT-UPGRADES VON a.out -> ELF WERDEN NICHT UNTERSTÜTZT. INSTALLIERE EINEN SNAPSHOT, sodass du mit diesem vom Quelltext aus das System neu erzeugen kannst. Dies betrifft nur i386; andere Architekturen sind von dieser Änderung NICHT betroffen.

3.3.2: Änderung am mquery-syscall (2003-04-28)

Die Parameter für den mquery-Systemaufruf wurden geändert, so dass sie mit denen von mmap() übereinstimmen. Diese Änderung setzt voraus, dass das System in der richtigen Reihenfolge upgegradet wird: 1. Erzeuge und boote den neuen Kernel. 2. (cd /usr/src && sudo make includes) 3. (cd /usr/src/libexec/ld.so && make && sudo make install) 4. »make build« Nur i386 verwendet mquery, sodass andere Architekturen dieser bestimmten Erzeugungsreihenfolge nicht folgen müssen.

3.3.3: i386-Flagday: Änderung an exe addr/MAXDSIZ (2003-05-05)

Um MAXDSIZ zu ermöglichen, wieder auf 1 G geändert zu werden, musste die Basisadresse aller Binarys von 0 auf 0x1c000000 geändert werden. Die Kombination dieser Änderungen erfordert eine Aktualisierung vom Snapshot. Das Aktualisieren anhand des Quelltextes wird nicht unterstützt. Dies betrifft nur i386.

3.3.4: Entfernung der KerberosIV-Authentikation (2003-05-13)

KerberosIV-basierte Authentifikation wurde entfernt. Dies bedeutet, dass du alle Referenzen auf krb4 in /etc/login.conf entfernen musst.

3.3.5: Änderung an config (2003-05-23)

Das Verschieben von swapgeneric.c benötigte eine Änderung an config(8). Bevor du einen neuen Kernel erzeugen kannst, musst du zunächst eine aktualisierte config(8) übersetzen und installieren: # cd /usr/src/usr.sbin/config # make clean # make obj # make # make install Wende nun config für deine Kernelkonfiguration an und führe make depend im Kompiliationsverzeichnis deines Kernels aus, wie es weiter oben beschrieben wurde.

3.3.6: Verwende __attribute__((bounded)) bei bestimmten Funktionen (2003-06-26)

Von nun an wird __attribute__((bounded)) verwendet, um falsche Funktionsargumente abzufangen, die Pufferlängen als einen ihrer Parameter haben.

Du musst gcc wie in der Sektion 1.8 der Mini-FAQ beschrieben neu erzeugen, bevor du mit make build fortfahren kannst.

3.3.7: Neuer Benutzer und neue Gruppe namens _syslogd (2003-07-31)

Der syslogd(8)-Daemon läuft nun im privilegiengetrennten Modus und benötigt einen neuen Benutzer und eine neue Gruppe namens _syslogd. Füge die Gruppe hinzu, indem du # groupadd -g 73 _syslogd als root ausführst, und erstelle den Benutzereintrag unter Verwendung von vipw(8): _syslogd:*:73:73::0:0:Syslog Daemon:/var/empty:/sbin/nologin

3.3.8: Verwende das Formatattribut __kprintf__ in Kernelheader (2003-08-23)

Ein neues Formatattribut namens __kprintf__ wird nun in Kernelheaderdateien verwendet, damit gcc die Formaterweiterungen von printf(9) im Kernel erkennt.

Du musst gcc gemäß der Sektion 1.8 der Mini-FAQ neu erzeugen, bevor du mit make build fortfahren kannst. Du musst gcc nur ein einziges Mal aus den current-Sourcen übersetzen, um ebenfalls das __bounded__-Attribut zu unterstützen; dies wird in der Sektion 3.3.6 beschrieben.

Von 3.2 auf 3.3 upgraden

3.2.1: Neues Perl (2002-11-05)

Perl wurde auf Version 5.8.0 aktualisiert.
In Perl 5.8.0 wurde die API der XS-Module aufgrund der Änderung von stdio in PerlIO (siehe die Manualseite von perldelta für weitere Informationen) geändert. Dies bedeutet, dass alle XS-Module (Perls .so-Dateien), die du installiert hast, neu erzeugt werden müssen. Wenn du Fehler wie zum Beispiel Undefined symbol "perl_get_sv" erhalten hast, dann ist genau das der Grund dafür. Wenn die einzigen Module, die du installier hast, aus Packages stammen oder über das Portssystem installiert wurden, so kannst du dein System nach XS-Modulen durchsuchen, indem du Folgendes aufrufst: # grep '\.so' /var/db/pkg/p5-*/+CONTENTS | cut -d: -f1 | sort -u Du kannst dann die problematischen Module mittels pkg_delete -f entfernen und sie dann vom Ports-Tree aus neu übersetzen und installieren.

3.2.2: Neue Gruppen: _radius, _token und _shadow (2002-11-21)

Einige neue Gruppen wurden hinzugefügt:

Du musst diese Gruppen anlegen und die Rechte einige Dateien anpassen, bevor du »make build« ausführen kannst. Die folgenden Kommandos (ausgeführt als root) werden diese Aufgabe erledigen: # groupadd -g 63 _radius # chgrp _radius /etc/raddb /etc/raddb/servers # chmod g+x /etc/raddb # chmod g+r /etc/raddb/servers # groupadd -g 64 _token # chgrp _token /etc/activ.db /etc/crypto.db /etc/snk.db # chmod 0640 /etc/activ.db /etc/crypto.db /etc/snk.db # groupadd -g 65 _shadow # chgrp _shadow /etc/spwd.db # chmod 0640 /etc/spwd.db Kümmere dich nicht um Fehlermeldungen, die sagen, dass eine Datei nicht gefunden werden konnte. Diese Fehlermeldungen sagen nur aus, dass du keine token- oder radius-Authentifizierung eingerichtet hast.

3.2.3: Wichtige Compileränderungen (2002-12-02)

Die Stackprotectionerweiterung propolice wurde in den gcc eingebunden. Dies setzt eine etwas andere Upgradevorgehensweise als sonst voraus:

3.2.4: Neuer Benutzer und neue Gruppe namens _spamd (2002-12-24)

Ein neuer Benutzer und eine neue Gruppe namens _spamd wurden für den spamd(8)-Daemon hinzugefügt. Füge die Gruppe hinzu, indem du # groupadd -g 62 _spamd als root ausführst, und erstelle den Benutzereintrag unter Verwendung von vipw(8): _spamd:*:62:62::0:0:Spam daemon:/var/empty:/sbin/nologin

3.2.5: Alias für ipv6-icmp (2002-12-30)

Ein neuer Alias (icmp6) für ipv6-icmp wurde zur /etc/protocols hinzugefügt. Wenn du das icmp6-Alias nutzen möchtest (wird in den Regressiontests für pfctl(8) verwendet), musst du die ipv6-icmp-Zeile in /etc/protocols ändern, indem du das Schlüsselwort icmp6 vor der Raute (#) hinzufügst. Die Zeile sollte dann wie folgt aussehen:

ipv6-icmp 58 IPv6-ICMP icmp6 # ICMP for IPv6

3.2.6: Neue Gruppe namens _lkm (2003-01-05)

Die _lkm-Gruppe verwaltet den Zugriff auf /dev/lkm. modstat(8) ist nun setgid _lkm.

Du musst diese Gruppe hinzufügen und die Rechte von /dev/lkm anpassen, bevor du ein »make build« durchführen kannst. Die folgenden Kommandos (ausgeführt als root) werden diese Aufgabe erledigen: # groupadd -g 61 _lkm # chgrp _lkm /dev/lkm

3.2.7: Neue libpthread (2003-01-14)

Sowohl libc_r als auch libnpthread wurden entfernt und mit libpthread ersetzt. Programme, die Threads verwenden, sollten weiterhin mit der Option -pthread kompiliert werden können; der Kompiler wird sich darum kümmern.

Bevor du libc_r und libnpthread entfernst, müssen Applikationen mit libpthread neu erzeugt werden. Die hierfür empfohlene Befehlsreihenfolge ist:

  1. Erzeuge gcc gemäß Sektion 1.8.

  2. Bereite das System gemäß Sektion 1.5 vor.

  3. Bereite alle Ports vor, die Threads verwenden.

  4. Entferne alle ungenutzten Bibliotheken: # rm /usr/lib/libc_r* /usr/lib/libnpthread*

3.2.8: Linkeränderungen für ELF-Architekturen (2003-01-17)

Binutils/ld wurde geändert, um ELF-Binarys mit einer neuen Sicherheitsfunktionalität auszurüsten. Statt der Datensektion der Binarys und Shared Librarys zu erlauben, als ausführbar vom Linker markiert zu werden, hat sich das Layout so geändert, dass nur die passenden Sektionen des Programmimages als ausführbar markiert werden können. Diese Änderung betrifft nur ELF-basierte Architekturen: alpha, sparc, sparc64 und macppc.

Es wird empfohlen, dass binutils vor dem Rest des Systems neu erzeugt wird.

# cd /usr/src/gnu/usr.bin/binutils # make -f Makefile.bsd-wrapper cleandir # make -f Makefile.bsd-wrapper obj # make -f Makefile.bsd-wrapper depend # make -f Makefile.bsd-wrapper # make -f Makefile.bsd-wrapper install

Erzeuge das System dann gemäß der Sektion 1.5 neu.

3.2.9: Entfernung von /var/at und Änderungen an Crontabs (2003-02-19)

Der Inhalt von /var/at wurde in /var/cron eingebunden, da at ebenfalls bereits in cron eingegliedert wurde. Des Weiteren wurden die Allow- und Denydateien von cron in cron.allow und cron.deny umbenannt, um POSIX zu entsprechen und auch die Konsistenz mit at.allow und at.deny zu bewahren.

Erzeuge zuerst dein System gemäß Sektion 1.5 neu, verschiebe die exististierenden Dateien und starte dann cron wie folgt neu:

# mv /var/at/* /var/cron # mv /var/cron/jobs /var/cron/atjobs # mv /var/cron/allow /var/cron/cron.allow # mv /var/cron/deny /var/cron/cron.deny # rm -rf /var/at # kill `cat /var/run/cron.pid` # /usr/sbin/cron

Ignoriere alle Warnungen über fehlende Allow- oder Denydateien. Nicht alle hier aufgelisteten Dateien befinden sich in der Standardinstallation.

Wenn du nicht bereits eine cron.deny-Datei hast (sie wurde vor OpenBSD 3.3 nicht installiert) musst du crontab als normaler Benutzer aufrufen (also nicht als Administrator). # install -c -o root -g crontab -m 660 /dev/null /var/cron/cron.deny

Von 3.2 upgraden

3.2.1: Neues Perl (2002-11-05)

Perl wurde auf Version 5.8.0 aktualisiert.
In Perl 5.8.0 wurde die API der XS-Module aufgrund der Änderung von stdio in PerlIO (siehe die Manualseite von perldelta für weitere Informationen) geändert. Dies bedeutet, dass alle XS-Module (Perls .so-Dateien), die du installiert hast, neu erzeugt werden müssen. Wenn du Fehler wie zum Beispiel Undefined symbol "perl_get_sv" erhalten hast, dann ist genau das der Grund dafür. Wenn die einzigen Module, die du installier hast, aus Packages stammen oder über das Portssystem installiert wurden, so kannst du dein System nach XS-Modulen durchsuchen, indem du Folgendes aufrufst: # grep '\.so' /var/db/pkg/p5-*/+CONTENTS | cut -d: -f1 | sort -u Du kannst dann die problematischen Module mittels pkg_delete -f entfernen und sie dann vom Ports-Tree aus neu übersetzen und installieren.

3.2.2: Neue Gruppen: _radius, _token und _shadow (2002-11-21)

Einige neue Gruppen wurden hinzugefügt:

Du musst diese Gruppen anlegen und die Rechte einige Dateien anpassen, bevor du »make build« ausführen kannst. Die folgenden Kommandos (ausgeführt als root) werden diese Aufgabe erledigen: # groupadd -g 63 _radius # chgrp _radius /etc/raddb /etc/raddb/servers # chmod g+x /etc/raddb # chmod g+r /etc/raddb/servers # groupadd -g 64 _token # chgrp _token /etc/activ.db /etc/crypto.db /etc/snk.db # chmod 0640 /etc/activ.db /etc/crypto.db /etc/snk.db # groupadd -g 65 _shadow # chgrp _shadow /etc/spwd.db # chmod 0640 /etc/spwd.db Kümmere dich nicht um Fehlermeldungen, die sagen, dass eine Datei nicht gefunden werden konnte. Diese Fehlermeldungen sagen nur aus, dass du keine token- oder radius-Authentifizierung eingerichtet hast.

3.2.3: Wichtige Compileränderungen (2002-12-02)

Die Stackprotectionerweiterung propolice wurde in den gcc eingebunden. Dies setzt eine etwas andere Upgradevorgehensweise als sonst voraus:

3.2.4: Neuer Benutzer und neue Gruppe namens _spamd (2002-12-24)

Ein neuer Benutzer und eine neue Gruppe namens _spamd wurden für den spamd(8)-Daemon hinzugefügt. Füge die Gruppe hinzu, indem du # groupadd -g 62 _spamd als root ausführst, und erstelle den Benutzereintrag unter Verwendung von vipw(8): _spamd:*:62:62::0:0:Spam daemon:/var/empty:/sbin/nologin

3.2.5: Alias für ipv6-icmp (2002-12-30)

Ein neuer Alias (icmp6) für ipv6-icmp wurde zur /etc/protocols hinzugefügt. Wenn du das icmp6-Alias nutzen möchtest (wird in den Regressiontests für pfctl(8) verwendet), musst du die ipv6-icmp-Zeile in /etc/protocols ändern, indem du das Schlüsselwort icmp6 vor der Raute (#) hinzufügst. Die Zeile sollte dann wie folgt aussehen:

ipv6-icmp 58 IPv6-ICMP icmp6 # ICMP for IPv6

3.2.6: Neue Gruppe namens _lkm (2003-01-05)

Die _lkm-Gruppe verwaltet den Zugriff auf /dev/lkm. modstat(8) ist nun setgid _lkm.

Du musst diese Gruppe hinzufügen und die Rechte von /dev/lkm anpassen, bevor du ein »make build« durchführen kannst. Die folgenden Kommandos (ausgeführt als root) werden diese Aufgabe erledigen: # groupadd -g 61 _lkm # chgrp _lkm /dev/lkm

3.2.7: Neue libpthread (2003-01-14)

Sowohl libc_r als auch libnpthread wurden entfernt und mit libpthread ersetzt. Programme, die Threads verwenden, sollten weiterhin mit der Option -pthread kompiliert werden können; der Kompiler wird sich darum kümmern.

Bevor du libc_r und libnpthread entfernst, müssen Applikationen mit libpthread neu erzeugt werden. Die hierfür empfohlene Befehlsreihenfolge ist:

  1. Erzeuge gcc gemäß Sektion 1.8.

  2. Bereite das System gemäß Sektion 1.5 vor.

  3. Bereite alle Ports vor, die Threads verwenden.

  4. Entferne alle ungenutzten Bibliotheken: # rm /usr/lib/libc_r* /usr/lib/libnpthread*

3.2.8: Linkeränderungen für ELF-Architekturen (2003-01-17)

Binutils/ld wurde geändert, um ELF-Binarys mit einer neuen Sicherheitsfunktionalität auszurüsten. Statt der Datensektion der Binarys und Shared Librarys zu erlauben, als ausführbar vom Linker markiert zu werden, hat sich das Layout so geändert, dass nur die passenden Sektionen des Programmimages als ausführbar markiert werden können. Diese Änderung betrifft nur ELF-basierte Architekturen: alpha, sparc, sparc64 und macppc.

Es wird empfohlen, dass binutils vor dem Rest des Systems neu erzeugt wird.

# cd /usr/src/gnu/usr.bin/binutils # make -f Makefile.bsd-wrapper cleandir # make -f Makefile.bsd-wrapper obj # make -f Makefile.bsd-wrapper depend # make -f Makefile.bsd-wrapper # make -f Makefile.bsd-wrapper install

Erzeuge das System dann gemäß der Sektion 1.5 neu.

3.2.9: Entfernung von /var/at und Änderungen an Crontabs (2003-02-19)

Der Inhalt von /var/at wurde in /var/cron eingebunden, da at ebenfalls bereits in cron eingegliedert wurde. Des Weiteren wurden die Allow- und Denydateien von cron in cron.allow und cron.deny umbenannt, um POSIX zu entsprechen und auch die Konsistenz mit at.allow und at.deny zu bewahren.

Erzeuge zuerst dein System gemäß Sektion 1.5 neu, verschiebe die exististierenden Dateien und starte dann cron wie folgt neu:

# mv /var/at/* /var/cron # mv /var/cron/jobs /var/cron/atjobs # mv /var/cron/allow /var/cron/cron.allow # mv /var/cron/deny /var/cron/cron.deny # rm -rf /var/at # kill `cat /var/run/cron.pid` # /usr/sbin/cron

Ignoriere alle Warnungen über fehlende Allow- oder Denydateien. Nicht alle hier aufgelisteten Dateien befinden sich in der Standardinstallation.

Wenn du nicht bereits eine cron.deny-Datei hast (sie wurde vor OpenBSD 3.3 nicht installiert) musst du crontab als normaler Benutzer aufrufen (also nicht als Administrator). # install -c -o root -g crontab -m 660 /dev/null /var/cron/cron.deny

Von 3.1 upgraden

3.1.1: Neue Benutzer/Gruppen

Einige neue Benutzer/Gruppen wurden hinzugefügt. Für die Unterstützung von authpf(8) wird eine neue Gruppe benötigt. Auch für die Unterstützung von sshd(8)s Funktionalität der Privilegientrennung wurde ein neuer Benutzer und eine neue Gruppe namens sshd dem System hinzugefügt. Weitere neue Benutzer für Systemdienste wurden hinzugefügt; sie haben einen vorangesetzten Unterstrich. Füge die folgenden Benutzer mittels vipw(8) hinzu:

sshd:*:27:27::0:0:sshd privsep:/var/empty:/sbin/nologin _portmap:*:28:28::0:0:portmap:/var/empty:/sbin/nologin _identd:*:29:29::0:0:identd:/var/empty:/sbin/nologin _rstatd:*:30:30::0:0:rpc.rstatd:/var/empty:/sbin/nologin _rusersd:*:32:32::0:0:rpc.rusersd:/var/empty:/sbin/nologin _fingerd:*:33:33::0:0:fingerd:/var/empty:/sbin/nologin _x11:*:35:35::0:0:X server:/var/empty:/sbin/nologin

Füge die folgenden Gruppen in /etc/group hinzu:

sshd:*:27: _portmap:*:28: _identd:*:29: _rstatd:*:30: _rusersd:*:32: _fingerd:*:33: _sshagnt:*:34: _x11:*:35: authpf:*:72:

3.1.2: Neue Gruppe für crontab(1) und at(1)

Das crontab(1)- und das at(1)-Kommando sind nicht länger setuid root; sie sind nun setgid crontab.

Bevor du »make build« ausführen kannst, musst du die Gruppe crontab-Gruppe hinzufügen. Ergänze deine /etc/group-Datei um folgende Zeile:

crontab:*:66:

Das »make build« wird einige - aber nicht alle - Rechte für dich aktualisieren. Nachdem »make build« abgeschlossen wurde, musst du folgende Befehle manuell ausführen (unter der Annahme, dass du /bin/csh verwendest):

# chgrp crontab /var/at/at.{allow,deny} /var/cron/{allow,deny} # chmod 0640 /var/at/at.{allow,deny} /var/cron/{allow,deny} # foreach f ( /var/cron/tabs/* ) set u=`basename $f` chown $u:crontab $f end

Beachte, dass du vermutlich nicht alle Allow/Denydateien hast; das ist kein Problem.

3.1.3: Neue Binutils

Eine neue Version der binutils (2.11.2) wurde in den Tree eingebunden; eine Aktualisierung von libiberty ist notwendig. Um diese Bibliothek zu erzeugen, befolge folgende Schritte:

# cd /usr/src/gnu/egcs/libiberty # make -f Makefile.bsd-wrapper cleandir # make -f Makefile.bsd-wrapper obj # make -f Makefile.bsd-wrapper depend # make -f Makefile.bsd-wrapper # make -f Makefile.bsd-wrapper install

3.1.4: Neue S/Key-Konfiguration

Die alte S/Key-Datenbankdatei /etc/skeykeys wurde mit dem Verzeichnis /etc/skey ausgetauscht. In diesem Verzeichnis stellt jede Datei einen Eintrag dar, die dem Benutzer gehört, der von ihr beschrieben wird. Du kannst /etc/skeykeys in das neue Format konvertieren, indem du Folgendes (als root) ausführst:

# skeyinit -C # mv /etc/skeykeys /etc/skeykeys.OLD

Beachte, dass alle Programme von Drittanbietern, die S/Key direkt ansprechen, neu erzeugt werden müssen.

3.1.5: Neue Rechte für lp*

Das Spoolverzeichnis, das von lpd genutzt wird, muss ein Gruppenschreibreicht für die Gruppe daemon haben, damit lpr auf die Spooldateien zugreifen kann. Außerdem müssen die Dateien im Spoolverzeichnis dem Benutzer daemon und der Gruppe daemon gehören. Dies kann wie folgt erreicht werden:

# find /var/spool/output /var/spool/lpd -type d \ -execdir chgrp daemon {} \; -execdir chmod g+rwx {} \; # find /var/spool/output /var/spool/lpd -type f \ -execdir chown daemon:daemon {} \;

3.1.6: atrun(8) wird nicht mehr benötigt

Das Kommando atrun(8) wird nicht mehr benötigt. Seine Funktionalität wurde in cron(8) eingebunden. Du solltest den /usr/libexec/atrun-Job aus roots crontab mit dem folgenden Befehl (aufgerufen als root) entfernen:

# crontab -e

Du möchtest eventuell auch die Verzeichnisse /usr/libexec/atrun, /usr/share/man/cat8/atrun.0 und /var/at/spool entfernen.

3.1.7: nat.conf in pf.conf eingebunden

Die Datei /etc/nat.conf wurde nun in /etc/pf.conf eingebunden. Du musst die NAT-Regeln in der pf.conf zwischen den Scrubregeln und den Filterregeln einfügen.

Außerdem hat pfctl(8) eine neue Option (-f), um die Regelsätze zu laden; die Optionen -R und -N haben jetzt andere Bedeutungen. Lies unbedingt die Manualseite und aktualisiere deine /etc/rc.

3.1.8: Neuer fbtab-Eintrag für xdm benötigt

login(1) setzt voraus, dass /dev/wsmouse dem neuen _x11-Benutzer gehört, der notwendig ist, damit xdm auf vielen Architekturen seine Privilegien abgeben kann. Die Änderung an /etc/fbtab ist plattformunabhängig. Die Datei wird mit folgenden Aufrufen erstellt (unter der Annahme, dass die Quellen sich in /usr/src befinden):

# cat /usr/src/etc/fbtab.head > /etc/fbtab # cat /usr/src/etc/etc.`uname -m`/fbtab >> /etc/fbtab # cat /usr/src/etc/fbtab.tail >> /etc/fbtab

Wenn du selbst angepasste Einträge in der /etc/fbtab hast, musst du sie manuell in die neue Datei einbinden.

3.1.9: Verwende __attribute__((sentinel)) mit bestimmten Funktionen

Um vor der Verwendung bestimmter exec(3)-Funktionen ohne terminierendem NULL-Pointer zu warnen, wurde __attribute__((sentinel)) eingefügt.

Du musst gcc gemäß der Sektion 1.8 der Mini-FAQ neu erzugen, bevor du mit make build fortfahren kannst.

Von 3.0 upgraden

3.0.1: Neues Schlüsselwort wird von mtree(8) unterstützt

Du musst eine neue Version des mtree(8)-Werkzeuges übersetzen und installieren, bevor ein »make build« erfolgreich durchgeführt werden kann.

# cd /usr/src/usr.sbin/mtree # make cleandir # make obj # make depend # make # make install

3.0.2: Entfernung von libdl auf ELF-Plattformen

ELF-basierte Plattformen (alpha, macppc und sparc64) verwenden libdl nicht mehr. Das Upgrade eines libdl-Systems auf ein Nicht-libdl-System kann am besten mit diesen Schritten durchgeführt werden:

3.0.3: Neues Regressionframework

Eine neue Infrastruktur für Regressiontests wurde eingeführt; außerdem wurde bsd.regress.mk hinzugefügt. Du musst diese Datei installiere, bevor du make obj aufrufst.

# cd /usr/src/share/mk # make install

3.0.4: Konfigurationsdateien von ssh nach /etc/ssh/ verschoben

Du musst zuerst /etc/ssh erstellen; siehe dafür Sektion 1.13.

Kompiliere dein System neu:

# cd /usr/src # make build

Verschiebe deine /etc/ssh*_*-Dateien in das neu erstellte /etc/ssh/-Verzeichnis.

# cd /etc # mv ssh*_* ssh/

Du musst deine rc-Skripte entsprechend anpassen, damit diese Änderungen auch dort wiedergespiegelt werden.

Aktualisiere deine HostKey-Zeilen in deiner sshd_config, damit sie auf den neuen Ort zeigen. Zum Beispiel:

HostKey /etc/ssh_host_key

sollte wie folgt geändert werden:

HostKey /etc/ssh/ssh_host_key

Starte danach deinen sshd-Daemon neu.

Von 2.9 upgraden

2.9.1: Neue Benutzer/Gruppen: proxy, smmsp und popa3d.

Mit der Einbindung vom Paketfilter pf(4) als Firewallpackage und seiner ftp-proxy(8)-Umgebung, wurden zuerst ein neuer Benutzer und eine neue Gruppe mit dem Namen proxy dem System hinzugefügt. Um diese zusätzlichen Programme unterstützen zu können, muss der folgende Benutzer mittels vipw(8): eingetragen werden:

proxy:*:71:71::0:0:Proxy Services:/nonexistent:/sbin/nologin

Füge ebenfalls die Gruppe proxy in die /etc/group ein:

proxy:*:71:

Zweitens wird als Teil des Sendmail-8.12-Upgrades sendmail nicht mehr setuid root ausgeführt. Sowohl ein neuer Benutzer als auch eine neue Gruppe namens smmsp wurden dem System hinzugefügt. Füge eine Zeile wie die folgende in deine /etc/group ein:

smmsp:*:25:

Führe dann vipw(8) aus und trage die folgende Zeile für den smmsp-Benutzer ein:

smmsp:*:25:25::0:0:Sendmail Message Submission Program:/nonexistent:/sbin/nologin

Stelle sicher, dass diese Zeile vor der ersten yp(8)-Einstellungszeile steht.

Zu guter letzt wurden ein neuer Benutzer und eine neue Gruppe für den popa3d-Server von Solar Designer hinzugefügt, der als Teil des Basissystems ausgeliefert wird. Füge die Folgende Zeile in /etc/group ein:

popa3d:*:26:

Verwende dann vipw(8), um Folgendes einzutragen

popa3d:*:26:26::0:0:POP3 server:/var/empty:/sbin/nologin

2.9.2: Neuer Paketfilter: pf

Das IPF-Firewallpackage, das Teil früherer OpenBSD-Releases war, wurde mit einer völlig neuen Suite mit dem Namen pf(4) ausgetauscht. Das bedeutet, dass viele Änderungen gemacht werden müssen.

Erstens: pf baut auf einer neuen Devicedatei auf. Um sicherzustellen, dass dieses spezielle Device erstellt wird, führe Folgendes aus:

# cd /dev # cp /usr/src/etc/etc.`machine`/MAKEDEV ./ # ./MAKEDEV all

Zweitens: einige Dateisystemänderungen fanden statt. Als Referenz soll diese Liste der Binarys dienen, die ersetzt wurden:

ALT: /sbin/ipf /sbin/ipfstat /sbin/ipnat /usr/sbin/ipfs /usr/sbin/ipftest /usr/sbin/ipmon /usr/sbin/ipresend /usr/sbin/ipsend /usr/sbin/iptest NEU: /sbin/pfctl /usr/libexec/ftp-proxy

Ähnlich verhält es sich mit den Devices:

ALT: /dev/ipl /dev/ipnat /dev/ipstate /dev/ipauth NEU: /dev/pf

Und schlussendlich die Filterkonfigurationsdateien:

ALT: /etc/ipf.rules /etc/ipnat.rules NEU: /etc/pf.conf /etc/nat.conf

Die alten Beispielkonfigurationsdateien für ipfilter können entfernt werden:

# rm -rf /usr/share/ipf

Ein Mechanismus für das sichere Aktivieren von pf wurde in die Dateien /etc/rc und /etc/rc.fon eingebunden. Du musst diese Dateien aktualisieren, damit sie den neuen Einhängemechanismus beinhalten. Wenn du möchtest, dass pf aktiviert wird, setze PF=YES in /etc/rc.conf.

2.9.3: Änderungen an make

Es wurden Änderungen an make(1) und seinen Datendateien gemacht, welche Probleme in der Erzeugungsphase hervorrufen können. Diese kennzeichnen sich normalerweise dadurch, dass Fehler in bsd.own.mk während dem Erzeugen entstehen. Um diese Probleme zu umgehen, solltest du zuerst die Datendateien aktualisieren:

# cd /usr/src/share/mk # make install

Übersetze und installiere danach das neue make.

# cd /usr/src/usr.bin/make # make clean && make obj && make depend && make # make install

Fahre nun mit deinem Upgrade fort.

2.9.4: Erzeugung bricht wegen KerberosV-Fehlern ab

Bevor du das gesamte System übersetzen kannst, musst du zunächst KerberosV übersetzen.

Zuerst sei gesagt, dass es ein neues KerberosV-Konfigurationsverzeichnis in /etc gibt. Wenn du es nicht bereits gemacht hast, verwende die mtree(8)-Prozedur gemäß Sektion 1.13, um es zu erstellen:

Erzeuge nun KerberosV

# cd /usr/src/kerberosV # make obj # cd lib/roken # make # cd ../../usr.bin/asn1_compile # make # make install

Du musst eventuell auch deine /etc/login.conf aktualisieren, damit sie die Tatsache wiederspiegelt, dass die Datei /usr/libexec/auth/login_krb-or-pwd in login_krb4-or-pwd umbenannt wurde.

2.9.5: Neue Version von sendmail

Die Version von sendmail(8) ist nun 8.12. Da diese Version von sendmail nicht mehr mit setuid root läuft, entstanden signifikante Änderungen.

  1. Sowohl ein neuer Benutzer als auch eine neue Gruppe (smmsp) wurden hinzugefügt. Falls du es noch nicht getan hast, folge den Anweisungen in Sektion 2.9.1, um sie anzulegen.
  2. Einige Änderungen fanden an der Dateihierarchie statt; einschließlich eines neuen Verzeichnisses namens /var/spool/clientmqueue und neuen Rechten für /var/spool/mqueue. Diese Änderungen können anhand der mtree(8)-Prozedur gemäß Sektion 1.13 durchgeführt werden.
  3. Füge Folgendes zur crontab(1) von root hinzu. Diese Zeile ist notwendig, da sendmail nicht länger setuid root läuft und sich daher darauf verlässt, dass dieser Teil richtig ausgeführt wurde:

    # sendmail clientmqueue runner */30 * * * * /usr/sbin/sendmail -L sm-msp-queue -Ac -q
  4. Upgrade sendmail:

    # cd /usr/src/gnu/usr.sbin/sendmail # make clean && make obj && make depend && make && make install

    Hinweis: Die Dateien submit.cf und localhost.cf wurden in dein /etc/mail-Verzeichnis installiert. Die erste der beiden Dateien (submit.cf) - in der Sendmaildokumentation wird sie als Clientkonfigurationsdatei beschrieben - wird von den MUAs verwendet, die E-Mails lokal über sendmail versenden wollen. Aufgrund der Rechteänderungen, die weiter oben erläutert wurden, werden keine root-Rechte benötigt; die sendmail-Binary ist set-groupid für die Gruppe smmsp. Die zweite Datei (localhost.cf) ist eine OpenBSDfizierte Datei, die sendmail so ausführt, dass nur auf dem Localhost-Interface Mails vom lokalen Host akzeptiert werden, nicht aber Verbindungen vom Netzwerk (was du aber sehr wahrscheinlich möchtest, wenn du z. B. smtpd(8) auf dem SMTP-Port deines Interfaces lauschen lassen möchtest, das für andere Rechner erreichbar ist). Wirf einen Blick in die Datei SECURITY im Verzeichnis /usr/src/gnu/usr.sbin/sendmail/sendmail, wenn du weitere Informationen benötigst.

    Dir wird dringend dazu geraten, dass du deine Sendmailkonfigurationsdateien in /etc/mail generierst und aktualisierst. Du kannst funktionierende Konfigurationsdateien in /usr/share/sendmail/cf vorfinden. Beachte, dass localhost.cf aus openbsd-localhost.mc generiert wird.

  5. Wenn du sendmail ohne die Option -bd in /etc/rc.conf einträgst - dies ist die Einstellung der Standardinstallation - wirst du die Datei localhost.cf verwenden. Editiere rc.conf, damit folgende Zeile genutzt wird:

    # For normal use: "-L sm-mta -bd -q30m" sendmail_flags="-L sm-mta -C/etc/mail/localhost.cf -bd -q30m"
  6. Sobald deine Konfigurationsdatei bereit ist, beende das bereits laufende sendmail mit kill(1):

    kill `sed 1q /var/run/sendmail.pid`

    Starte das neue sendmail mit den passenden Optionen, z. B.:

    /usr/sbin/sendmail -L sm-mta -bd -q30m

    für eine Konfiguration, die E-Mails von anderen Rechnern akzeptiert, oder

    /usr/sbin/sendmail -L sm-mta -C/etc/mail/localhost.cf -bd -q30m

    damit nur lokale E-Mails akzeptiert werden.

    Hinweis: die Option -bd wird nun in beiden Fällen benötigt.

Das neue sendmail sollte nun laufen.

2.9.6: /etc/primes verschoben

/etc/primes wurde in /etc/moduli umbenannt. Benenne sie einfach um oder kopiere die neue Datei aus /usr/src/etc.

Von 2.8 upgraden

2.8.1: Neue Gruppe namens auth

Eine neue Gruppe namens auth mit der gid 11 wurde dem System hinzugefügt. Schreibe eine Zeile wie die folgende in deine /etc/group:

auth:*:11:

2.8.2: Neues wscons-Konsolensystem

Der pcvt-Konsolentreiber wurde gegen das wscons-Konsolensystem ausgetauscht. Bevor wscons eingesetzt werden kann, musst du neue wscons-bezogene Gerätedateien erstellen. Stelle sicher, dass du das neueste MAKEDEV installierst hast, und erstelle alle Gerätedateien:

# cp /usr/src/etc/etc.i386/MAKEDEV /dev/MAKEDEV # cd /dev # ./MAKEDEV all

Wenn du X verwendest, dann musst du die Pointer-Sektion deiner XF86Config-Datei so ändern, dass sie Folgendes enthält:

Protocol "wsmouse" Device "/dev/wsmouse"

2.8.3: Kernelkompilierung schlägt wegen undefinierten Symbolen fehl

Das Programm config(8) wurde aktualisiert. Das Erzeugen mit dem alten config wird Fehler wie die folgenden verursachen:

Undefined symbol `_pdevnames_size' referenced Undefined symbol `_pdevnames' referenced

Um diese zu beheben, kompiliere und installiere das neue config:

# cd /usr/src/usr.sbin/config # make clean && make depend && make # make install

Kompiliere nun einen neuen Kernel wie zuvor.

Von 2.7 upgraden

2.7.1: Welche großen Probleme treten beim Upgrade von 2.7 auf 2.8 auf?

Signifikante gcc-Änderungen wurden vollzogen, die das Erstellen von libc-Bibliotheken, die auf sich selbst verweisen, zu einfach gemacht haben. Aus diesem Grund sollten Upgrades genau so durchgeführt werden, wie hier beschrieben:

  1. Entferne Objektdateien aus deinem Source-Tree und lade 2.8-Quelltext herunter.
  2. Übersetze und instaliere einen neuen Linker. Dies muss vor einer vollständigen Erzeugung des gccs gemacht werden.

    $ cd /usr/src/gnu/usr.bin/ld $ make clean && make obj && make $ sudo make install
  3. Übersetze und installiere den neuen gcc. Verwende die BOOTSTRAP-Prozedur, um Dinge zu beschleunigen.
  4. Übersetze einen neuen Kernel. Installiere ihn aber noch nicht

    $ cd /usr/src/sys/arch/`machine`/conf $ config GENERIC $ cd ../compile/GENERIC $ make clean && make depend && make
  5. Aufgrund einiger libc-Änderungen könnte es vorkommen, dass dein System beim Hochfahren hängt; Abhilfe schafft der /etc/resolv.conf-Eintrag lookup file bind. Füge diese Zeile ein, wenn es für deine Maschine notwendig ist.

    # echo "lookup file bind" >> /etc/resolv.conf
  6. Instaliere den neuen Kernel und starte neu # cd /usr/src/sys/arch/`machine`/compile/GENERIC # mv /bsd /bsd.old # mv bsd /bsd # chown root.wheel /bsd # shutdown -r now

    (Wenn dieser Schritt fehlschlägt, dann kannst du das System wiederherstellen, indem du den alten Kernel (bsd.old) über den boot>-Prompt bootest.)

  7. Übersetze und installiere das neue make (und Supportdateien). Überspringe nicht den »make depend«-Schritt.

    $ cd /usr/src/usr.bin/make $ make clean && make obj && make depend && make $ sudo make install $ cd /usr/src/share/mk $ sudo make install
  8. Installiere den aktuellsten mtree und stelle sicher, dass die notwendige Verzeichnisstruktur vorliegt.

    $ cd /usr/src/etc/mtree $ sudo install -c -o root -g wheel -m 444 4.4BSD.dist /etc/mtree $ sudo mtree -qdef /etc/mtree/
  9. Führe make build aus # cd /usr/src && make build
  10. Aktualisiere /etc, /var und /dev/MAKEDEV manuell.

Von 2.6 upgraden

2.6.1: Termcap-Einträge sind zu lang.

Es gibt eine neue termcaps.master-Datei. Du musst die Dateien terminfo und termcaps mit der aktuellen Version von tic(1) generieren. Wenn du mittels make build upgradest, dann wird die richtige Version von tic(1) automatisch für dich aufgerufen. Wenn nicht, dann wirst du den folgenden Fehler erhalten:

terminfo.src is corrupt! You need to update /usr/bin/tic

In diesem Fall musst du entweder tic(1) neu übersetzen und installieren (stelle sicher, dass du die aktuelle Version von libcurses verwendest) oder erzeuge einfach die Version von tic(1) in deinem Source-Tree.

2.6.2: Mein pn- (oder mx-, al-, ax-) Device wird nicht mehr vom Kernel erkannt.

(Hinweis: pn wird für das einfache Verständnis im folgenden Text verwendet. Es steht für pn, mx, al oder ax [jenachdem, welches gerade zutrifft].)

Diese vier Treiber wurde mit einem vereinheitlichten dc-Treiber ausgetauscht. Du musst alle Vorkommnisse von pn*, mx, al und ax aus deinen Konfigurationsdateien entfernen. Betroffen sind davon unter anderem:

Wenn du einen angepassten Kernel modifizierst, stelle sicher, dass du das dcphy-Device in deiner Kernelkonfiguration wie folgt eingebunden hast:

dcphy* at mii? phy ? # Digital Clone PHYs

Wenn du schon dabei bist, möchtest du wahrscheinlich auch Folgendes mit eintragen:

ukphy* at mii? phy ? # "unknown" PHYs

2.6.3: Von gcc 2.95.1 auf 2.95.2 upgraden

Die gcc-Version 2.95.2 wurde in den OpenBSD-Source-Tree um den 19. Januar 2000 herum übernommen. Damit gcc ordnungsgemäß funktioniert, wird eine aktuellere (nach 2.6) libiberty benötigt. Um diese Bibliothek zu erzeugen, führe folgende Befehle aus:

cd /usr/src/gnu/egcs/libiberty make -f Makefile.bsd-wrapper clean make -f Makefile.bsd-wrapper obj make -f Makefile.bsd-wrapper make -f Makefile.bsd-wrapper install

HINWEIS: Auf mips-basierten Architekturen wie z. B. pmax muss explizit ldconfig aufgerufen werden, wenn neue Bibliotheken erzeugt wurden.

Nachdem libiberty erzeugt wurde, kannst du mit einem standardmäßigen gcc-Bootstrap fortfahren:

cd /usr/src/gnu/egcs/gcc make -f Makefile.bsd-wrapper clean make -f Makefile.bsd-wrapper obj make -f Makefile.bsd-wrapper -DBOOTSTRAP make -f Makefile.bsd-wrapper -DBOOTSTRAP install make -f Makefile.bsd-wrapper clean make -f Makefile.bsd-wrapper make -f Makefile.bsd-wrapper install

2.6.4: Kerberos upgraden.

Damit Kerberos IV erfolgreich erzeugt werden kann, müssen die folgenden Schritte zuvor befolgt werden:

2.6.5: M4 upgraden.

Die Version von m4, die mit OpenBSD 2.6 ausgeliefert wurde, wird in eine Endlosschleife geraten, wenn die .mc-Dateien von sendmail in .cf-Dateien umgewandelt werden. Du musst deshalb die neue Version von m4 installieren, bevor du ein make build ausführen kannst. Mit anderen Worten:

# cd /usr/src/usr.bin/m4 # make && make install && make cleandir

2.6.6: Sendmail upgraden.

In sendmail 8.10.X haben sich die Orte (und Namen) der Konfigurationsdateien von sendmail geändert. Alles - bis auf die PID-Dateien - befindet sich nun in /etc/mail. Zusätzlich haben sich die Namen einiger Dateien geändert.

ALT NEU
/etc/sendmail.cf /etc/mail/sendmail.cf
/etc/sendmail.cw /etc/mail/local-host-names
/etc/sendmail.ct /etc/mail/trusted-users
/etc/sendmail.oE /etc/mail/error-header
/etc/aliases /etc/mail/aliases
/etc/service.switch /etc/mail/service.switch
/etc/userdb /etc/mail/userdb
/usr/share/misc/sendmail.hf /etc/mail/helpfile

Es gibt einige Wege, wie man von der alten Sendmailkonfiguration zur neuen wechselt; die ersten Schritte sind allerdings immer die gleichen.

  1. Aktualisiere /etc/rc, sodass nach /etc/mail/sendmail.cf und nicht nach /etc/sendmail.cf gesucht wird.
  2. mv /etc/sendmail.cf /etc/mail/sendmail.cf
    Dies ist der Weg mit dem geringsten Widerstand: so musst du jedenfalls nicht die Pfadangaben der anderen Dateien ändern.
  3. Oder erzeuge eine neue .cf-Datei aus deiner .mc-Quelldatei. Beachte, dass du nicht mehr folgende Zeile angeben musst: include(`../m4/cf.m4') da diese von make aus eingebunden wird. Beachte des Weiteren, dass wenn du Maschinen in die Klasse w (über »Cw Maschinenname«) einbinden willst, du dies jetzt in der LOCAL_CONFIG-Sektion machen musst (wirf einen Blick in openbsd-lists.mc, um ein Beispiel davon zu sehen).

2.6.7: Nach dem Upgraden booten die Kernel nicht mehr, die Unterstützung für apm(8) beinhalten.

Du musst deine Bootblocks aktualisieren. Lies Section 14.8 der OpenBSD-FAQ, um weitere Details darüber zu erfahren.

2.6.8: Standardgruppe des Benutzers daemon geändert

Die Standardgruppe des Benutzers daemon wurde von 31 auf 1 umgestellt. Verwende vipw, damit diese Änderung wirksam wird, sodass der Eintrag für den Benutzer daemon wie folgt aussieht:

daemon:*:1:1::0:0:The devil himself:/root:/sbin/nologin

Von 2.5 upgraden

2.5.1: Welche großen Probleme treten beim Upgrade von 2.5 auf 2.6 auf?

Perl und make

Die aktuellste Version von Perl (5.005_03) benötigt eine neue Version von make, um richtig erzeugt werden zu können. Du musst make vor der Erzeugung des neuen Perls übersetzen und installieren. Führe Folgendes aus:

# cd /usr/src/usr.bin/make # make clean && make && make install

Führe den Prozess fort und erzeuge wieder das neue Perl. Du musst das obj-Verzeichnis von Perl manuell leeren, bevor du mit der Erzeugungsphase beginnst.

Perl-Entwickler sollten sich die aktuellsten Änderungen genau ansehen. Eine E-Mail von millert@openbsd.org:

The version of perl in the OpenBSD source tree (post 2.5) has been upgraded to 5.005_03. The build method has changed somewhat but most of that should be invisible. The important changes that affect people are as follows: 1) Perl lib files have moved from /usr/lib/perl5 to the more correct /usr/libdata/perl5 2) The default site_perl directories now live in /usr/local. Ie: if you install a perl module, it will place itself in /usr/local/libdata/perl5/site_lib. This makes it easy to see what non-stock modules you have. It also means that we can have perl modules in the ports system easily. 3) The perl library man pages are now install in /usr/share/man/cat3p You'll need to update your man.conf based on the src/etc/man.conf to take advantage of them. This means you can now do "man 3p less" and get info on the less pragma but "man less" will still get you the less pager manpage. If you have modules or other non-stock perl files the simplest thing to do is to move /usr/lib/perl5 to /usr/libdata/perl5 and add a link from /usr/lib/perl5 to /usr/libdata/perl5. Alternately, you could just edit the installed Config.pm file and fix up the paths there.
Compileränderung: egcs ersetzt gcc

Diese Änderung ist sehr wahrscheinlich die signifikanteste Änderung, der du begegnen wirst. Lies die Sektion 2.5.2, um eine ausführliche Beschreibung zu erhalten.

Kernelstruktur - statfs - geändert

Die statfs-Struktur wurde am 31. Mai geändert. Du musst deinen Kernel neu erzugen, bevor du ein make build ausführen kannst. Siehe 2.5.3 für weitere Details.

2.5.2: Wie upgrade ich von gcc auf egcs

Die sicherste Weg ist, über einen aktuellen Snapshot upzugraden - wenn einer verfügbar ist. Sieh erst nach, ob ein neuer Snapshot vorliegt! Den neuen Compiler vom alten aus zu bootstrappen wird als letzte Möglichkeit betrachtet.

Beachte zuerst, dass einige Plattformen noch nicht erfolgreich bootstrappen konnten. Bis zum heutigen Tag sollten die folgenden erfolgreich gebootstrappt werden können, wenn du vorsichtig vorgehst:

mips und rs6000 haben Probleme.

Um zu überprüfen, ob deine Plattform gebootstrappt werden kann, beziehe und installiere den egcs-Snapshot, der aus der Portskollection installiert werden kann. Wenn dieser funktioniert, dann wird es der im Tree befindliche vermutlich auch tun. Dies ist die sicherste Vorgehensweise.

Bevor wir nun auch nur einen Schritt weitergehen, stelle zunächst sicher, dass deine Kopien von binutils, gas und ld auf dem aktuellsten Stand sind. Beachte, dass es von gas und ld zwei Kopien im Tree gibt. Für i386 und sparch werden die Binutils-Version nicht genommen. Überprüfe /usr/src/gnu/usr.bin/gas und /usr/src/gnu/usr.bin/ld stattdessen.

Die folgenden Anweisungen beziehen sich auf den ursprünglichen Snapshot (egcs-990517). Seitdem wurde ein zweiter Snapshot (egcs-990608) in den Tree übernommen. Wenn du von einem reinen 2.5-System kommst, wird es sehr unwahrscheinlich sein, dass du direkt die aktuellste Version kompilieren kannst. In diesem Fall musst du zur früheren Version mit diesen Anweisungen bootstrappen.

Von espie@openbsd.org:

Today, the compiler changes. Exit gcc 2.8.1, enter egcs... or more precisely, gcc 2.95 prerelease. This is probably going to be a rough ride, but I can't work out all the kinks on every architecture by myself. I'm going to start importing stuff *now*. There will be a second message to tech@ once things are settled... Thanks to everyone who helped me sorting stuff out, most especially niklas, turan, and millert. Why the switch -------------- as most of you already know, egcs is now the *official* compiler supported by the FSF. The upcoming july release as been re-christened gcc 2.95. Just looking at the log messages will show you many improvements: support for newer processors is better, C++ is more accurately matching the ANSI/ISO standards, Fortran 77 is more closely integrated. There are also countless bug-fixes and code generation improvements. Also the development is more open. There is a cvs tree, there are several mailing-lists available, and we are cooperating closely with the egcs team. More precisely, I've been feeding patches back to the egcs team so that OpenBSD configurations are officially supported. Also, the development team is highly responsive to bug-reports, and problems get fixed. There also is a band-wagon phenomenon: everyone is switching to egcs, which means lots of code to test the compiler on, and that we can benefit from related projects. Why now ------- egcs-1.1 was unfit for some purposes. Specifically, code size on i386 was larger than gcc 2.8.1, which yielded floppy-disks problems. At 2.5 freeze, the only code fit to include was a somewhat unstable snapshot. In the interest of stability, after much pondering, egcs was not put into 2.5. Right now, the egcs project is going through a release cycle which will yield egcs 1.2. Judging from their time schedule, there is ample margin between egcs 1.2 and the next release of OpenBSD. Also, we want to get in now, so that we get a chance to report problems on less frequently used architectures, and get everything fixed for 1.2. egcs `feature freeze' is supposed to occur on may 7th, and the current snapshot 19990502 looks solid. What works and what doesn't --------------------------- egcs runs an i386 OpenBSD system without problems. m68k works as well, with a few work-arounds linked to obscure bugs that will get fixed. sparc seems to be running as well. There is some linker trouble on some other arches that needs to be fixed before our next release. Right now, constructors across dynamic libraries are not quite ready. egcs now features a stand-alone cpp which is going to be better than the current hackish solution we use. This means a few interface changes and possibly weird warnings. Keeping gcc 2.8.1 ? ------------------- due to size constraints, as soon as egcs is imported, gcc is going to move to cvs Attic. If you don't want to deal with egcs now, you'll have to be careful through your cvs updates. Some Makefiles are bound to change: includes, gnu/usr.bin, and gnu/lib. xlint and cpp.sh are going to change as well. How to bootstrap the compiler ----------------------------- the simplest way is probably to trust the various arch maintainers and download a snapshot. If you want to do stuff the hard way, you must first remake proper obj dirs: cd /usr/src make obj If you run i386, gas must be up-to-date. If you run sparc, ld must be up-to-date. then build libiberty: cd /usr/src/gnu/egcs/libiberty make -f Makefile.bsd-wrapper clean make -f Makefile.bsd-wrapper depend make -f Makefile.bsd-wrapper make -f Makefile.bsd-wrapper install then the C compiler: cd /usr/src/gnu/egcs/gcc make -f Makefile.bsd-wrapper clean make -f Makefile.bsd-wrapper depend make -f Makefile.bsd-wrapper make -f Makefile.bsd-wrapper install rebuild the C compiler with the new version: cd /usr/src/gnu/egcs/gcc make -f Makefile.bsd-wrapper clean make -f Makefile.bsd-wrapper depend make -f Makefile.bsd-wrapper make -f Makefile.bsd-wrapper install rebuild the includes cd /usr/src/include make includes build all egcs libraries and install them cd /usr/src/gnu/egcs make -f Makefile.bsd-wrapper clean make -f Makefile.bsd-wrapper depend make -f Makefile.bsd-wrapper make -f Makefile.bsd-wrapper install install the new cpp driver cd /usr/src/usr.bin/cpp make install then you're all set, and a standard make build should work...

[Anmerkung des Autors: Nun, so richtig funktioniert es nicht. Das Programm xlint kann nicht erzeugt werden. Die Behebung des Problems ist aber recht einfach. Führe einfach make && make install im /usr/src/usr.bin/xlint/xlint-Verzeichnis aus, bevor du ein make build aufrufst und weiter forsetzst. Wirf einen Blick auf 2.5.2.2.]

If it doesn't, you're using an arch that didn't go through make build yet. The most probably occurrence is an Internal Compiler Error, as known as an ICE. First try to see if the ICE will go away with -O1 or -O0. In that case, you can put a work-around in the Makefile until it's fixed (see /usr/src/lib/libm/Makefile for an example of how to put in such work-arounds for m68k). Then the error needs to be reported to the egcs-bugs mailing list. At a minimum, you must run the source through the same compiler invocation, with an addition of -v -save-temps to the options. -v yields the precise sequence of commands invoked by gcc. -save-temps will give you a pre-processed C file (.i) or C++ (.ii) that the egcs people can make sense of... you can't ask them to run OpenBSD on their boxes. If you have more time, you can try to trim down the pre-processed C file to the bare minimum that triggers the bug. Dichotomy works nicely.

Wenn du diese ganze Prozedur durchgeführt hast und immer noch alles funktioniert, dann: glückwunsch. Wenn nicht, dann solltest du die folgenden Sektionen nach Ratschlägen durchsuchen. Probleme, die hier nicht aufgelistet werden, sollten an tech@openbsd.org gesendet werden.

2.5.2.1 - i386 und sparc werden nicht mehr per #define definiert

Das stimmt. Der Kompiler egcs verwendet die sauberen __i386__ und __sparc__. Wenn du Quelltext kompilieren musst, dier auf den alten Definitionen basiert, dann füge -Dsparc oder -Di386 an die passende Stelle in deiner Makefile an.

2.5.2.2 - Erzeugungsphase bricht bei xlint ab

Dies liegt an semantischen Unterschieden im cpp. Die Umgehung des Problems ist aber recht einfach; ein ähnliches Problem mit cap_mkdb wird in 2.4.2 beschrieben.

Führe folgende Befehle aus:

# cd /usr/src/usr.bin/xlint/xlint # make && make install

rufe nun erneut make auf; die Erzeugungsphase sollte forgesetzt werden.

2.5.2.3 - Coredump bei uthread_autoinit.c

Du bist Opfer eines Linkerbugs geworden. Hier ist die relevante Nachricht:

From: Marc Espie <Marc.Espie@liafa.jussieu.fr> Subject: egcs core-dumping on uthread_autoinit.c If this happens to you, this is a known linker problem... the cc1 you have was linked in a weird way. Initially, I made cc1 link against static /usr/lib/libiberty.a to avoid this problem, but this was cutting things too close, and the bug reappeared, probably thanks to unrelated changes in libc or elsewhere... The tree has been patched with a work-around in src/gnu/egcs/f/lang-options.h make sure you have the kludged version of that file (at least rev 1.2), recompile and reinstall cc1, the problem should go away. What's going on is that the 386 linker gets something wrong because of the huge strings array in toplev.c, and something gets mislinked, so that void f(void) __attribute((constructor)) {} kills cc1. As a work-around, I've killed Fortran options help texts, until someone finds where the linker errs.
2.5.2.4 - egcs scheint viel langsamer zu sein als gcc

Das stimmt; es gibt aber einen Grund. Der Kompiler egcs führt mehr Optimierungen durch. Datenablage und andere derartige Funktionalitäten sind mit egcs-kompilierten Code besser.

2.5.2.5 - egcs generiert größeren Code als gcc

Ja, in der Tat. Dies ist insbesondere dann auffällig, wenn die alte gcc-Option -O2 angegeben wurde. Mit egcs wurde eine neue Option eingeführt: -Os optimiert auf Größe. Diese Option ist im Großen und Ganzen mit dem Verhalten der alten -O2 vergleichbar.

2.5.2.6 - Nach der Installation von egcs hatte ich nur noch wenig Plattenspeicher übrig

egcs installiert in ein anderes Unterverzeichnis als gcc 2.8.1. Du solltest gcc deinstallieren, sobald egcs gebootstrappt wurde und voll funktionsfähig ist.

Ein ähnlicher Hinweis sagte, dass die Perländerungen, die in 2.5.1 besprochen wurden, darauf verwiesen haben, dass das /usr/lib/perl5-Verzeichnis entfernt werden konnte. Der neue Ort für diese Daten ist /usr/libdata/perl5.

2.5.2.7 - Meine Erzeugungsphase bricht während libcurses ab

Die Bibliothek libcurses baut nun auf der aktuellsten Version von cpp auf. Beziehe die aktuellste Version, erzeuge cpp neu und setze die Erzeugungsphase fort. Zum Beispiel:

# cd /usr/src/usr.bin/cpp && make install

Und probiere danach wieder make build.

2.5.2.8 - make obj schlägt fehl

Wenn dein make obj fehlschlägt und davon berichtet, dass Fehler in einer Makefile bestehen, dann sind deine Makefiles wahrscheinlich verarltet. Zum Beispiel:

===> lib/libkvm "Makefile", line 30: Malformed conditional ((${UVM} == "yes")) "Makefile", line 30: Missing dependency operator "Makefile", line 32: if-less endif "Makefile", line 32: Need an operator Fatal errors encountered -- cannot continue

Dies kann behoben werden, indem die Makefile-Includes neu erzeugt werden. Führe Folgendes aus:

cd /usr/src/share/mk && make install

und versuche erneut, make build auszuführen.

2.5.3: Mein make build bricht mit Fehlern über unimplemented syscall ab

Kurze Antwort:

Die Kernelstruktur statfs hat sich geändert. Du musst den Kernel neukompilieren, bevor du ein make build aufrufen kannst.

Lange Antwort:

Die Kernelstruktur statfs hat sich geändert. Der neue struct statfs hat folgende Funktionalitäten:

Weitere Veränderungen:

2.5.4: Verweis auf das neue 2.6-Verzeichnis.

Wenn du auf 2.6 upgradest, dann musst du einen einfachen Verweis für gcc erstellen.

cd /usr/lib/gcc-lib ln -s ${ARCH}-unknown-openbsd2.5 ${ARCH}-unknown-openbsd2.6

2.5.5: Nach einem (U)pgrade schlägt das Entpacken von base26.tar.gz mit einer Meldung fehl:

tar: Unable to remove directory ./usr/include/machine <Directory not empty>

Unter 2.5 war /usr/include/machine ein Verzeichnis und /usr/include/i386 ein Verweis auf dieses. Unter 2.6 ist es genau andersherum.

Um dieses Problem zu beheben, musst du die Shell aufrufen, das /usr/include/machine-Verzeichnis entfernen und das Upgrade erneut durchführen.

Von 2.4 upgraden

2.4.1: Änderungen an den Manualseiten

Einige Manualseiten wurden aus Sektion 1 in andere Sektionen verschoben. Unglücklicherweise bleiben die alten Manualseiten in Sektion 1, wodurch Benutzer nicht die aktuellste Version der Seite sehen werden.

Die folgenden Seiten sollten entfernt werden:

/usr/share/man/cat1/ipf.0 /usr/share/man/cat1/ipnat.0 /usr/share/man/cat1/ipsecadm.0

2.4.2: Syntax von cap_mkdb wurde geändert

Symptom:

Ein make build endet mit einem Fehler wie diesem:

cap_mkdb -i -f terminfo terminfo.src cap_mkdb: illegal option -- i usage: cap_mkdb [-v] [-f outfile] file1 [file2 ...] *** Error code 1

Korrektur:

Die Syntax, mit der man cap_mkdb aufruft, hat sich geringfügig verändert. Vor dem Aufruf von make build solltest du cap_mkdb aus den aktuellsten Quelltexten heraus neu erzeugen:

# cd /usr/src/usr.bin/cap_mkdb # make clean && make && make install

Das make build sollte dann durchlaufen.

2.4.3: Snake

Du wirst den Inhalt des obj-Verzeichnisses löschen müssen, bevor du /usr/src/games/snake upgraden kannst.

Von 2.3 upgraden

2.3.1: Neuer Benutzer: named

Nach der Veröffentlichung von 2.3 wurde der DNS-Daemon named in ein Chrootjail gesperrt. Damit diese Änderung funktioniern kann, muss der Benutzer named angelegt werden. Wenn du dies noch nicht gemacht hast, musst du diesen Benutzer anlegen, um sicherzustellen, dass alle Verzeichnis während des Erzeugungsprozesses wie erwartet angelegt werden.

Füge den folgenden Eintrag in /etc/passwd mittels vipw(8) ein:

named:*:70:70::0:0:BIND Daemon:/var/named:/sbin/nologin

Das Folgende muss in /etc/group eingetragen werden:

named:*:70:

2.3.2: Ich habe versucht, das System zu erzeugen, doch schlägt der Prozess fehl, wenn ssleay kompiliert werden soll.

Dir fehlt vermutlich ein Eintrag für den Benutzer named in deiner Passwortdatei.

Kurze Antwort:

Erstelle vor der Erzeugungsphase den Benutzer.

Lange Antwort:

Der Benutzer named wird benötigt, damit die Rechte korrekt gesetzt werden können. Wenn der Benutzer nicht vorliegt, dann wird ein Teil des Erzeugungsprozesses fehlschlagen. Wenn du die Erzeugung in einer Datei protokolliert hast (zum Beispiel mit dem Aufruf make build &>/tmp/build.log), dann wirst du folgende Nachricht vorfinden:

(cd /usr/src/etc && make DESTDIR=/ distrib-dirs) install -d -o root -g wheel -m 755 / mtree -def mtree/4.4BSD.dist -p // -u mtree: unknown user named mtree: failed at line 1632 of the specification *** Error code 1 (ignored)

Unglücklicherweise haben wir nicht festgestellt, dass die Erzeugung normal weitergeführt wurde; es wurde vollkommen missachtet, dass ein Fehler auftrat.

Wenn der Benutzer named vorliegt, wird mtree normal funktionieren:

missing: ./var/named (created) missing: ./var/named/dev (created) missing: ./var/named/etc (created) missing: ./etc/afs (created) missing: ./etc/ssl (created) missing: ./etc/ssl/private (created) missing: ./usr/obj (not created: File exists) missing: ./usr/share/doc/html (created) missing: ./usr/share/doc/html/lynx_help (created) missing: ./usr/share/doc/html/lynx_help/keystrokes (created) missing: ./usr/share/doc/usd/13.viref (created) missing: ./usr/share/man/cat4/powerpc (created) missing: ./usr/share/man/man4/alpha (created) missing: ./usr/share/man/man4/pmax (created) missing: ./usr/share/man/man4/powerpc (created) missing: ./usr/share/tmac/mdoc (created) missing: ./var/www/htdocs/manual/vhosts (created) missing: ./usr/include/ssl (created)

Der Grund für den Fehler ist, dass das Verzeichnis /usr/include/ssl niemals erstellt wurde. Ohne diese Headerdateien kann ssleay nicht übersetzt werden.

Korrektur:

Erstelle den Benutzer und die Gruppe mit dem Namen named. Entferne /usr/include/ssl und /var/named und alle anderen Verzeichnisse aus der vorherigen Liste, die versehentlich beim Aufruf von make build als normale Datei angelegt worden sind.

2.3.3: Ich habe versucht, dass System zu erzeugen, doch schlägt der Prozess fehl, wenn ich das System für die PowerPC-Architektur erstelle.

Dein Verzeichnisbaum ist unvollständig. Genauer gesagt: das Verzeichnis /usr/share/man/cat4/powerpc fehlt.

Schnelle Korrektur:

Erstelle das Verzeichnis und fahre mit der Kompilierung fohrt.

Vollständige Korrektur:

Erstelle den gesamten Verzeichnisbaum. Führe dafür Folgendes aus:

# cd /usr/src/etc && make DESTDIR=/ distrib-dirs

Du wirst vermutlich eine Ausgabe wie die folgende sehen:

install -d -o root -g wheel -m 755 / mtree -def mtree/4.4BSD.dist -p // -u missing: ./var/named (created) missing: ./var/named/dev (created) missing: ./var/named/etc (created) missing: ./etc/afs (created) missing: ./etc/ssl (created) missing: ./etc/ssl/private (created) missing: ./usr/obj (not created: File exists) missing: ./usr/share/doc/html (created) missing: ./usr/share/doc/html/lynx_help (created) missing: ./usr/share/doc/html/lynx_help/keystrokes (created) missing: ./usr/share/doc/usd/13.viref (created) missing: ./usr/share/man/cat4/powerpc (created) missing: ./usr/share/man/man4/alpha (created) missing: ./usr/share/man/man4/pmax (created) missing: ./usr/share/man/man4/powerpc (created) missing: ./usr/share/tmac/mdoc (created) missing: ./var/www/htdocs/manual/vhosts (created) missing: ./usr/include/ssl (created)

Beachte, dass /usr/share/man/cat4/powerpc eines der Verzeichnisse war, die mit diesem Prozess angelegt wurden.

--

$OpenBSD: upgrade-old.html,v 1.14 2008/01/13 13:43:34 tobias Exp $
Copyright © 1998-2007, OpenBSD.