FreeBSD 10 удаленное обновление ядра и мира

Дата | 30.07.2015

Частенько приходится удаленно в ДЦ пересобирать мир и ядро системы.
Решил написать шпаргалку для себя.
Удаленное обновления мира и ядра системы FreeBSD.

# cat /etc/make.conf
# Для процессора Intel Xeon E5-1650v2
CPUTYPE?=nocona
NO_PROFILE=true
# Опция компиляции
CFLAGS= -O -pipe
# Сколько по умолчанию реализовывать потоков для компиляции.
MAKE_JOBS_NUMBER=6
NO_PROFILE=true
NO_CPU_CFLAGS=false
NO_CPU_COPTFLAGS=false
# Названия ядра
KERNCONF=MY_CORE_дата_создания_файла
# отключаем ненужные компоненты.
NO_GAMES=true
NO_INET6=true
NO_BLUETOOTH=true
NO_SHAREDOCS=true
WITHOUT_IPV6=yes
# Жестко прописываем какой ветки нам нужен php и апач.
DEFAULT_VERSIONS=php=55
DEFAULT_VERSIONS+=apache=2.2
#DISABLE_VULNERABILITIES=yes
# cat /etc/src.conf
# Отключаем не нужное.
WITHOUT_BLUETOOTH=TRUE
WITHOUT_GAMES=TRUE
WITHOUT_IPV6=yes
NO_SHAREDOCS=true
#NO_WERROR=1

Обновим порты.

# portsnap fetch extract update
# pkg2ng

Для загрузки свежих веток мира системы нам понадобится subversion.

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

Если ветка системы была 8 или 9, то меняем ее сперва.

# svn switch svn://svn.freebsd.org/base/stable/10.1 /usr/src

Скачаем новые исходники.

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

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

# svn update /usr/src/

Смотрим обновленную версию.

# grep -A 2 TYPE= /usr/src/sys/conf/newvers.sh
TYPE="FreeBSD"
REVISION="10.1"
BRANCH="RELEASE-p15"

Приступаем к обновлению.
Удалим старые исходники.

# cd /usr/src/ && rm -rf /usr/obj/

Начнем.
Первым делом пересоберем мир системы.
ключ -j означаем в скольких потоках компилировать.

# cd /usr/src 
# make -j8 buildworld

Пересоберем ядро.
Конфигурационный файл ядра лежит тут /usr/src/sys/amd64/conf/
Стандартное ядро называется GENERIC.
Я обычно делаю так.

cp /usr/src/sys/amd64/conf/GENERIC /usr/src/sys/amd64/conf/MY_CORE_дата_создания_файла

После уже вношу изменения.
коротко, что я меняю в ядре.
название ядра

ident           MY_CORE_дата_создания_файла
Отключаю проверку ошибок сборки.
#makeoptions    DEBUG=-g
IPV6
#options        INET6
NFS систему и MSDOS
#options        NFSCL                  
#options        NFSD                    
#options        NFSLOCKD
#options        NFS_ROOT
#options        MSDOSFS 
Отключаю поддержку звука, это сервер, а не игровой комп.
# Sound support
#device         sound           
#device         snd_cmi         
#device         snd_csa         
#device         snd_emu10kx 
#device         snd_es137x 
#device         snd_hda 
#device         snd_ich
#device         snd_uaudio
#device         snd_via8233
# Firewal
options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=10
options         IPDIVERT
options         DUMMYNET
options         IPFIREWALL_DEFAULT_TO_ACCEPT
options         HZ=4000
# Jail - это если нам понадобится в будущем поднять на сервере впску и установить лимиты на впску.
options         RACCT
options         RCTL
# TMP FS - уменьшаем нагрузку с дисковой подсистемы, выводим в память.
options         TMPFS

Компилируем ядро.

# make -j6 buildkernel KERNCONF=MY_CORE_дата_создания_файла

Установка ядра.

# make installkernel KERNCONF=MY_CORE_дата_создания_файла

Так как мы все это делаем удаленно, то не стоит перезагружаться, иначе просто потеряем связь с сервером.
Я просто останавливаю все сервисы на сервере, кроме ssh и сети, начинаю устанавливать мир.
Так как мы еще находимся в директории /usr/src, то продолжаем.
Перечитает, установит исходники, будут заданы вопросы, применить изменения к файлу или нет, ну типа того.

# mergemaster -p

Устанавливаем.

# make installworld

Запускаем перечитывания файлов, если вы меняете ветку, то готовьтесь к долгой и мутной работе по пересмотру всех системных файлов.

# mergemaster
  • — mergemaster помечаются строки, которые собирается удалить.
  • + mergemaster помечаются строки, которые будут добавлены.
  • А так же.

  • i — Этот ключ означает, новые конфигурационные файлы установить.
  • d — Этот ключ означает, временные конфигурационные файлы удалить.

После установки и обновления конфигурационных файлов системы, запускаем чистку.

# yes | make delete-old
# yes | make delete-old-libs

Перезагружаем систему.

# shutdown -r now

Смотрим версию мира.

# uname -rms
FreeBSD 10.1-RELEASE-p15 amd64

Одна мысль на “FreeBSD 10 удаленное обновление ядра и мира

  1. Alex V. Petrov

    С ядром можно поступить так (пример для CURRENT):
    include GENERIC

    ident CUSTOMNAME

    # For full debugger support use (turn off in stable branch):
    nooptions DDB # Support DDB.
    nooptions GDB # Support remote GDB.
    nooptions DEADLKRES # Enable the deadlock resolver
    nooptions INVARIANTS # Enable calls of extra sanity checking
    nooptions INVARIANT_SUPPORT # Extra sanity checks of internal structures, required by INVARIANTS
    nooptions WITNESS # Enable checks to detect deadlocks and cycles
    nooptions WITNESS_SKIPSPIN # Don’t run witness on spinlocks for speed
    nooptions MALLOC_DEBUG_MAXZONES # Separate malloc(9) zones

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

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