where does uname get version number?

John aqqa11 at earthlink.net
Fri Apr 18 04:59:04 UTC 2014

-----Original Message-----
>From: Eduardo Morras <emorrasg at yahoo.es>
>Sent: Apr 17, 2014 3:07 AM
>To: freebsd-questions at freebsd.org
>Subject: Re: where does uname get version number?
>On Wed, 16 Apr 2014 23:39:06 -0400 (GMT-04:00)
>John wrote:
>> Do you want me to add the following to /etc/profile ?
>> UNAME_v="FreeBSD 9.2-RELEASE #0 r243825: Tue Dec  4 09:23:10 UTC
>> 2012     root at farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC"
>> export UNAME_v UNAME_r="9.2-RELEASE"
>> export UNAME_r
>> But, then do I have to manually change this version number
>> in /etc/profile for each upgrade in the future?  That would be quite
>> a hassle for each upgrade to -p5, -p6, ... etc.  Is that the way to
>> go?
>No, freebsd-update should update your /etc/profile and UNAME_* system vars.
>> I also tried:
>> # unsetenv UNAME_r 
>> but "uname -r" still shows the incorrect "9.1-RELEASE" even though
>> all other files mentioned above are in "9.2-RELEASE".
>> So still, where did uname get that incorrect version number?
>If there's no UNAME_* defined, you undefined it with #unsetenv, uname reads them from /usr/obj/usr/src/sys/$KERNEL/vers{ion,.c} files. Trond suggest to delete them before rebuilding, so they get updated too, nice suggestion. Mine sets different information in UNAME_* and vers{ion,.c} files. This discrepancy should be avoided.
>---   ---

Thanks.  I don't have the folder /usr/obj/usr/src/sys/ .  Under /usr/obj/usr/src/ I only see two folders: lib32 and tmp.

I did find a file /usr/obj/lib32/usr/src/include/vers.c , that contains the incorrect version:

#define SCCSSTR "@(#)FreeBSD 9.1-RELEASE #0: Mon Jan 21 15:45:14 UTC 2013"
#define VERSTR "FreeBSD 9.1-RELEASE #0: Mon Jan 21 15:45:14 UTC 2013\n    root@:/usr/obj/lib32/usr/src/include\n"
#define RELSTR "9.1-RELEASE"

That's closer now!  However, I never compiled the kernel, I only installed 9.0-RELEASE and ran freebsd-update to upgrade to 9.2-RELEASE, so don't know how these /usr/obj files were produced.  I installed virtualbox before, maybe that produced /usr/obj ?

Anyway, I have deleted these folders /usr/src/ and /usr/obj/ , then ran svn to install /usr/src/ , and then rebooted.  Yet "uname -a" still says the incorrect 9.1-RELEASE.  Now I don't even have /usr/obj , where does uname get that incorrect version now?

More information about the freebsd-questions mailing list