notby.NET Logo

Обновление FreeBSD 13.2 до FreeBSD 14

На текущий момент у меня FreeBSD 13.2 и я не хочу затягивать с обновлением до последней версии. Не так давно вышла в релиз новая версии FreeBSD 14. В нее добавили новые возможности, обновили базовые приложения и сервисы. Приступаем к обновлению до версии FreeBSD 14.

Во время обновления может что-то пойти не так и будет потерян доступ к серверу через SSH. Например, если сервер использует не стандартное ядро, то после обновления будет GENERIC ядро. Имей это в виду, но если операционная система без модификаций то все должно пройти нормально.

1. Установка всех обновлений для текущей версии

Устанавливаем вначале все обновления безопасности для текущею версию FreeBSD 13.2

freebsd-update fetch install

Когда будет выводится сообщение (END) нажимай Q на клавиатуре, чтобы пролистать список.

FreeBSD 13.2 обновлена до последней версии используя команду "freebsd-update fetch install".

2. Запуск обновления до FreeBSD 14

До запуска процесса обновления можно сменить текстовый редактор vi по умолчанию на другой. Например, сменяем на ee.

setenv EDITOR ee

Во время обновления если понадобится ручное редактирование файла, будет вызыватся текстовый редактор ee.

freebsd-update upgrade -r 14.0-RELEASE

Установщик спросит разумно что будут установлены компоненты kernel/generic src/src world/base, а компоненты debug и lib32 не будет установлены, отвечаем yes

Обновление до версии FreeBSD 14 используя команду "freebsd-update upgrade -r 14.0-RELEASE". На вопрос Does this look reasonable? ответ yes.

Обновление будет долгим, дожидаемся окончания процесса.

3. Ручное редактирование файлов

Во время обновления автоматически могут не обновится конфигурационные файлы и их необходимо будет обновить вручную. Файл /etc/master.passwd обновится не смог, так как в версии FreeBSD 14 перешли на оболочку sh по умолчания для root. Я не совсем понял заменя переходить на оболочку sh, если csh удобнее для использования.

Файл /etc/master.passwd автоматически обновится не смог. Выведено сообщение "Press Enter to edit this file in vi and resolve the conflicts manually..."

Нажимаем Enter для редактирования файла /etc/master.passwd в тестовом редакторе vi (по умолчанию) вручную.

Файл /etc/master.passwd редактируй очень внимательно, а то пароль от root пользователя может пропасть или сломатся.

Обновление до FreeBSD 14. Редактор vi, изменения в файле /etc/master.passwd (Красным подсвечено, что необходимо удалить).

Изменяем для root оболочку /bin/csh на /bin/sh, путем удаления символа c. Для удаления символа наводим курсор на символ и нажимаем X.

Если необходимо ввести текст, нажимаем клавишу I и редактор перейдет в режим набора текста.

Нажимаем Esc чтобы редактор вернутся в командный режим.

В командном режиме выбираем лишние строку и удаляем их командой dd, для этого нажимаем два раза на D

Файл должен иметь подобный вид после редактирования

Обновление до FreeBSD 14. Редактор vi, Файле /etc/master.passwd отредактирован. Оболочно для root замена на sh.

Файл отредактирован, сохраняем изменения и выходим из редактора vi командой ZZ, для этого зажимаем Shift и нажимаем два раза Z

Далее будут предложены следующий файлы которые не смогли автоматически обновится, обновляем их аналогично по примеру выше.

Если файл /etc/ssh/sshd_config не смог обновится автоматически, с ним тоже нужно быть внимательным. Так как это файл SSH-сервера.

После всех ручных изменений установщик будет показывать как изменится файл и задаст вопрос разумно ли были сделаны изменения в файле, проверяем что все корректно и отвечаем yes.

Обновление до версии FreeBSD 14. Показаны какие изменения будут в файле /etc/master.passwd и задается вопрос "разумны такие изменения?"

После этого будет выведено сообщение To install the downloaded upgrades, run "/usr/sbin/freebsd-update install". (Чтобы установить загруженные обновления, выполните команду "/usr/sbin/freebsd-update install".).

4. Установка обновления FreeBSD 14

freebsd-update install

Процесс установки обновлений запущен, далее программа обновлений сообщит Please reboot and run "/usr/sbin/freebsd-update install" again to finish installing updates. (Пожалуйста, перезагрузитесь и запустите команду "/usr/sbin/freebsd-update install" снова, чтобы завершить установку обновлений.).

Обновление до версии FreeBSD 14. Написана команда "freebsd-update install". Выведено сообщение "Please reboot and run "/usr/sbin/freebsd-update install" again to finish installing updates.".

Перезагружаем сервер

shutdown -r now

Дожидаемся загрузки и запускаем команду

freebsd-update install

В ходе выполнения установки обновлений, программа сообщит что теперь необходимо обновить и переустановить все установленные приложения в системе.

Обновление до версии FreeBSD 14. Выведено сообщение 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. Оно означает что необходимо перестановить все программы в системе.

Статьи на тему как обновлять порты или пакеты.

Обновляем приложения через пакеты, параметр -f указывает что необходимо переустановить все приложения в системе

pkg upgrade -f

Или обновляем через порты

portmaster -af

Дожидаемся окончание обновления всех приложений в системе и запускаем команду для завершения установки обновления FreeBSD 14

freebsd-update install
Обновление до версии FreeBSD 14 успешно завершено.

Перезагружаемся

shutdown -r now

Обновление до версии FreeBSD 14 успешно произведено.

uname -v
FreeBSD 14.0-RELEASE-p3 #0: Mon Dec 11 04:56:01 UTC 2023

Проверяем что все программы и сервисы работают корректно, ошибок после установки обновлений не появилось.

5. Очистка каталога обновлений

Рабочий каталог находится по пути /var/db/freebsd-update/, в нем хранятся рабочие файлы всех обновлений для возможности откатится на старую версию и так далее. Этот каталог не очищается и хранит все данные обновления с момента первого обновления, из-за этого он может занимать значительный объем.

Перейдем в каталог обновлений

cd /var/db/freebsd-update/

Посмотрим объем занимаемых файлов и каталог

du -h -d 1

У меня этот каталог c момента установки FreeBSD 9 и с промежуточными обновлениями до FreeBSD 14 разбух до ∼ 9 Гб.

Каталог /var/db/freebsd-update/ необязательно очищать после каждого обновления системы.

Очищаем содержимое каталога обновлений FreeBSD

rm -r /var/db/freebsd-update/*

Процесс может быть немного долгий, если каталог занимает большой объем. Дожидаемся очистки каталога.