A question about downloading FreeBSD kernel code

Matthew Seaman m.seaman at infracaninophile.co.uk
Mon Jul 4 16:32:42 UTC 2016

On 07/04/16 15:26, William A. Mahaffey III wrote:
> On 07/04/16 09:25, Warren Block wrote:
>> On Mon, 4 Jul 2016, Nan Xiao wrote:
>>> Hi all,
>>> I want to install FreeBSD kernel source files, and my FreeBSD kernel
>>> version is:
>>> # freebsd-version -k
>>> 10.3-RELEASE-p4
>>> But from ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/, there is
>>> only 10.3-RELEASE code.
>>> So is it mapping to my kernel version (10.3-RELEASE-p4)? Or where
>>> should I download the right
>>> 10.3-RELEASE-p4 code?
>>> Thanks very much in advance!
>> Usually, uname -a will show the revision number of the code in use.
>> That revision number can be used to check out the correct version of
>> the source from the repository.  For example, on a 10-STABLE system I
>> have here:
>> uname -a
>> FreeBSD lightning 10.3-STABLE FreeBSD 10.3-STABLE #0 r302243: Mon Jun
>> 27 19:27:54 MDT 2016 root at lightning:/usr/obj/usr/src/sys/LIGHTNING  amd64
>> So this is built from revision 302243 of the source.
>> If /usr/src exists, it is deleted to make sure there is no old source
>> in there:
>> rm -rf /usr/src
>> Then check out the source for that revision.  I use 'svn' here because
>> I have installed the Subversion port, but svnlite is in the base
>> system and usually works the same.
>> Source for a -RELEASE system will come from the releng branch, so your
>> checkout will look like this (the nnnnnn coming from the uname -a
>> output):
>> svn checkout -r nnnnnn https://svn.freebsd.org/base/releng/10.3 /usr/src
>> _______________________________________________
>> freebsd-questions at freebsd.org mailing list
>> https://lists.freebsd.org/mailman/listinfo/freebsd-questions
>> To unsubscribe, send any mail to
>> "freebsd-questions-unsubscribe at freebsd.org"
> Did that (revision serializing) start w/ 10.n ? I don't see that on my
> 9.3R box:
> [wam at kabini1, ~, 9:32:26am] 490 % uname -a
> FreeBSD kabini1.local 9.3-RELEASE-p33 FreeBSD 9.3-RELEASE-p33 #0: Wed
> Jan 13 17:55:39 UTC 2016
> root at amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64
> [wam at kabini1, ~, 9:34:02am] 491 %

Warren's system was built locally from some point on the 10-STABLE branch,
with the sources checked out from subversion and without any local
modifications. That's where the r302243 in his uname output comes from.  If
he'd checked out the sources through some other VCS, such as Github or he'd
applied patches locally you could tell that from the form of the
revision tag
in the uname output.  This is done on the basis that compiling your own
is something a developer would do, and revision numbers like that are really
very useful when discussing bugs or other code-related things with other

William on the other hand, is using the 9.3-RELEASE branch -- presumably
installed and updated through freebsd-update(8).  As a standard install
from a release channel (a) we can discover exactly what the revision is
from the release tag in uname(1) and (b) given you're unlikely to be
building your own if you're using freebsd-update(8) the  revision tag
stuff doesn't really add anything useful for end-users.

While Warren is correct in his command line:

svn checkout -r nnnnnn https://svn.freebsd.org/base/releng/10.3 /usr/src

actually, for -RELEASE branches, you typically want to have all the
available SA and EN patches applied, and you can do that without having
to know a revision number:

svn checkout https://svn.freebsd.org/base/releng/10.3 /usr/src

However, since you're already using freebsd-update(8), why not use that
to maintain your copy of the system sources instead?  When you install,
you need to tick the box about 'installing system sources', or after the
fact, you can download a tarball from one of the FTP servers: eg.


Untar that so that it populates /usr/src and check that
/etc/freebsd-update.conf lists 'src' as one of the active items on the
'Components' line.  Now, when you update your system, it will pull down
the source code changes for any SA or EN patches as well as the binary
patches to the installed system.  (Why would you want to do this as well
as applying binary patches to the system?  Well, usually it's because
you want to run a non-standard kernel configuration, which you compile



-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/freebsd-questions/attachments/20160704/2f3f0664/attachment.sig>

More information about the freebsd-questions mailing list