Обновление FreeBSD
Для начала обновляем исходные коды.
Редактируем /usr/share/examples/cvsup/stable-supfile
Приводим его, примерно к такому виду:
# Выбираем ближайший cvsup сервер. *default host=cvsup2.ru.FreeBSD.org *default base=/var/db *default prefix=/usr # Качаем исходные тексты ветки 8. Если надо 7, 6, 5 и т.д., то меняем на # "RELENG_7", "RELENG_6", "RELENG_5" соответственно. # Если не указывать версию в ветке (RELENG_8), то будут скачиваться исходники # последней доступной версии, которая не обязательно может быть STABLE *default release=cvs tag=RELENG_8 *default delete use-rel-suffix # Включаем сжатие трафика *default compress # Качаем полное дерево исходников src-all
Запускаем синхронизацию исходных текстов:
# csup -g -L2 /usr/share/examples/cvsup/stable-supfile
По окончании:
# cd /usr/src/ # rm -rf /usr/obj
Теперь запускаем непосредственно обновление:
# make -j4 -s buildworld
Если всё закончится удачно, увидим следующее:
-------------------------------------------------------------- >>> World build completed on Fri Nov 18 20:44:49 UTC 2011 --------------------------------------------------------------
Далее собираем ядро. В параметре KERNCONF, указывается название нашего ядра, если таковое имеется, если данная опция не установлена, будет собрано ядро GENERIC, используемое системой FreeBSD по умолчанию.
# make -j4 -s buildkernel KERNCONF=MYKERNEL
Процесс не такой длительный, как предыдущий. По окончании увидим такое сообщение:
------------------------------------------------------------------------ >>> Kernel build for GENERIC completed on Mon Nov 21 09:53:04 UTC 2011 ------------------------------------------------------------------------
Теперь можно устанавливать скомпилированное ядро:
# make installkernel KERNCONF=MYKERNEL
При установке нового ядра происходит слудующее: новое ядро копируется в папку /boot/kernel
, текущее перемещается в /boot/kernel.old
.
В случае, если с новым ядром система не запустится, можно загрузиться в предыдущую версию из командной строки.
Ребутимся и переходим в Single user mode.
# mount -u / # Перемонтируем корневой раздел в режим чтение/запись # mount -a # Монтируем все что прописано в /etc/fstab
Выполняем команду:
# mergemaster -p
mergemaster сравнивает уже установленные файлы конфигурации с теми которые предлагаются новой версией FreeBSD.
- d - оставить старый вариант файла, удалив новый;
- i - установить новый, удалив старый;
- m - построчное сравнение старого и нового файла;
- v - сравнить файлы еще раз.
При выборе построчного сравнения. на экран быдут выведены обе версии файла, слева — содержимое старого файла, справа — нового. Возможные варианты действий:
- l - использовать вариант слева, то есть старый;
- r - использовать вариант справа, то есть новый;
Установка свежих версий конфигов, не всегда является тем, что нужно, поскольку в процессе работы вы могли настраивать какие-то конфиги под себя и выбрав установку новой версии файла, все сделанные изменения в старом файле будут утеряны.
После завершения работы над конфигами, устанавливаем мир:
# make installworld
Ребутимся и проверяем что получилось:
# uname -r 8.2-RELEASE-p1
было 8.2-RELEASE
Удаляем старые библиотеки:
# cd /usr/src/ # make delete-old-libs
Усё!