Updating FreeBSD from source
Sometimes I need to update my FreeBSD operating system. I prefer to do that
from the source code, so that my customizations in (/etc/src.conf
) remain.
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
correct branch.
# 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.
Procedure
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
by the #
-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
- Press
<enter>
to start the default/bin/sh
.
# 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.
Related articles
- Writing speed on FreeBSD 13.1-p2 amd64 with ZFS
- FreeBSD 13.1 install on a Lenovo IdeaPad 5
- Gnumeric build fix for FreeBSD
- Writing speed on FreeBSD 12.1-STABLE amd64
- Cleaning up old port configurations