我安装了 FreeBSD 9.1-RELEASE,在使用 freebsd-update 将二进制文件升级到 9.2-RELEASE 后,我检查的所有文件在 9.2-RELEASE-p4 中均正确无误。例如:
内核包含新版本:
# 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 9.2-RELEASE-p4
/etc/hosts第一行显示已升级到9.2:
# $FreeBSD: release/9.2.0/etc/hosts 109997 2003-01-28 21:29:23Z dbaker $
我在另一个论坛上询问并证实:
我从未编译过内核,并且没有 /usr/src 和 /usr/obj 文件夹。
默认的 /etc/profile 没有变化,特别是我从未定义 UNAME_* vars 。
我也尝试过“unsetenv UNAME_r”
然而,uname 不知何故显示了错误的版本 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
那么 uname 从哪里获取版本号?哪些文件可能未升级?谢谢!
答案1
FreeBSD uname
正在使用sysctl
值来填充其输出,因此除了内核之外没有需要更新的文件。
sysctl
以下是选项的对应键uname
(来自usr.bin/uname/uname.c):
-i
:内核标识-m
:硬件机器-n
:kern.主机名-p
:硬件.machine_arch-r
:内核操作系统发布版本-s
或者-o
:内核操作系统类型-v
:内核版本
看来你的实际内核不是你想象的那样。你可以使用以下命令检查正在使用的内核文件:
# sysctl kern.bootfile