where does uname get version number?

John aqqa11 at earthlink.net
Mon Apr 21 00:41:33 UTC 2014

-----Original Message-----
>From: John <aqqa11 at earthlink.net>
>Sent: Apr 19, 2014 6:49 PM
>To: FreeBSD questions <freebsd-questions at freebsd.org>
>Subject: Re: where does uname get version number?
>So the question is back to the beginning: I installed 9.1-RELEASE, then binary upgraded to 9.2-RELEASE using freebsd-update.  Now all files I checked are correctly in 9.2-RELEASE-p4.  For example:
>1. the kernel contains the new version:
># strings /boot/kernel/kernel | grep RELEASE|grep 9
>@(#)FreeBSD 9.2-RELEASE-p4 #0: Tue Apr  8 18:08:22 UTC 2014
>FreeBSD 9.2-RELEASE-p4 #0: Tue Apr  8 18:08:22 UTC 2014
>2. /etc/hosts contains 9.2:
># $FreeBSD: release/9.2.0/etc/hosts 109997 2003-01-28 21:29:23Z dbaker $
>We have verified that:
>1. I never compiled kernel, and do not have /usr/src and /usr/obj folders now.
>2. the default /etc/profile is unchanged, in particular I never defined UNAME_* vars .
>3. I also tried "unsetenv UNAME_r"
>However, uname somehow shows the wrong version 9.1:
># uname -a
>FreeBSD localhost.localdomain 9.1-RELEASE FreeBSD 9.1-RELEASE #0 r243825: Tue Dec  4 09:23:10 UTC 2012     root at farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64
>So where does uname get the version number from?  Which file(s) might not have been upgraded?  Thank you!

I found the source code of uname at


it appears that "uname -v" does get version number from the environment variable "UNAME_v".  However it's beyond me to find out where there variables are obtained - on a stock RELEASE system without /usr/src and /usr/obj.

More information about the freebsd-questions mailing list