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
. (из рассылки [email protected])
Запустим обновление.
#/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