Обновление FreeBSD 13.2 до FreeBSD 14
На текущий момент у меня FreeBSD 13.2 и я не хочу затягивать с обновлением до последней версии. Не так давно вышла в релиз новая версии FreeBSD 14. В нее добавили новые возможности, обновили базовые приложения и сервисы. Приступаем к обновлению до версии FreeBSD 14.
Во время обновления может что-то пойти не так и будет потерян доступ к серверу через SSH. Например, если сервер использует не стандартное ядро, то после обновления будет GENERIC ядро. Имей это в виду, но если операционная система без модификаций то все должно пройти нормально.
1. Установка всех обновлений для текущей версии
Устанавливаем вначале все обновления безопасности для текущею версию FreeBSD 13.2
freebsd-update fetch install
Когда будет выводится сообщение (END) нажимай Q на клавиатуре, чтобы пролистать список.
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
Обновление будет долгим, дожидаемся окончания процесса.
3. Ручное редактирование файлов
Во время обновления автоматически могут не обновится конфигурационные файлы и их необходимо будет обновить вручную. Файл /etc/master.passwd обновится не смог, так как в версии FreeBSD 14 перешли на оболочку sh по умолчания для root. Я не совсем понял заменя переходить на оболочку sh, если csh удобнее для использования.
Нажимаем Enter для редактирования файла /etc/master.passwd в тестовом редакторе vi (по умолчанию) вручную.
Файл /etc/master.passwd редактируй очень внимательно, а то пароль от root пользователя может пропасть или сломатся.
Изменяем для root оболочку /bin/csh на /bin/sh, путем удаления символа c. Для удаления символа наводим курсор на символ и нажимаем X.
Если необходимо ввести текст, нажимаем клавишу I и редактор перейдет в режим набора текста.
Нажимаем Esc чтобы редактор вернутся в командный режим.
В командном режиме выбираем лишние строку и удаляем их командой dd, для этого нажимаем два раза на D
Файл должен иметь подобный вид после редактирования
Файл отредактирован, сохраняем изменения и выходим из редактора vi командой ZZ, для этого зажимаем Shift и нажимаем два раза Z
Далее будут предложены следующий файлы которые не смогли автоматически обновится, обновляем их аналогично по примеру выше.
Если файл /etc/ssh/sshd_config не смог обновится автоматически, с ним тоже нужно быть внимательным. Так как это файл SSH-сервера.
После всех ручных изменений установщик будет показывать как изменится файл и задаст вопрос разумно ли были сделаны изменения в файле, проверяем что все корректно и отвечаем yes.
После этого будет выведено сообщение 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" снова, чтобы завершить установку обновлений.).
Перезагружаем сервер
shutdown -r now
Дожидаемся загрузки и запускаем команду
freebsd-update install
В ходе выполнения установки обновлений, программа сообщит что теперь необходимо обновить и переустановить все установленные приложения в системе.
Статьи на тему как обновлять порты или пакеты.
Обновляем приложения через пакеты, параметр -f указывает что необходимо переустановить все приложения в системе
pkg upgrade -f
Или обновляем через порты
portmaster -af
Дожидаемся окончание обновления всех приложений в системе и запускаем команду для завершения установки обновления FreeBSD 14
freebsd-update install
Перезагружаемся
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/*
Процесс может быть немного долгий, если каталог занимает большой объем. Дожидаемся очистки каталога.