Главная > Операционные системы > UNIX > BSD > FreeBSD Здесь представлены два аналогичных способа обновления мира и ядра. Оба материала, в приципе, идентичны, но... они в какой-то мере дополняют друг друга. Поэтому советую прочесть их оба и сделать вывод. Обновление мира ("world") FreeBSD
Обновленная версия статьи в которой постарался учесть все пожелания и замечания оставленные в комментариях.
Рассматривается переход с версии 8.2 на 9.0. # cp /usr/share/examples/cvsup/stable-supfile /etc/ # vi /etc/stable-supfileВыбираем cvsup сервер. Кому какой ближе. Для российских пользователей: cvsup2.ru.FreeBSD.org или cvsup3.ru.FreeBSD.org *default host=cvsup2.ru.FreeBSD.org *default base=/var/db *default prefix=/usr Загружаем исходные тексты 9.0 ветки. Если необходимо 5, 4, 3 или 2.2, то меняем на "RELENG_5",
"RELENG_4", "RELENG_3", "RELENG_2_2" соответственно. *default release=cvs tag=RELENG_9_0 *default delete use-rel-suffix # Включаем сжатие трафика *default compress # Качаем полное дерево исходников src-all Запускаем cvsup и ждем пока закончится обновление. server# cvsup -g -L2 /etc/stable-supfile Переходим в /usr/scr и начинаем процесс обновления. Запаситесь терпением, так как это
занимает 1-2 часа на Core2Duo. # cd /usr/src/ # rm -rf /usr/obj # make -j4 buildworld Где j4 - компилировать в 4 потока. Рекомендуется для однопроцессорных машин, т.к. компиляция в
большей степени требовательная к системе ввода-вывода, а не процессору. Для многопроцессорных это значение можно
увеличить. # make -j4 buildkernel KERNCONF=MYKERNEL Где MYKERNEL - ваше ядро. Без KERNCONF=MYKERNEL собирается с ядром GENERIC. В следующей строке поступаем соответственно. # make installkernel KERNCONF=MYKERNEL Перезагрузимся # reboot Перейдем в однопользовательский режим. При загрузке жмем 4, либо из основного режима следующей
командой: # shutdown now Монтируем разделы файловой системы. # mount -u / # mount -a # mergemaster -p Устанавливаем мир # cd /usr/src # make installworld Удаляем временные файлы # make delete-old # mergemaster Несколько слов о работе этой утилиты. Она сравнивает уже установленные файлы конфигурации с
теми которые предлагаются новой версией FreeBSD. Если есть отличия, то на экране появляется сообщение об этом.
Первой строкой в нем идет имя файла, который не соответствует новым требованиям, а ниже сами отличия. Знаком
"-" помечаются строки, которые утилита собирается удалить, а "+" - которые будут добавлены. # reboot # cd /usr/src/ # make delete-old-libs Все. Проверяем. # uname -a ...9.0-RELEASE FreeBSD 9.0-RELEASE #0... До обновления было FreeBSD 8.2-RELEASE Для создания материала использована страница: http://www.lissyara.su/articles/freebsd/tuning/make_buildworld/ Локальное и удаленное обновление FreeBSDНаписал краткую справку об обновлении локальных и удаленных серверов в пределах одной ветки. Обновление csupСначала вам нужно обновить исходные коды системы, и мы будем использовать штатные средства
операционной системы csup. Конфигурационный файл готов, его необходимо скопировать и изменить, он находится
в директории: # cd /usr/share/examples/cvsup/ # ls README gnats-supfile refuse.README www-supfile cvs-supfile ports-supfile stable-supfile doc-supfile refuse standard-supfile Укажем нужную версию операционной системы. # cat standard-supfile | grep default *default host=CHANGE_THIS.FreeBSD.org *default base=/var/db *default prefix=/usr *default release=cvs tag=RELENG_7_1 *default delete use-rel-suffix *default compress src-all Скопируем файл и немного изменим: # cp standard-supfile standard-supfile-RELENG_8_2 # cat standard-supfile-RELENG_8_2 | grep default *default host=CHANGE_THIS.FreeBSD.org *default base=/var/db *default prefix=/usr *default release=cvs tag=RELENG_8_2 *default delete use-rel-suffix *default compress src-all Теперь нам необходимо синхронизировать src делается просто: # /usr/bin/csup -h cvsup4.ru.freebsd.org -g -L 2 \ /usr/share/examples/cvsup/standard-supfile-RELENG_8_2 Когда синхронизация завершилась, приступим к обновлению системы (не забываем прочитать
файл UPDATING чтобы все прошло гладко). Предупреждаю, что сначала мы будем устанавливать, ядро
GENERIC и если все пройдет гладко и вы протестируете хотя бы один день сервер то можете, скомпилируйте свое ядро. # cd /usr/obj ;chflags -R noschg * ;rm -rf * # cd /usr/src # make -j4 buildworld # make -j4 buildkernel KERNCONF=GENERIC # make installkernel KERNCONF=GENERIC Теперь начинаются различия обновления локального и удаленного серверов. Рассмотрим два этих варианта: Локальный серверДля безопасного и корректного обновления необходимо ввести машину в single mode можно сделать двумя способами:
Удаленный серверПри удаленном обновлении вы не должны вводить машину в single mode, если
вы случайно это сделаете, то потеряете связь с машиной.
Можно и самим остановить эти службы без перезагрузки системы. Продолжаем обновлениеПри запуске системы в нашем случае это локальный сервер необходимо смонтировать корневой каталог
и остальные разделы, а при удаленном сервере нет необходимости в монтировании каталогов.
А так же запустим mergemaster для создания начальной точки работы: # /sbin/mount -u / # /sbin/mount -a # csh # su # mergemaster -p Установим мир и удалим старые файлы. # cd /usr/src # make installworld # make delete-old Для автоматизации удаления старых версий выполните: # yes | make delete-old mergemasterЗапустим mergemaster для синхронизации файлов, библиотек, конфигурационных файлов с новыми версиями. # mergemaster -cv (c-контекстный diffs вместо унифицированного) mergemaster сравнивает существующие конфигурационные файлы с теми, которые предлагаются новой версией FreeBSD. И если существуют отличия, то появляется сообщение об этом. Первой строкой в нем идет имя файла, который не соответствует новым требованиям, а ниже сами отличия. Знаки:
Есть несколько вариантов управления и в низу mergemaster предлагают следующие варианты работы с текущим файлом:
При построчном сравнивании экран делится на две части, слева строки из старого файла, а справа из предлагаемого. При нажатии на "Enter" выводятся возможные варианты последующих действий:
и т.д. После того как сравнение файла закончилось, предлагаются следующие варианты:
Бывает, что с новой версией системы появляются новые файлы, которых до этого не было. В таком случае предлагается 2 варианта:
И так сравниваются все файлы. ЗавершениеКогда закончите, объединять файлы перезапустите систему и удалите старые библиотеки, а так же проверьте версию системы: # shutdown -r now # cd /usr/src/ # make delete-old-libs # uname -a FreeBSD bsd.ampul.local 8.2-RELEASE FreeBSD 8.2-RELEASE #1: Tue May 19 09:55:51 MSD 2009 Raven2000@bsd.ampul.local:/usr/obj/usr/src/sys/MYKERNEL i386 Обновление портов FreeBSD# /usr/bin/csup -h cvsup4.ru.freebsd.org -g -L 2 /usr/share/examples/cvsup/ports-supfile \ && cd /usr/ports/ && make fetchindex Обновление по крону # crontab -l | grep csup 1 8 * * * (/usr/bin/csup -h cvsup4.ru.freebsd.org -g -L 2 \ /usr/share/examples/cvsup/ports-supfile \ && cd /usr/ports/ && make fetchindex) >/dev/null 2>&1 ПроблемыВ. Не запускаются программы требуют старые библиотеки # /usr/ports/misc/compat compat3x/ compat4x/ compat5x/ compat6x/ compat7x/Для создания материала использована страница: http://www.ignix.ru/public/local_remote_update_freebsd Главная > Операционные системы > UNIX > BSD > FreeBSD |