Following -stable (the "patch
branch")
What is the -stable (patch)
branch?
OpenBSD provides a source tree that contains important patches and fixes
(i.e. those from the errata, plus others which
are obvious and simple, but do not deserve an errata entry)
and makes it available via CVS, in addition to the
-current source.
Thus, users can choose three options:
- Stick with our latest release and apply the patches by hand.
- Use the -stable ("patch") branch, which has those patches.
- Use the -current branch for all of the latest features.
As a general principle, all errata entries will
be merged into the patch branch shortly before/after they are published.
Other post-release patches may be merged in as well, subject to a number
of conditions:
- The patches must be simple, short, and obviously 100% correct.
- Errata entries are made for bugs which affect many people.
Other patches may be merged into the patch branch if they affect a few
people in drastic ways.
- New or changed functionality, hardware support or APIs will not
be merged.
In general, if it requires a man page change, it will NOT be a candidate
for the patch branch.
Please do not ask for large subsystems or patches to be merged.
Maintaining the patch tree takes a lot of effort which could be better
spent on making our next release better.
It is worth pointing out the name -stable refers ONLY to the API
and operations of OpenBSD not changing, not the overall reliability of
the system.
In fact, if things go as desired, the -current
flavor of OpenBSD, on its way to
becoming the next -release, will be an improvement in reliability,
security and overall quality over the previous -release and
-stable.
Getting -stable source code
To obtain the patch branch for a particular release of OpenBSD, you can
update on top of a pre-existing source tree (from
a mirror or the CD), or you can grab a
fresh source tree from an AnonCVS server.
Instructions for getting the patch branch and staying up to date are
described in the Getting Started section of the
AnonCVS documentation.
Note that patch branches do not help to upgrade from one release of
OpenBSD to another. They only provide a means for staying up to date
with the patches within a given release.
Do not attempt to go from one release to another via source.
Instead, please read the upgrade guide for the release in question.
Also, you cannot go backwards, from -current back to -stable, because of
library versioning problems and other changes.
Building OpenBSD -stable
Full details on building from source are provided in
FAQ 5 - Building the System from Source.
This is a simplified summary.
Once you have obtained a source tree via CVS,
you must rebuild the system.
The steps for doing so are:
- Rebuild the kernel
- Reboot with the new kernel
- Rebuild the userland
Rebuilding the kernel
To rebuild the default kernel from stable:
# cd /usr/src/sys/arch/$(uname -m)/conf
# config GENERIC
# cd /usr/src/sys/arch/$(uname -m)/compile/GENERIC
# make clean && make
Replace GENERIC with GENERIC.MP for multiprocessor systems.
Rebooting with the new kernel
To reboot with the newly compiled kernel:
# cd /usr/src/sys/arch/$(uname -m)/compile/GENERIC
# make install
# reboot
If your system has trouble booting the new kernel, you can easily go back
and reboot from the old kernel, now called obsd.
Rebuilding the userland
To rebuild the base system binaries:
# rm -rf /usr/obj/*
# cd /usr/src
# make obj
# cd /usr/src/etc && env DESTDIR=/ make distrib-dirs
# cd /usr/src
# make build
This may take some time, depending on the speed of your system.
Use of the root account can be limited to only the final step if you
follow the instructions in FAQ 5.
If you have a number of machines to keep on the -stable branch,
you may wish to make a release by
creating file sets that can be
quickly and easily installed on any machine of the same platform.
The
release(8) man page contains all the relevant information.