Установка тестового ядра, FreeBSD
Не так давно появились данные о новых уязвимостях в некоторых версиях ядер, и мне пришлось обновить несколько критичных серверов.
О том, как собирать и устанавливать ядро в FreeBSD я уже писал не один раз, со всякими приметками и конфигурациями. Главное о чём я хочу написать в статье — это, как себя обезопасить — если вы это делаете удалённо.
Для этого нужно всего лишь что бы под рукой был KVM свич или кто-либо имел возможность физически нажать на сервере ‘reset’.
Идея в заголовке этой статьи — это сборка и установка ядра в «песочнице» или простыми словами, которые более правильно объясняют идею — это установка в отдельную директорию, не затрагивающую нынешнее «рабочее» ядро с последующей попыткой загрузки с него. А в случае неудачи — после ‘reseta’ — возвратом на старое ядро.
Итак, на этапе команд:
# cd /usr/src # make buildkernel KERNCONF=MYKERNEL |
Следующей командой будет создание тестовой директории и установка ядра в неё:
# mkdir /boot/test_kernel # make -s installkernel KERNCONF=MYKERNEL DESTDIR=/boot/test_kernel |
Теперь, после того как тестовое ядро установлено, нужно сделать так что бы система единоразово загрузилась с него при следующей загрузке. Для этого выполним такую команду:
# nextboot -k test_kernel/boot/kernel |
!!! Обратите внимание на то, что в использовании команды nextboot — необходимо вводить путь относительно каталога /boot/.
После чего производим перезагрузку системы:
# shutdown -r now |
Проверим имя ядра:
# uname -i MYKERNEL |
Далее, смотрим на стабильность новоиспеченного ядра. Гоняем, тестируем.
Если всё, ок — Бекапим рабочее ядро. И подсовываем на место основного ядра — тестовое:
# mv /boot/kernel /boot/kernel_work # mv /boot/test_kernel/boot/kernel /boot/kernel # reboot |
После загрузки — у нас по умолчанию будет загружено наше бывшее «тестовое» ядро, как основное ядро которое будет загружаться всегда.