I am running freebsd-update from time to time on my FreeBSD 9.0 system. I have a custom kernel installed and running and, according to a tip from the FreeBSD documentation (Freebsd Update (section 25.2.2)), keep a copy of GENERIC in /boot/GENERIC

Note: It is a good idea to always keep a copy of the GENERIC kernel in /boot/GENERIC. It will be helpful in diagnosing a variety of problems, and in performing version upgrades using freebsd-update as described in Section 25.2.3.

When there are updates I keep getting the following message from freebsd-update:

The following files will be updated as part of updating to 9.0-RELEASE-p4: /boot/kernel/kernel

And freebsd-update sure enough seems to overwrite my (custom) kernel with GENERIC in the process of updating. This breaks remote access to the machine for me because things in my custom kernel are needed for networking...

I believe that the problem is that FreeBSD or freebsd-update does not recognise my custom kernel as custom but thinks it's GENERIC. Question is: why? And how can I change this?

I found the following post explaining how to install the GENERIC kernel into /boot and I am wondering if this would help. Does the procedure explained there

#cd $PlaceWhereTheISOIsMounted/8.0-RELEASE/kernels/
# ./install.sh GENERIC

"register" somehow that GENERIC is in /boot/GENERIC instead of /boot/kernel/?

By the way: yes, Machine boots GENERIC kernel after freebsd-update install on serverfault is the same issue (not solved there, got carried away).

UPDATE Other people are experiencing the same issue: How to keep freebsd-update from trashing custom kernel?

UPDATE2 According to the FreeBSD mailing list the hint in the documentation about keeping a copy of GENERIC around does not help/work (anymore). See freebsd-update patches custom /boot/kernel/kernel which it should not


A quote from the handbook:

Only the GENERIC kernel can be automatically updated by freebsd-update.

If you need a network driver that is not built in the GENERIC kernel, see if it is available as a module and load it automatically from /boot/loader.conf. Then you can stick with GENERIC.

If that doesn't work, you'll probably have to do a build from source.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.