Главное меню
Ссылки
RSS трансляции
Наши новости могут транслироваться, используя rss.
rss1.0
rss2.0
rdf
FAQ
 FAQ #41
Back to Categories    Print this FAQ  Send a link to this FAQ to a friend pdf
Обновление FreeBSD
Бинарное обновление:

# freebsd-update upgrade -r 8.3-RELEASE

Первоначальный процесс апгрейда, ядро ставится GENERIC, задаются вопросы про конфигфайлы.

# freebsd-update install
# shutdown -r now

Ядро обновляется, перегружаемся.

# freebsd-update install

Здесь freebsd-update говорит, надо ли перекомпилить установленное из портов в связи со сменой версии либ.

# freebsd-update install

Убиваются старые либы и заканчивается процесс перехода на новую версию.

# shutdown -r now

Обновление через исходники, csup:

Проверяем версию исходников:

freebsd /# grep -A 2 'TYPE="' /usr/src/sys/conf/newvers.sh
TYPE="FreeBSD"
REVISION="8.1"
BRANCH="RELEASE-p2"

Идем в /usr/share/examples/cvsup, берем файл standard-supfile и копируем в более удобное место.

freebsd /# cp /usr/share/examples/cvsup/standard-supfile /etc/supfile

Приводим его к такому виду:

*default host=cvsup6.ru.FreeBSD.org
# Список зеркал можно найти тут http://www.freebsd.org/doc/handbook/cvsup.html#CVSUP-MIRRORS
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=RELENG_8_3
# Список тегов http://www.freebsd.org/doc/handbook/cvs-tags.html
*default delete use-rel-suffix
*default compress
src-all

После сохранения, запускаем:

csup -g -L 2 /etc/supfile

Запустится синхронизация исходных текстов системы. Длительность зависит от скорости канала.

Обновление через исходники, svn:

В отличии от csup, svn не входит в стандартную поставку операционной системы FreeBSD, ее нужно установить дополнительно. В портах FreeBSD, кроме обычной subversion существует еще и специализированный вариант subversion-freebsd, для обновления исходников нас интересует именно он.

freebsd /# cd /usr/ports
freebsd /# make -C devel/subversion-freebsd install clean

Для синхронизации через svn можно использовать HTTP или SVN сервер:

freebsd /# svn checkout http://svn.freebsd.org/base/releng/8.2/ /usr/src # через HTTP

или соответственно

freebsd /# svn checkout svn://svn.freebsd.org/base/releng/8.2/ /usr/src # через SVN

После завершения, снова смотрим версию:

freebsd /# grep -A 2 'TYPE="' /usr/src/sys/conf/newvers.sh
TYPE="FreeBSD"
REVISION="8.2"
BRANCH="RELEASE-p1"

Все как надо.
В дальнейшем, для синхронизации, достаточно сделать:

freebsd /# svn update /usr/src/

Сборка всего с обновленными исходниками:

Чистим на всякий случай директорию /usr/obj как рекомендует хендбук:

freebsd /# cd /usr/obj
freebsd /# chflags -R noschg *
freebsd /# rm -rf *
freebsd /# cd /usr/src
freebsd /# make cleandir # хендбук рекомендует выполнять эту команду дважды (!)
freebsd /# make cleandir

Идем дерево исходных текстов:

freebsd /# cd /usr/src

Мир в контексте операционной системы FreeBSD, это все, что не ядро. Ключ -j команды make позволяет запустить процесс в несколько потоков, ключ -s уменьшает количество информации выводимой на экран в процессе сборки. Команда time просто считает время. затраченное на выполнение следующей за ней команды, чисто для интереса). Запускаем сборку мира и ждем.

freebsd /usr/src# time make -s -j4 buildworld

Если все прошло успешно, получаем:

--------------------------------------------------------------
>>> World build completed on Thu Apr 21 06:43:20 UTC 2011

Теперь собираем ядро. В параметре KERNCONF, указывается название нашего ядра, если таковое имеется, если данная опция не установлена, будет собрано ядро GENERIC, используемое системой FreeBSD по умолчанию.
В данном случае я собираю свое ядро:

freebsd /usr/src# make -j4 -s buildkernel KERNCONF=GARROTTE

Устанавливаем только что скомпилированное ядро:

freebsd /usr/src# make -s installkernel KERNCONF=GARROTTE

При установке нового ядра происходит слудующее: новое ядро копируется в папку /boot/kernel, текущее перемещается в /boot/kernel.old. В случае, если с новым ядром система не завелась, есть возможность загрузить предыдущую версию из командной строки загручика.

Теперь нужно сделать перезагрузку в однопользовательский режим. Делаем либо reboot, а затем на экране загрузчика выбираем Single user mode, цифра 4 в окне загрузчика, либо используем команду shutdown now, переводящую машину в режим single user.

В процессе загрузки, будет выдан запрос, ввести полный путь к системной оболочке, тут можно просто нажать Enter, согласившись с предложенным /bin/sh.
Если использовали shutdown now, разделы будут смонтированы как нужно, при использовании reboot, будут смонтированы 2 раздела, devfs и корневой раздел, при этом корневой будет смонтирован в режиме read only, то есть только чтение.

Если делали reboot, поступаем следующим образом:

# mount -u / # Перемонтируем корневой раздел в режим чтение/запись
# mount -a # Монтируем все что прописано в /etc/fstab

теперь выполняем команду

freebsd /# mergemaster -p

Тут нужно быть внимательным смотреть, что mergemaster предлагает сделать с тем или иным конфигом, и выбирать устраивающий вас вариант действий.

d - оставить старый вариант файла, удалив новый;
i - установить новый, удалив старый;
m - построчное сравнение старого и нового файла;
v - сравнить файлы еще раз.

При выборе построчного сравнения. на экран быдут выведены обе версии файла, слева — содержимое старого файла, справа — нового. Возможные варианты действий:

l - использовать вариант слева, то есть старый;
r - использовать вариант справа, то есть новый;

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

После завершения работы над конфигами, устанавливаем мир:

freebsd /# make installworld

Процесс не многим дольше установки ядра, после окончания делаем reboot и проверяем что получилось:

freebsd /# uname -r
8.2-RELEASE-p1

По необходимости, удаляем старые библиотеки:

freebsd /# cd /usr/src && make check-old
freebsd /# yes | make delete-old
freebsd /# yes | make delete-old-libs

чистим за собой /usr/obj

freebsd /# cd /usr/obj && chflags -R noschg * && rm -rf *
Views 2298 (Unique 976)
Member Rating : Not yet rated  
FAQ Posted by
Info Created: Thursday 26 April 2012 - 02:23:14
Last Updated: Thursday 26 April 2012 - 02:23:14
 
РадиоЭлектроника
Поиск Vampyr`s House!
Copyright © 1999-2014, Igor Muraviov. Все авторские права принадлежат их владельцам ( в случае указания) или владельцу сайта, если автор не указан.
Копирование материалов с сайта возможно только в случае размещения ссылки на первоисточник.
Protected by Copyscape DMCA Plagiarism Check