home über marty Sonstiges Linux OpenBSD CDVerwaltung Greetz wieso marty44?? Links

Kernel compilieren unter OpenBSD 2.9

Manchmal ist es nötig, das man einen eignen Kernel erstellt. Sei es nur, um unnötige Treiber zu entfernen oder um besondere Features anzuschalten, die im GENERIC-Kernel nicht aktiviert sind.
Der Quellcode des Kernels befindet sich auf der ersten CD:
marty44tp# mount -t cd9660 -r /dev/cd0a /mnt
marty44tp# cd /usr
marty44tp# tar xvfz /mnt/srcsys.tar.gz
marty44tp# umount /mnt
marty44tp# cd sys/arch/i386/conf
marty44tp# cp GENERIC MEINKERNEL

Nun muß die Datei MEINKERNEL mit einen Editor bearbeitet werden. Zeile 248 habe ich folgendermaßen geändert:
vorher:
fd*     at fdc? drive ?
nachher:
fd*     at fdc? drive ? flags 0x20
Dies bewirkt, das man beim Thinkpad das Diskettenlaufwerk an und abklemmen kann, wie man will. (Vorher mußte man es vor dem Start des Rechners anschliessen, damit man es benutzen konnte.)

Ansonsten kann man die Konfigurationsdatei durchwandern und alle Geräte, die man nicht braucht mit einer # auskommentieren.
Danach muß das config-Programm gestartet werden. Falls Fehler in der Konfiguration sind, wird dieses angezeigt und man muß die Datei MEINKERNEL entsprechend bearbeiten:
marty44tp# config MEINKERNEL
Don't forget to run "make depend"
Kernel options have changed -- you must run "make clean"

Wenn dies ok ist, kann der Kernel erstellt werden:
marty44tp# cd ../compile/MEINKERNEL
marty44tp# make depend
marty44tp# make clean
marty44tp# make
Ein erfolgreiches make spuckt am Ende eine Meldung der folgenden Art aus (die Zahlen müssen nicht übereinstimmen):
rm -f bsd
ld -z -Ttext E0100000 -e start -x -o bsd ${SYSTEM_OBJ} vers.o
text    data    bss     dec     hex
2543616 163840  266300  2973756 2d603c

Nun wird der neue Kernel noch ins Root-Verzeichnis kopiert und dann kann er getestet werden:
marty44tp# cp bsd /bsd.test
marty44tp# reboot
Nach dem Neustart des Rechners auf dem boot-Prompt folgendes eingeben (Achtung, das boot-Prompt bleibt nur ein paar Sekunden, wenn man das verschläft, kann man gleich noch mal neu starten ;) ):
>> OpenBSD/i386 BOOT 1.26
boot> bsd.test

Wenn der neue Kernel ok ist, kann man ihn von bsd.test in bsd umbenennen, damit er automatisch gestartet wird.

Hier noch ein Vergleich zwischen GENERIC und MEINKERNEL
bsd (GENERIC)bsd.test (MEINKERNEL)
Größe3947412 bytes2929956 bytes
Bootzeit*52,50 s49,16 s
* die Bootzeit habe ich gemessen vom Druck auf die Enter-Taste beim Boot-Prompt bis zum Erscheinen des Logins.

zurück zur OpenBSD-Übersicht
Letzte Aktualisierung dieser Seite: 2. Juli 2001