Обновление FreeBSD

1. Делаем backup системы.

2. Обновляем исходные коды системы.

Переходим в директорию /usr/share/examples/cvsup/

# cd /usr/share/examples/cvsup/

Редактируем файл stable-supfile

# ee stable-supfile
*default release=cvs tag=RELENG_8
*default host=cvsup2.ru.FreeBSD.org

Примечание. Насчет того, какие бывают RELENG можно узнать в Handbook FreeBSD на странице A.7.1. Теги ветвей

Примечание. При обновлении с версии на версию отключим все лишнее в файле /boot/loader.conf. (из рассылки freebsd@opennet.ru)

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

#/usr/bin/csup -g -L 2 /usr/share/examples/cvsup/stable-supfile

Внимание! Начиная с 2008 года, сообщество FreeBSD дружно забило на CVS, и теперь исходники лучше получать при помощи SVN.

Для начала надо установить порт /usr/ports/devel/subversion-freebsd

#cd /usr/ports/devel/subversion-freebsd 
# make install clean

Затем получить исходники:

#svn checkout svn://svn.freebsd.org/base/stable/8 /usr/src

3. Подготовка к компиляции базовых компонентов системы.

При перестроении частей системы они помещаются в каталоги, которые (по умолчанию) находятся в /usr/obj. Структура повторяет структуру /usr/src.

# cd /usr/obj

Вы можете ускорить выполнение процесса make buildworld и, возможно, избавить себя от некоторой головной боли, связанной с зависимостями, удалив этот каталог.

На некоторых файлах из /usr/obj могут быть установлены специальные флаги (обратитесь к chflags(1) за дополнительной информацией), которые сначала должны быть сняты.

# chflags -R noschg *
# rm -rf *

Далее по рекомендации Handbook FreeBSD

# cd /usr/src
# make cleandir
# make cleandir

Редактируем make.conf и src.conf

Выключите генерацию профилирующего кода (установив »NO_PROFILE=true» в файле /etc/make.conf). Вам это скорее всего никогда не понадобится.

Также в /etc/make.conf установите значение CFLAGS во что-то типа -O -pipe. Оптимизация -O2 выполняется гораздо медленнее, а разница между -O и -O2 обычно несущественна. -pipe позволяет компилятору использовать для связи вместо временных файлов программные каналы, что уменьшает обращение к диску (за счет оперативной памяти).

#ee /etc/make.conf
NO_PROFILE=true
CFLAGS= -O -pipe

Перевод man make.conf(5) доступен на этом сайте по ссылке перевод man make.conf(5).

Примерный файл /etc/src.conf

#cat /etc/src.conf
WITHOUT_BIND=TRUE
WITHOUT_BLUETOOTH=TRUE
WITHOUT_GAMES=TRUE
WITHOUT_GDB=TRUE
WITHOUT_GPIB=TRUE
WITHOUT_I4B=TRUE
WITHOUT_INET6=TRUE
WITHOUT_INFO=TRUE
WITHOUT_IPFILTER=TRUE
WITHOUT_IPX=TRUE
WITHOUT_NIS=TRUE
WITHOUT_SENDMAIL=TRUE
WITHOUT_USB=TRUE
WITHOUT_ZFS=TRUE

Перевод man src.conf(5) доступен на этом сайте по ссылке перевод man src.conf(5).

4. Компиляция базовых компонентов системы.

Имеется возможность задавать команде make параметр -j, который приводит к запуску нескольких одновременно работающих процессов. Наиболее полезно использовать это на многопроцессорных машинах. Однако, так как процесс компиляции больше всего требователен к подсистеме ввода/вывода, а не к производительности процессора, это можно использовать и на машинах с одним процессором.

# cd /usr/src
# make -j4 buildworld

5. Компиляция и установка нового ядра.

Примечание. При обновлении системы самым простым и надежным способом является компиляция и установка ядра на основе GENERIC. Хотя в GENERIC могут оказаться не все необходимые для работы вашей системы устройства, в нем имеется все необходимое для перезагрузки вашей системы обратно в однопользовательский режим. Это является хорошей проверкой на правильность работы новой системы. После загрузки с ядром GENERIC и проверки работоспособности системы вы можете построить новое ядро на основе вашего обычного конфигурационного файла ядра

Если вы хотите построить собственное ядро и уже подготовили файл конфигурации, просто используйте KERNCONF=MYKERNEL следующим образом:

# cd /usr/src
# make -j4 buildkernel KERNCONF=MYKERNEL
# make installkernel KERNCONF=MYKERNEL
# reboot

Примечание: Можно в файл /etc/make.conf добавить строку вида KERNCONF=MYKERNEL и тогда команды будут выглядеть так:

# cd /usr/src
# make -j4 buildkernel
# make installkernel
# reboot

6. Подготовка к установке новых версий системных программ

Переходим в однопользовательский режим

#boot -s
''single user''
# fsck -p
# mount -u /
# mount -a -t ufs
# swapon -a

или останавливаем по максимуму службы

Делаем копию /etc

# cp -Rp /etc /etc.old

Далее подготавливаются конфигурационные файлы, задействованные в установке нового мира, например, /etc/make.conf и другие.

# mergemaster -p

Несколько слов о работе этой утилиты. Она сравнивает уже установленные файлы конфигурации с теми которые предлагаются новой версией FreeBSD. Если есть отличия, то на экране появляется сообщение об этом. Первой строкой в нем идет имя файла, который не соответствует новым требованиям, а ниже сами отличия. Знаком «-» помечаются строки, которые утилита собирается удалить, а «+» — которые будут добавлены.

В конце предлагаются следующие варианты:

   d - удалить предлагаемый вариант и оставить старый;
   i - установить предлагаемый вариант, удалив старый;
   m - сравнить построчно старый и предлагаемый вариант;
   v - посмотреть отличия в файлах снова.

Чаще всего можно жать i, но иногда это может привести к замене ваших настроек на дефолтные. Так что будте внимательны. Например, у меня установлен exim, а mergemaster предложил вернуть файл /etc/mail/mailer.conf в первоначальное состояние. Это мне не нужно, поэтому выбираю m.

Начинается построчное сравнение файлов. Экран делится на две части, слева строки из старого файла, а справа из предлагаемого. При нажатии на «Enter» выводятся возможные варианты последующих действий:

   l - использовать вариант слевой стороны;
   r - использовать вариант справой стороны;

и т.д.

В моем случае, чтобы оставить старые настройки жмем «l». После того как сравнение кончилось, предлагаются следующие варианты:

   i - установить получившийся файл;
   r - повторить сравнение снова;
   v - просмотреть получивщийся файл.

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

   d - удалить предлагаемый вариант и оставить старый;
   i - установить предлагаемый вариант, удалив старый.

И в таком же духе сравниваются все файлы.

7. Установка новых версий системных программ

# cd /usr/src
# make installworld

8. Обновление файлов, не обновленных по команде make installworld

# mergemaster

(лично я делаю mergemaster -iU, это позволяет установить отсутствующие
конфигурационные файлы автоматически, а также автоматически заменяет
конфигурационные файлы, которые не были изменены пользователем).

# reboot

Источник : http://www.arg.su/ru-RU/update_freebsd

Запись опубликована в рубрике FreeBSD. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не спамер This plugin created by Alexei91