where does uname get version number?

Trond Endrestøl Trond.Endrestol at fagskolen.gjovik.no
Fri Apr 18 13:39:12 UTC 2014


On Fri, 18 Apr 2014 00:48-0400, John wrote:

> -----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?

If I understand this at all, freebsd-update simply downloads and 
installs precompiled bits and pieces of the base system, including the 
kernel. The system needs to be rebooted manually to be able to use an 
updated kernel and other long running pieces like init(8).

Checking out a new working copy of the source tree using svn is only 
the first step of a multi-step approach of updating the base system 
using the source tree; the remaining steps being compiling the world 
and the kernel, installing the kernel, rebooting the system, and if 
all goes well, install world, merge any changes to the config files, 
and optionally delete obsolete stuff, before doing the final reboot. 

Yes, always perform the final reboot to verify that the system is able 
to reboot in case of a panic at a later stage.

If the new kernel didn't load well, simply reboot, interrupt the boot 
loader, unload the bad kernel, load the old kernel 
(/boot/kernel.old/kernel), and boot the system, followed by 
mv /boot/kernel /boot/kernel.bad, and 
mv /boot/kernel.old /boot/kernel.

Next time, it's sufficient to update the working copy (svn up 
/usr/src), rather than erasing /usr/src and do a complete checkout, 
before performing the remaining steps as outlined above.

I haven't tried freebsd-update at all, I've always done my upgrades 
using the source, I do find it strange that the new kernel doesn't 
identify itself as being newer than the previous kernel.

And why must freebsd-update fiddle with the UNAME_* env vars?

-- 
+-------------------------------+------------------------------------+
| Vennlig hilsen,               | Best regards,                      |
| Trond Endrestøl,              | Trond Endrestøl,                   |
| IT-ansvarlig,                 | System administrator,              |
| Fagskolen Innlandet,          | Gjøvik Technical College, Norway,  |
| tlf. mob.   952 62 567,       | Cellular...: +47 952 62 567,       |
| sentralbord 61 14 54 00.      | Switchboard: +47 61 14 54 00.      |
+-------------------------------+------------------------------------+


More information about the freebsd-questions mailing list