RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
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, это позволяет установить отсутствующие
конфигурационные файлы автоматически, а также автоматически заменяет
конфигурационные файлы, которые не были изменены пользователем).