freebsd-update und eigener Kernel

cryptoki

Member
Hi,

auf meiner neuen Server Büchse habe ich ein frisches FreeBSD 9.1 System mittels
Code:
tar xfzvC /nfs/mfsbsd/9.1-release-amd64.tbz /mnt
installiert.

Für pf musste ich einige Sachen in den Kernel compilieren und somit einen eigenen Kernel bauen.

Wenn ich jetzt
Code:
freebsd-update fetch
aufrufe will der Update Prozess auch Teile meines Kernels aktualisieren, was logischerweise nicht geht.
PHP:
root@wallace:/boot # freebsd-update fetch
Looking up update.FreeBSD.org mirrors... 4 mirrors found.
Fetching metadata signature for 9.1-RELEASE from update2.freebsd.org... done.
Fetching metadata index... done.
Inspecting system... done.
Preparing to download files... done.

The following files will be updated as part of updating to 9.1-RELEASE-p3:
/boot/kernel/kernel
/boot/kernel/kernel.symbols
/boot/kernel/linker.hints
/boot/kernel/nfsd.ko
/boot/kernel/nfsd.ko.symbols
root@wallace:/boot #

Wie bekomme ich den
Code:
freebsd-update
dazu, meinen eigenen Kernel in Ruhe zu lassen? Ich habe bereits im Internet gesucht, jedoch noch keine richtige Antwort gefunden. :(

Danke.
LG Steffen
 
Hast du dich ans Handbuch gehalten? Die Anweisungen für eigene Kernel sind leider über die verschiedenen Schritte verteilt, aber trotzdem sauber festgehalten.
 
Danke. Genau da habe ich auch nachgelesen
Only the GENERIC kernel can be automatically updated by freebsd-update. If a custom kernel is installed, it will have to be rebuilt and reinstalled after freebsd-update finishes installing the rest of the updates. However, freebsd-update will detect and update the GENERIC kernel if /boot/GENERIC exists, even if it is not the current running kernel of the system.

Da bei meiner FreeBSD 9.1 Installation kein GENERIC vorhanden ist, habe ich einfach
Code:
mv /boot/kernel.old1 /boot/GENERIC
durchgeführt. Der Update Prozess geht aber weiterhin in /boot/kernel und aktualisiert dort die Binärdateien = Kernel ist nicht mehr gültig / PF arbeitet u.a. nicht mehr.

Weiter unten im Manuel findet sich das hier
For this kernel to be identified as the GENERIC kernel by freebsd-update, the GENERIC configuration file must not have been modified in any way. It is also suggested that the kernel is built without any other special options.


*schulternzuck* was ist nun zu tun? Ich bin ratlos. Das System läuft ja, es wäre wunderbar wenn ich nach jedem freebsd-update fetch install nicht den Kernel neu bauen müsste.

LG Steffen
 
Du musst vor dem Reboot den GENERIC-Kernel aktivieren:
Code:
# nextboot -k GENERIC
siehe Ende Abschnitt 25.2.3.2. Performing the Upgrade

Edit:
  • Du solltest für deinen eigenen Kernel nicht GENERIC modifizieren, sondern ein eigenes Konfigurations-File (Kopie von GENERIC) verwenden.
  • Einen neuen Kernel musst du nur bauen, wenn Teile davon geändert wurden. Dies ist eher selten der Fall, meist sind es Userland-Applikationen (z.B Bind) die ein Sicherheitsproblem haben.
 
Zuletzt bearbeitet:
Das ist noch verwirrender. Zum einen kommt die beschriebene Warnung
PHP:
WARNING: This system is running a "MYKERNEL" kernel, which is not a
kernel configuration distributed as part of FreeBSD 9.0-RELEASE.
This kernel will not be updated: you MUST update the kernel manually
before running "/usr/sbin/freebsd-update install"
mit meinem System nicht.

Dann wird beschrieben, das man den GENERIC Kernel booten soll und danach ein
Code:
# nextboot -k GENERIC

# shutdown -r now
Once the system has come back online, restart freebsd-update using the following command. The state of the process has been saved and thus, freebsd-update will not start from the beginning, but will remove all old shared libraries and object files.

# freebsd-update install
durchführen soll.

Gut, beim nächsten Reboot muss ich jedoch meinen benutzerdefinierten Kernel booten und das nächste Mal freebsd-update bringt die gleiche Meldung. Hier drehe ich mich im Kreise. Ich will doch nicht jeden Mal mein Produktivsystem zweimal neu starten, wenn ich ein einfaches freebsd-update durchführe, um mein System auf den aktuellen Stand zu halten.


Außerdem geht es in dem Abschnitt um das Upgrade, also das Springen von einer Version zu einer anderen. Da kann ich es gut verstehen, den Aufwand zu betreiben. Das macht man nicht jeden Tag, sondern alle 9 bis 12 Monate.

LG Steffen
 
Nachdem ich noch einmal die Manuels gelesen habe und die Informationen einfach nicht auf mein FreeBSD 9.1 passen bzw. die dortigen Sachen ggf. (?) veraltet sind, habe ich mich für die "brutale" Lösung entschieden.

PHP:
vi /etc/freebsd-update.conf
...
# Paths which start with anything matching an entry in an UpdateIfUnmodified
# statement will only be updated if the contents of the file have not been
# modified by the user (unless changes are merged; see below).
UpdateIfUnmodified /etc/ /var/ /root/ /.cshrc /.profile /boot/kernel
...

Also /boot/kernel bleibt damit unberührt. Die Ausgabe von
PHP:
root@wallace:/root # freebsd-update fetch
Looking up update.FreeBSD.org mirrors... 4 mirrors found.
Fetching metadata signature for 9.1-RELEASE from update5.freebsd.org... done.
Fetching metadata index... done.
Inspecting system... done.
Preparing to download files... done.

The following files are affected by updates, but no changes have
been downloaded because the files have been modified locally:
/boot/kernel/kernel.symbols
/boot/kernel/kernel
/boot/kernel/linker.hints
/boot/kernel/nfsd.ko.symbols
/boot/kernel/nfsd.ko

No updates needed to update system to 9.1-RELEASE-p3.

Damit kann ich Leben. ;) Hier noch ein Auszug aus dem Manuel unter
http://www.freebsd.org/doc/de/books/handbook/updating-upgrading-freebsdupdate.html
Das freebsd-update-Werkzeug kann nur den GENERIC-Kernel automatisch aktualisieren. Wenn ein selbstkonfigurierter Kernel verwendet wird, muss dieser neu erstellt und installiert werden, nachdem freebsd-update den Rest der Aktualisierungen durchgeführt hat. Allerdings wird freebsd-update den GENERIC-Kernel in /boot/GENERIC erkennen und aktualisieren (falls dieser existiert), sogar dann, wenn dies nicht der aktuell verwendete Kernel des Systems ist.

Das funktioniert definitiv nicht. :(

LG Steffen
 
Zurück
Oben