Назад | Перейти на главную страницу

где uname получает номер версии в FreeBSD RELEASE?

Я установил FreeBSD 9.1-RELEASE, после бинарного обновления до 9.2-RELEASE с помощью freebsd-update все файлы, которые я проверил, правильно находятся в 9.2-RELEASE-p4. Например:

  1. ядро содержит новую версию:

    # 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
    
  2. первая строка файла / etc / hosts показывает, что он обновлен до 9.2:

    # $FreeBSD: release/9.2.0/etc/hosts 109997 2003-01-28 21:29:23Z dbaker $
    

Я спросил на другом форуме и убедился, что:

  1. Я никогда не компилировал ядро, и у меня нет папок / usr / src и / usr / obj.

  2. по умолчанию / etc / profile не изменился, в частности, я никогда не определял переменные UNAME_ *.

  3. Я также пробовал 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 берет номер версии? Какие файлы могли не быть обновлены? Спасибо!

FreeBSD uname использует sysctl значения для заполнения его вывода, поэтому нет файла для обновления, кроме ядра.

Вот соответствующие sysctl ключ к uname варианты (от usr.bin / uname / uname.c):

  • -i : kern.ident
  • -m : hw.machine
  • -n : kern.hostname
  • -p : hw.machine_arch
  • -r : kern.osrelease
  • -s или -o : kern.ostype
  • -v : kern.version

Кажется, ваше настоящее ядро ​​не то, что вы думаете. Вы можете проверить используемый файл ядра с помощью:

# sysctl kern.bootfile