Приветствую всех. Сегодня я расскажу о процессе обновления ОС FreeBSD. Ведь настает тот момент, когда текущая версия устарела или была выпущена важная заплатка, необходимая для корректной работы сервера. Конечно, выпущенные заплатки можно ставить без пересборки ядра и всей системы, но не всегда такое возможно :).
В данный момент команда uname у меня выводит следующую информацию:
Итак, приступим... Обновляться будем через cvs. Для этого берем и правим файл standard-supfile из /usr/share/examples/cvsup.
Я скопировал его в домашнюю папку root и назвал sys-supfile. После правки у меня он получился такого содержания:
После того как файл будет готов, можно приступить к обновлению дерева исходных текстов. Для этого выполняем следующую команду.
Обновление 23.05.2013. Поскольку распространение дерева портов и исходных текстов самой системы через CVS прекращено, то начальный этап обновления системы стал иметь другой сценарий. Сначала необходимо установить Subversion. Сделать это, можно используя систему портов (/usr/ports/devel/subversion) или используя пакеты (pkg_add -r devel/subversion). После установки скачиваем исходники такой командой (список SVN зеркал можно посмотреть в хэндбуке):
В дальнейшем обновление исходников необходимо осуществлять так:
Чтобы обновить исходники до другой ветки, например до 8-ой, нужно либо выкачать их заново или если они уже были выкачены через SVN выполнить:
Дожидаемся завершения обновления исходных файлов системы и топаем собирать мир, и ядро. Предполагается, что конфигурационный файл для сборки ядра у вас уже имеется. Если же нет, то берете его в этой папке - /usr/src/sys/ARCH/conf (где ARCH, архитектура системы, ну там i386, amd64 или еще что, там у вас). Конфигурационный файл GENERIC я обычно копирую в домашнюю папку рута, переименовываю и создаю символическую ссылку на него в выше указанной директории, мне так удобнее :). Теперь можно собирать мир, а за ним и ядро:
Для ускорения сборки ядра и мира можно использовать многопоточную сборку, например так:
Параметр KERNCONF принимает имя файла, в котором находятся параметры сборки ядра.
Когда все собрано, инсталлируем новое ядро.
Перезагружаемся в однопользовательский режим и монтируем файловые системы.
Далее нужно сохранить старые конфигурационные файлы, чтобы при обновлении не потерять их.
После того, как мастер завершит свою работу, можно ставить новый "мир" :)
После установки сравниваем конфигурационные файлы с новыми.
Некоторые пояснения к работе мастера. Если файлы не совпадают, то на экран будет выведена информация о том, какие строки будут удалены, а какие будут добавлены. В конце вывода этой информации будет предложено несколько действий:
Если такие файлы найдутся, то будет выдан запрос на подтверждение удаления этих файлов. Если они вам не нужны, то можете давать положительный ответ. При обновлении на новую ветку (например, с 7 до 8) таких вопросов может быть очень много, и чтобы не тратить время на ответы можно выполнить эту команду вот так:
Теперь перезагружаемся в многопользовательский режим. После загрузки нужно будет очистить систему от старых библиотек:
Если найдутся старые библиотеки, то будет выдан запрос по аналогии с командой make delete-old.
Ну вот, система обновлена, посмотрим текущую информацию о ней:
Готово, систему обновили, теперь можно спокойно отдыхать :).
- # 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
- # Хост, к которому будем подключаться
- # Список доступных серверов можно посмотреть в хэндбуке
- *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
- # 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
- # 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
- # yes | make delete-old
- # cd /usr/src
- # make delete-old-libs
- # 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
Обсуждение статьи