Обновление FreeBSD - 2
В прошлой статье мной рассматривался алгоритм установки обновлений безопасности серверной операционной системы FreeBSD в пределах одного релиза. Сейчас же я опишу процесс обновления FreeBSD с младшего релиза на старший. |
Надеюсь, не стоит напоминать, что перед выполнением данной операции необходимо иметь бекап ваших конфигурационных файлов. Выполнить его вы можете так, как описано мной тут: ссылка.
Итак, имеем сервер под управлением FreeBSD 10.3-RELEASE:
# uname -r 10.3-RELEASE-p11
Задача: выполнить её обновление до выпущенной 11 октября 2016 года FreeBSD 11-RELEASE. Произвести это действие нам поможет команда freebsd-update
, которую мы дадим со следующими параметрами:
# freebsd-update -r 11.0-RELEASE upgrade
В процессе её выполнения будет автоматически проанализирована и собрана вся необходимая для проведения обновления информация о текущем состоянии системы:
# freebsd-update -r 11.0-RELEASE upgrade Looking up update.FreeBSD.org mirrors… 4 mirrors found. Fetching metadata signature for 10.3-RELEASE from update6.freebsd.org… done. Fetching metadata index… done. Inspecting system… done. The following components of FreeBSD seem to be installed: kernel/generic src/src world/base world/lib32 The following components of FreeBSD do not seem to be installed: world/doc world/games Does this look reasonable (y/n)? y
После вашего утвердительного ответа на данном этапе будет осуществлена загрузка из сети всех необходимых файлов. Если на своём сервере вы используете собственное (кастомное) ядро, отличное от GENERIC, вы увидите следующее предупреждение:
WARNING: This system is running a "mykernel" kernel, which is not a kernel configuration distributed as part of FreeBSD 10.3-RELEASE. This kernel will not be updated: you MUST update the kernel manually before running "/usr/sbin/freebsd-update install".
Которое предупреждает вас, что перед выполнением дальнейшего обновления вам необходимо будет заново пересобрать своё ядро. Желательно выполнить это “с нуля” – копированием GENERIC в MYKERNEL и последующей настройкой, иначе вы рискуете лишиться использования некоторых новых возможностей. Алгоритм настройки собственного ядра я описал в этой статье.
После загрузки необходимых обновления произойдёт их автоматическое применение:
Fetching metadata signature for 11.0-RELEASE from update6.freebsd.org... done. Fetching metadata index... done. Inspecting system... done. Fetching files from 10.3-RELEASE for merging... done. Preparing to download files... done. Fetching 45558 patches.....10....20.... ....45550.... done. Applying patches... done. Fetching 12076 files... done. Attempting to automatically merge changes in files... done.
Далее, в зависимости от глубины вашей модификации конфигурационных файлов (в основном в каталоге /etc
), вам будет предложено произвести сравнение существующих и скачанных файлов настроек по-умолчанию FreeBSD и их ручное слияние:
The following file could not be merged automatically: /etc/login.conf Press Enter to edit this file in /usr/bin/vi and resolve the conflicts manually...
До данного момента ваша операционная система еще не модифицирована. Все изменения, слияние конфигурационных файлов произошли в отдельном каталоге. Увидев на экране:
To install the downloaded upgrades, run "/usr/sbin/freebsd-update install".
вы можете выполнить первый этап обновления, на котором произойдёт применение обновлений к ядру и его модулям. Выполните команду freebsd-update install
, затем осуществите перезагрузку сервера:
# /usr/sbin/freebsd-update install Installing updates... Kernel updates have been installed. Please reboot and run "/usr/sbin/freebsd-update install" again to finish installing updates. # reboot
После перезагрузки выполните повторно команду freebsd-update install
:
# /usr/sbin/freebsd-update install Installing updates... Completing this upgrade requires removing old shared object files. Please rebuild all installed 3rd party software (e.g., programs installed from the ports tree) and then run "/usr/sbin/freebsd-update install" again to finish installing updates.
по окончании работы которой вас попросят выполнить обновление всех установленных в системе портов и сторонних программ. Последовательность действий будет следующей:
# portsnap fetch update # pkg update -f # pkg audit -F
Данными командами мы выполнили обновление дерева портов (если вы этого никогда не делали, выполните portsnap fetch extract
), обновили программу обслуживания портов pkg
и осуществили обновление базы известных уязвимостей портов. На данном этапе вы увидите предупреждение:
pkg: Warning: Major OS version upgrade detected. Running "pkg-static install -f pkg" recommended
Вас просят обновить pkg
до выполнения каких-либо действий с установленными в система портами. Для собственно их обновления я использую команду portupgrade
из /usr/ports/ports-mgmt/portupgrade
. Окончательная последовательность для завершения обновления FreeBSD до старшего релиза будет следующей:
# pkg-static install -f pkg # portupgrade -vafrR # /usr/sbin/freebsd-update install # reboot
После перезагрузки дадим команды:
# uname -r 11.0-RELEASE-p2 # /usr/sbin/freebsd-update install No updates are available to install. Run '/usr/sbin/freebsd-update fetch' first.
Поставленная задача выполнена.
_______________
По мотивам данной статьи.