*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