Sometimes I need to update my FreeBSD operating system. I prefer to do that
from the source code, so that my customizations in (
At the writing of this article, I’m tracking the 10-STABLE branch.
To start this, I removed the contents of
/usr/src and checked out the
# rm -rf /usr/src/* # svnlite checkout https://svn0.eu.FreeBSD.org/base/stable/10 /usr/src
Before running a build, I update the sources;
# svnlite update /usr/src
Rebuilding the OS and/or kernel can be done for various reasons;
- Fix vulnerabilities
- New features
- Configuration changes
The latter is mainly for when I’ve made changes to
/etc/src.conf (see the
manual) to indicate which features/programs shouldn’t be built.
The handbook has a very elaborate procedure for this. Mine is somewhat simpler. I’m documenting it here at least partially so that I have the instructions at hand.
Note that all the following has to be done as the
root user (as indicated
#-prompt). Running the build of both the OS and the kernel;
# rm -rf /usr/obj/usr # cd /usr/src # make -j4 buildworld # make -j4 buildkernel
Installing the kernel, reboot and install the new OS;
# make installkernel # reboot
- Boot into single user mode
- Log in with the root password
<enter>to start the default
# mount -a # mergemaster -p # cd /usr/src # make installworld # mergemaster -i -U # make -DBATCH_DELETE_OLD_FILES delete-old # make delete-old-libs # reboot
If the OS boots up normally, the contents of
/usr/obj can be deleted;
# chflags -R noschg /usr/obj/usr # rm -rf /usr/obj/usr # cd /usr/src # make cleandir # make cleandir
For convenience, the permissions of
umount are modified to allow regular
user to unmount. And the group of
shutdown is modified to permit members
of the wheel group to call it.
# chmod u+s /sbin/umount # chown root:wheel /sbin/shutdown
For comments, please send me an e-mail.
- Gnumeric build fix for FreeBSD
- Writing speed on FreeBSD 12.1-STABLE amd64
- Cleaning up old port configurations
- Opencascade problem
- Have Python log to syslog