Обновление "мира"

Приветствую всех. Сегодня я расскажу о процессе обновления ОС FreeBSD. Ведь настает тот момент, когда текущая версия устарела или была выпущена важная заплатка, необходимая для корректной работы сервера. Конечно, выпущенные заплатки можно ставить без пересборки ядра и всей системы, но не всегда такое возможно :).

В данный момент команда uname у меня выводит следующую информацию:

# uname -a
FreeBSD srv-home.local 7.3-RELEASE-p2 FreeBSD 7.3-RELEASE-p2 #0: Sun Aug 15 12:34:26 YEKT 2010
chihpih@srv-home.local:/usr/obj/usr/src/sys/GATEWAY  i386

Итак, приступим... Обновляться будем через cvs. Для этого берем и правим файл standard-supfile из /usr/share/examples/cvsup. Я скопировал его в домашнюю папку root и назвал sys-supfile. После правки у меня он получился такого содержания:

# Хост, к которому будем подключаться
# Список доступных серверов можно посмотреть в хэндбуке
*default host=cvsup4.ru.freebsd.org
# Директория, в которой CVSup будет хранить служебную информацию
*default base=/var/db
# Место где будут храниться исходные файлы системы
*default prefix=/usr
# Ветка, до которой будем обновляться
*default release=cvs tag=RELENG_7_3
*default delete use-rel-suffix
# Сжимать передаваемый трафик
*default compress
# Обновляем все дерево исходников
src-all

После того как файл будет готов, можно приступить к обновлению дерева исходных текстов. Для этого выполняем следующую команду.

# csup -L 2 /root/sys-supfile

Обновление 23.05.2013. Поскольку распространение дерева портов и исходных текстов самой системы через CVS прекращено, то начальный этап обновления системы стал иметь другой сценарий. Сначала необходимо установить Subversion. Сделать это, можно используя систему портов (/usr/ports/devel/subversion) или используя пакеты (pkg_add -r devel/subversion). После установки скачиваем исходники такой командой (список SVN зеркал можно посмотреть в хэндбуке):

# svn checkout svn://svn0.us-east.freebsd.org/base/releng/7.3 /usr/src

В дальнейшем обновление исходников необходимо осуществлять так:

# svn up /usr/src

Чтобы обновить исходники до другой ветки, например до 8-ой, нужно либо выкачать их заново или если они уже были выкачены через SVN выполнить:

# svn switch svn://svn0.us-east.freebsd.org/base/releng/8.3 /usr/src

Дожидаемся завершения обновления исходных файлов системы и топаем собирать мир, и ядро. Предполагается, что конфигурационный файл для сборки ядра у вас уже имеется. Если же нет, то берете его в этой папке - /usr/src/sys/ARCH/conf (где ARCH, архитектура системы, ну там i386, amd64 или еще что, там у вас). Конфигурационный файл GENERIC я обычно копирую в домашнюю папку рута, переименовываю и создаю символическую ссылку на него в выше указанной директории, мне так удобнее :).
Теперь можно собирать мир, а за ним и ядро:

# cd /usr/src
# make buildworld
...
Сборка мира
...
# make buildkernel KERNCONF=EXAMPLE
...
Сборка ядра
...

Для ускорения сборки ядра и мира можно использовать многопоточную сборку, например так:

# make -j4 buildworld
# make -j4 buildkernel KERNCONF=EXAMPLE

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

# make installkernel KERNCONF=EXAMPLE

Перезагружаемся в однопользовательский режим и монтируем файловые системы.

# mount -u /
# mount -a -t ufs

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

# mergemaster -p

После того, как мастер завершит свою работу, можно ставить новый "мир" :)

# cd /usr/src
# make installworld

После установки сравниваем конфигурационные файлы с новыми.

# mergemaster

Некоторые пояснения к работе мастера. Если файлы не совпадают, то на экран будет выведена информация о том, какие строки будут удалены, а какие будут добавлены. В конце вывода этой информации будет предложено несколько действий:

  • i - установить новый файл и удалить старый
  • d - удалить новый файл и оставить старый
  • m - сравнить файлы построчно
  • v - снова вывести различия в файлах

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

  • ed - редактировать обе версии, каждая отображается под своим заголовком
  • eb - редактировать обе версии
  • el или e1 - редактировать версию файла слева
  • er или e2 - редактировать версию файла справа
  • e - игнорировать обе версии файла и создать свою
  • l или 1 - использовать версию файла слева
  • r или 2 - использовать версию файла справа
  • s - включить общие строки
  • v - включить общие строки (+вывод служебной инфы в консоль)
  • q - выход
  • ? - вывести данную справку

После правки вас спросят - что делать с получившимся файлом:

  • i - установить полученный файл
  • r - откатить изменения
  • v - просмотреть полученный файл

После сравнения всех конфигурационных файлов, удаляем старые файлы системы:

# make delete-old

Если такие файлы найдутся, то будет выдан запрос на подтверждение удаления этих файлов. Если они вам не нужны, то можете давать положительный ответ. При обновлении на новую ветку (например, с 7 до 8) таких вопросов может быть очень много, и чтобы не тратить время на ответы можно выполнить эту команду вот так:

# yes | make delete-old

Теперь перезагружаемся в многопользовательский режим. После загрузки нужно будет очистить систему от старых библиотек:

# cd /usr/src
# make delete-old-libs

Если найдутся старые библиотеки, то будет выдан запрос по аналогии с командой make delete-old.
Ну вот, система обновлена, посмотрим текущую информацию о ней:

# uname -a
FreeBSD srv-home.local 7.3-RELEASE-p3 FreeBSD 7.3-RELEASE-p3 #0: Sun Nov 21 21:02:20 YEKT 2010
chihpih@srv-home.local:/usr/obj/usr/src/sys/GATEWAY  i386

Готово, систему обновили, теперь можно спокойно отдыхать :).

Гость (не проверено)

บทความนี้เกี่ยวกับการจัดดอกไม้งานศพ เป็นประโยชน์สุดๆ


กำลังค้นหาข้อมูลเรื่องนี้อยู่พอดี


ถือว่าเจอบทความดีๆ เลย


ใครที่กำลังเตรียมตัวจัดงานศพให้คนสำคัญควรอ่านจริงๆ





Also visit my website ... บริการจัดงานศพ ราคา

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Яндекс.Метрика