Доброго времени суток! В данной статье мы расскажем, как обновить nanobsd инсталляцию pfSense версии 2.3.4 на полный релиз новой pfSense версии 2.4.0. Важно! Данная статья относится только к 64-битным инсталляциям pfSense. Владельцы 32-битных инсталляций на устройствах семейства ALIX более не будут получать номерных обновлений pfSense (последняя актуальная 32-бит версия - pfSense 2.3.4), но еще в течение года будут получать обновления определений безопасности и найденных уязвимостей системы.

Мы же проведем этот мануал на платформе APU. Итак, поехали:

1. Проверяем с какого раздела грузится наш роутер.

  • Заходим в Diagnostics > NanoBSD
  • Находим Bootup Slice
    • Запоминаем имя диска. Это несколько символов перед 's1' или 's2' (напр. ada0, da0, sda0 итп.). Далее в тексте мануала будет использоваться 'XXXs1' или 'XXXs2', Вам нужно будет подставлять имя своего диска вместо XXX.
    • Если Bootup Slice заканчивается на s1, то переходим сразу к следующему разделу мануала.
    • Если Bootup Slice заканчивается на s2, это значит, что ОС грузится со второго раздела диска. Меняем это с помощью следующих шагов:
  • Нажимаем Duplicate XXXs2 -> XXXs1
  • Нажимаем Switch Slice для изменения раздела загрузки на XXXs1
  • Перезагружаем устройство через Diagnostics > Reboot.

2. Меняем репозиторий обновлений.

  • Переходим в Sysyem > Update, вкладка Update Settings
  • Выбираем Next Major Version (2.4) из списка Branch
  • Сохраняем Save

3. Меняем название для пакета обновления

  • Подключаемся к устройству через SSH
  • Выбираем пункт 8
  • Выполняем следующие команды:
pkg set -y -o security/pfSense-base-nanobsd:security/pfSense-base pfSense-base-nanobsd
pkg set -y -n pfSense-base-nanobsd:pfSense-base pfSense-base-nanobsd
_

4. Меняем платформу

  • Меняем тип платформы, выполнив команду в shell
echo pfSense > /etc/platform
_

5. Меняем конфигурацию файловой системы

На этом этапе второй и конфигурационный разделы должны быть удалены, а первый раздел займет все место хранилища. Все команды выполняются в shell через ssh.

  • Меняем /etc/fstab
sed -i .bkp -e 's/ro,sync/rw/' /etc/fstab
_
  • Удаляем второй раздел
gpart delete -i 2 XXX
_
  • Подготавливаем файловую систему, чтобы она разрослась на весь диск после ребута
touch /root/force_growfs
_
  • Перемещаем конфигурационный раздел на основной
mkdir -p /mnt/cf
sed -i '' -e 's,[[:blank:]]/cf, /mnt/cf,' /etc/fstab
umount -f /cf
mount /mnt/cf
cp -Rp /mnt/cf/* /cf
sync; sync
umount -f /mnt/cf
_
  • Удаляем конфигурационный раздел
gpart delete -i 3 XXX

_
  • Чистим /etc/fstab
sed -i  -e '//mnt/cf/d' /etc/fstab
_
  • Убеждаемся, что первый раздел активен и является загрузочным
gpart set -a active -i 1 /dev/XXX boot0cfg -s 1 /dev/XXX
_

6. Запускаем обновление

Обновление так же запускаем, подключившись по ssh к устройству и выбрав 13й пункт меню.

7. Использование оперативной памяти для снижения циклов записи на основном хранилище

  • Переходим в System > Advanced, вкладка Miscellaneous
  • Отмечаем Use RAM disks
  • Настраиваем размер временных директорий /tmp и /var в соответствии с размером оперативной памяти устройства