Alternativen Kernel booten?

TCM

Well-Known Member
Hi,

ich hab mir ein Release gebaut mit

Code:
make -C /usr/src buildworld
make -C /usr/src buildkernel KERNCONF="GENERIC"
make -C /usr/src buildkernel KERNCONF="VIMAGE"
make -C /usr/src/release obj
make -C /usr/src/release ftp KERNCONF="GENERIC VIMAGE" NODOC=1 NOSRC=1 NOPORTS=1

Ergibt:

Code:
-rw-r--r--  1 root  wheel       701 Feb  1 17:03 MANIFEST
-rw-r--r--  1 root  wheel  66108496 Feb  1 17:03 base.txz
-rw-r--r--  1 root  wheel   1429120 Feb  1 17:03 doc.txz
-rw-r--r--  1 root  wheel    885704 Feb  1 17:03 games.txz
-rw-r--r--  1 root  wheel  90567672 Feb  1 17:03 kernel.VIMAGE.txz
-rw-r--r--  1 root  wheel  89146440 Feb  1 17:03 kernel.txz
-rw-r--r--  1 root  wheel  16767348 Feb  1 17:03 lib32.txz

Ergibt ausgepackt:

Code:
# ls -dl boot/kernel*/kernel
-r-xr-xr-x  1 root  wheel  20701947 Feb  1 16:40 boot/kernel.VIMAGE/kernel
-r-xr-xr-x  1 root  wheel  21156399 Feb  1 16:02 boot/kernel/kernel

Wie bootet man den jetzt richtig[tm]?

Ich hab im loader naiverweise einfach

Code:
unload
set module_path=/boot/kernel.VIMAGE
load /boot/kernel.VIMAGE/kernel
boot

eingegeben und das schien auch zu funktionieren. Ist das so richtig oder gibts irgendeinen Luxus, den ich noch übersehe, um einfach Kernel und Module von einem alternativen Pfad zu booten?
 
TCM: Du kannst mehr als einen Kernel auf einmal bauen mit make buildkernel und brauchst KERNCONF auch nicht auf der Kommandozeile angeben. Schreib einfach KERNCONF=VIMAGE GENERIC in /etc/make.conf. Der erste Kernel wird nach /boot/kernel installiert.
 
Das resultierende Filesystem dient (als ZFS mit Snapshot) als Basis für mehrere Klone, weswegen ich GENERIC als /boot/kernel haben will und den abweichenden Kernel so, wie ihn mir make ftp halt einpackt. Manche Systeme booten GENERIC, manche VIMAGE.

Das release-Script hab ich außerdem gerne "kompakt" und selbsterklärend, ohne dass ich externe Abhängigkeiten in make.conf reinschreibe. Der Buildprozess sieht so aus, dass ich einen ZFS-Snapshot von z.B. 10.1-RELEASE klone, mein release-Script reinbügel und das Ganze per PXE boote. Das Script baut dann ein neues Release, welches ich auf dem Server auspacke und wieder snapshotte. So kann ich mir dann bei Bedarf 10.1-RELEASE oder 10.1-RELEASE-p5 etc.pp. klonen und booten.

make buildkernel KERNCONF="GENERIC VIMAGE" hat AFAIR nicht funktioniert. Da wollte er einen einzelnen Kernel namens "GENERIC VIMAGE" bauen.

Das Bauen und alles ist ja auch nicht so das Problem, das Booten auch nicht. Ich wollte halt nur wissen, ob es einen Shortcut gibt, der Kernel und Module automagisch von irgendwo anders außer /boot/kernel handhabt.
 
Ah, nextboot ganz übersehen. Mal angucken...

Edit: OK, läuft. Danke. Einfach /boot/nextboot.conf in den Clone bügeln mit

Code:
nextboot_enable="YES"
kernel="kernel.VIMAGE"

und man hat als default VIMAGE und kann bei Bedarf auch GENERIC booten. Perfekt.
 
Hmm, so gesehen geht auch einfach kernel="kernel.VIMAGE" in loader.conf. Ich hatte direkt auf der loader console mit boot kernel.VIMAGE rumhantiert, das ging nicht.
 
Genau das hatte nicht funktioniert, weil er dann keine Module automatisch laden konnte. Sonst wär ja alles schick gewesen und der Thread würde gar nicht existieren.

Edit: Bei näherer Betrachtung kann ich das aber irgendwie nicht mehr nachvollziehen. Keine Ahnung, was ich da getrieben hatte.
 
Zurück
Oben