Сборка ядра FreeBSD. Если что-то пошло не так...
# make installkernel KERNCONF=NEW_KERNEL
В основном, процесс сборки, обновления и установки нового ядра FreeBSD проходит довольно гладко. Однако иногда бывает что-то пойдет не так, (увлёкшись чисткой лишнего, можно исключить и что-то нужное из состава ядра). Кстати, и на моей практике такое случалось пару раз. Ситуация осложнялась тем, что сервера находились удаленно и физического доступа к консоли сервера для принятия мер по оживлению системы нет.
Тут выхода два - либо самому ехать, либо объяснять по телефону как и что нужно сделать. И успех этой операции полностью зависит от вменяемости человека на другом конце провода. Собственно поэтому и решил написать статью, всегда проще дать ссылку, чем объяснять человеку на слух. Заодно расскажу про некоторые меры предосторожности при сборке нового ядра во FreeBSD.
Конечно желательно иметь KVM доступ к серверу, тогда и проблема частично снимается, но, как правило такого счастья нет.
Допустим, что ваше новое ядро не стартануло, или завелось, но счастья всё-равно нет (например по недосмотру не включили в ядро вашу сетевую, или поставили правило блокирующее весь трафик по умолчанию, да много чего может быть). В результате сервер не отзывается. Отчаиваться не стоит - можно загрузить старую версию ядра:
Перезагружаем сервер, на загрузочном экране консоли, выбираем 6-й пункт, Escape to loader prompt, после чего появится приглашение командной строки.
На консоли вводим:
OK unload # выгрузка текущего ядра OK boot kernel.old # загружаем старое ядро
Ну а теперь немного о подстраховке. Желательно, на самом первом этапе работы с ядром системы, скопировать рабочую версию ядра (сразу после установки ядро будет GENERIC) в отдельную папку, например:
# cp -Rp /boot/kernel /boot/kernel.good
В результате у нас всегда будет возможность загрузить kernel.good через системный загрузчик, как было описано выше.
Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.