Обновление FreeBSD

Материал из megapuper
Перейти к: навигация, поиск

Для начала обновляем исходные коды.

Редактируем /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

Усё!