| Release |
|
Seit der Version 2.8 von OpenBSD schlummert ein Dokument "man release" meist unbeachtet in den Tiefen der Systeme. Was kann man damit tun bzw. wozu braucht man das ? Es gibt Systeme, die auf Grund ihrer Funktion (Paketfilter, Firewall) sehr
minimalistisch installiert wurden und nur die zum Betrieb unbedingt notwendigen
Programme sind auf solchen Systemen zu finden. Dies bedeutet das dort weder
Systemquellen oder gar Compiler zur Verfügung stehen. Was aber tun, wenn
nun auf Grund eines Patches ein neuer Kernel installiert werden muss, oder ein
Programm durch eine "gepatchte" Version zu ersetzen ist? Hier kopiert man die
mit Hilfe von "man release" auf einem zweiten System erstellten Binaries
einfach auf das Zielsystem. Das funktioniert mit dem Kernel (GENERIC) genauso
wie mit einzelnen Programmen, sogar Sets wie base32.tgz kann man auf den
Zielsystemen auspacken. Eine weitere Möglickeit ist die, sich ein eigenes OpenBSD-Release zu bauen, in dem dann z.B. alle aktuellen Patches berücksichtigt sind. Fügt man dann noch bevorzugte Packages hinzu und brennt das ganze auf eine CD, hat man eine gute Arbeitsgrundlage für den Aufbau neuer Systeme. Der Vorteil liegt darin, dass man nicht erst noch die ganze Prozedur mit CVS-Update und Systemrebuild durchlaufen muss um ein aktuelles System ans Netz zu bringen, was unter Umständen einige Zeit in Anspruch nehmen kann. Die Möglichkeit eigene OpenBSD-Releases zu erstellen, sollte übrigens niemanden davon abhalten, durch den Kauf der Original CD's das OpenBSD-Project zu unterstützen. Notwendige Schritte zur Erstellung eines Release: 1. Die Sourcen aktualisieren 2. Einen neuen Kernel bauen und installieren 3. Das System neu bauen (rebuild system binaries) 4. Erstellen und Überprüfen des System-Release 5. XF4 bauen 6. Erstellen des XF4-Release 1. Sourcen aktualisieren
2. Kernel bauen und installieren cd /usr/src/sys/arch/i386/conf /usr/sbin/config GENERIC cd ../compile/GENERIC make clean make depend make cp /bsd /bsd.old cp bsd /bsd chown root.wheel /bsd schutdown -r now 3. System neu bauen Um das System in einen definierten Zustand zu bringen, wird erst einmal richtig aufgeräumt. Dazu sind die folgenden Schritte notwendig: rm -r /usr/obj/* cd /usr/src make clean make cleandir make clean cd /usr/ports make clean make index Nun wird das System gebaut: cd /usr/src make obj make build An diesem Punkt ist das System auf dem aktuellen Stand. Auf dieser Grundlage wird nun unser Release erstellt. 4. Release Erstellen und Überprüfen Das System Release besteht aus einem GENERIC Kernel, einem CD-Rom und zwei bootbaren floppy Filesystemen sowie den Sets (misc32.tgz, man32.tgz, etc32.tgz, comp32.tgz usw.) , Installationsanleitungen und checksum Dateien. Der Releaseprozess erfordert zwei Arbeitsbereiche die erstellt werden müssen. Diese Bereiche bzw. Verzeichnisse dürfen NICHT auf Verzeichnisse verweisen, in deren Pfad /mnt vorkommt, da das Verzeichniss /mnt beim Erstellungsprozess benötigt wird. Zuerst muss ein spezielles Tool übersetzt und installiert werden, welches zum Erstellen des Release benötigt wird. cd /usr/src/distrib/crunch make clean make make install Nun setzen wir die Umgebungsvariablen für unsere Arbeitbereiche und legen die Verzeichnisse an, die wir dafür benötigen. $DESTDIR und $RELEASEDIR werden vom Erstellungsprozess verwendet, weiterhin sollte man sicherstellen dass die Verzeichnisse auf unserem System existieren und dass diese leer sind.
setenv DESTDIR /opt/Eigenbau/destdir
setenv RELEASEDIR /opt/Eigenbau/release
rm -fr /opt/Eigenbau/
mkdir -p ${DESTDIR} ${RELEASEDIR}
Mit den folgenden Kommandos wird nun das Release erstellt und überprüft: cd /usr/src/etc make release cd /usr/src/distib/sets sh checkflist unsetenv DESTDIR RELEASEDIR5. XF4 bauen und installieren An dieser Stelle haben wir das Meiste geschafft, fehlt nur noch das X-Windows System und das bauen wir jetzt. Dazu müssen allerdings noch einige Vorbereitungen getroffen werden. Es wird Tcl/Tk in der version 8.3 benötigt (nur für i386) und ein alternatives Verzeichnis zum bau von XF4 damit wir nicht unsere XF4-Quellen unnötiger Weise verschmutzen. Auch hier muss das Verzeichnis leer sein. Tcl/Tk ist im Portstree zu finden und kann dort übersetzt werden. cd /usr/ports/x11/tk/8.3 make install cd /usr/ports/lang/tcl/8.3 make install mkdir /opt/Eigenbau/XF4BLD cd /opt/Eigenbau/XF4BLD lndir /usr/XF4 make build 6. Erstellen des XF4-Release Dazu legen wir zwei neue Verzeichnisse an um die Mühen unserer bisherigen Arbeit nicht zu löschen, setzen die Variablen und bauen XF4. mkdir /opt/Eigenbau/destdir-xf4 mkdir /opt/Eigenbau/release-xf4 setenv DESTDIR /opt/Eigenbau/destdir-xf4 setenv RELEASEDIR /opt/Eigenbau/release-xf4 make release unsetenv DESTDIR RELEASEDIR Fertig ! An diesem Punkt haben wir die Systemsets und X-Windowsets in ihrem jeweiligen Release-Verzeichnissen:
[znarf@brutus]: ls /opt/Eigenbau/release
CKSUM INSTALL.i386 INSTALL.pt bsd.rd floppy32.fs
INSTALL.ata INSTALL.linux MD5 cdrom32.fs floppyB32.fs
INSTALL.chs INSTALL.mbr base32.tgz comp32.tgz floppyC32.fs
INSTALL.dbr INSTALL.os2br bsd etc32.tgz game32.tgz
man32.tgz misc32.tgz
[znarf@brutus]: ls /opt/Eigenbau/release-xf4
xbase32.tgz xfont32.tgz xserv32.tgz xshare32.tgz
Die Inhalte der beiden Releaseverzeichnisse können nun in einem gemeinsamen Verzeichnis wie i386 zusammengefasst werden und schon haben wir ein eigenes Release. Hinweis Wer in /etc/mk.conf z.B. SKIPDIR=games eingetragen hat oder auch Sendmail und andere sollte berücksichtigen, dass diese Bereiche und Programme dann auch nicht in das Release einfliessen. So wird das Set game32.tgz keinen Inhalt haben wenn dies so in /etc/mk.conf eingetragen ist. Franz-Dieter Hansen |