Bsdadmin.ru

Записки администратора FreeBSD

Путь на сайте

Домашняя FreeBSD Поддержка в актуальном состоянии базовой системы FreeBSD

Поддержка в актуальном состоянии базовой системы FreeBSD

Некоторые сведения о базовой системе FreeBSD
• после того, как RELEASE выпущен, будут появляться только обновления безопасности, никаких исправлений ошибок
• ошибки исправляются в ветке STABLE
• обновления безопасности также производятся и в STABLE-ветке
• в версии RELEASE можно использовать утилиту freebsd-update для получения бинарных обновлений с исправлениями ошибок безопасности
• в версии STABLE для обновления потребуется перекомпилировать базовую систему FreeBSD

Если мы хотим собрать текущую версию STABLE дерева базовой системы FreeBSD, то нам
потребуется получить копию дерева исходных текстов или провести обновление наших исходных
тектов до актуального состояния. Удобно для этого воспользоваться воспользоваться утилитой
из пакета sysutils/fastest_cvsup.

Создайте простейший файл supfile, который будет использваться утилитой csup(1) - она
обновляет исходные тексты системы до нужного состояния. В директории
/usr/share/examples/cvsup/ содержатся полезные примеры...

Теперь  скачаем/обновим наши исходные тексты до текущего состояния. Список
отредактированных/проверенных файлов на вашей системе будет несколько иным.

Пример 1 - Поиск ближайшего csup (1) сервера с помощью утилиты fastest_cvsup(7)
>> Speed Daemons:
- 1st: cvsup.pl.freebsd.org
- 2nd: cvsup11.ua.freebsd.org
- 3rd: cvsup5.de.freebsd.org

Пример2 - Создание конфигурационного файла csup (1) для обновления исходных текстов до 9-STABLE.
# cat > /root/stable-supfile << EOF
*default host=cvsup.pl.freebsd.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=RELENG_9
*default delete use-rel-suffix
*default compress
src-all

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

При этом не имеет значения, загрузили ли вы дерево полностью или вчера произвели его 
обновление. Если svn жалуется на что-либо, то просто удалите /usr/src и запустите команду 
заново.

Следует отметить, что исходные тексты, полученные из SVN, не совместимы с теми же
текстами, скачанными csup. Поэтому, если Вы решили использовать какой-то метод - используйте
его до конца. Иначе придется загружать всё дерево исходных текстов FreeBSD заново. 

Теперь, когда у нас есть исходные тексты, мы можем приступить к сборке базовой системы FreeBSD. Что касается редактирования конфигурации ядра, то вы можете даже не задумываться о нем, а просто использовать конфигурацию GENERIC - эта статья посвящена поддержке системы в актуальном состоянии, а не оптимизации базовой системы и компонентов ядра. Без сомнения, если вы хотите, то можете работать со своей оптимизированной конфигурацией - на задачи, изложенные в статье, это не повлияет. Также Вы можете перед строкой make buildworld...вставить префикс nice -n 20, что понизит приоритет выполнения пересборки и система будет более отзывчивой во время процесса. После завершения процедур, ваша система перезагрузится.

Пример3. Обновляем дерево исходников FreeBSD с помощью csup(1) из базового комплекта
системы.

# csup /root/stable-supfile
Connected to 188.125.237.138 Updating collection src-all/cvs
Edit src/bin/ed/buf.c
Edit src/sbin/fsck ffs/main.c
Edit src/sbin/mdconfig/mdconfig.8
Edit src/sbin/mdconfig/mdconfig.c
Edit src/share/man/man4/ath.4
Edit src/share/man/man4/ath hal.4
Edit src/sys/cddl/contrib/opensolaris/uts/common/fs/
zfs/zfs vnops.c Edit src/sys/cddl/contrib/opensolaris/uts/common/fs/
zfs/zfs znode.c Edit src/sys/dev/ahci/ahci.c Edit src/sys/fs/msdosfs/msdosfs vnops.c Edit
src/sys/fs/nfsclient/nfs clbio.c Edit src/sys/fs/nfsserver/nfs nfsdserv.c

.......
Edit src/sys/ufs/ffs/ffs vnops.c
Finished successfully

Мы переходим ко второй фазе процесса обновления. После нормальной загрузки
(однопользовательский режим не требуется и определенно не рекомендован во время удаленного
обновления), остановите все ненужные сервисы (помните про необходимость оставить SSH, если
работаете по сети). Если ваша система нормально загрузилась, то вы можете сделать ваше новое
тестовое ядро используемым по-умолчанию. По крайней мере, если вы использовали GENERIC
конфигурацию ядра, проблем возникнуть не должно.

Теперь мы можем продолжить чтобы завершить обновление. Команда mergemaster (8) спросит Вас
о том, что нужно сделать с различиями в скриптах запуска и конфигурационных файлах, если Вы
их изменяли. Нажмите 'I' для установки новой/ стандартной конфигурации, либо нажимайте 'D',
чтобы оставить ту версию, что уже у Вас работает. Запомните, что вы можете сделать эти
замены позднее. Также не желательно устанавливать настройки по-умолчанию для файрвола или
OpenSSH при обновлении по сети.

Пример4. Обновляем дерево исходных текстов FreeBSD с помощью svn (1) из пакета
devel/subversion-freebsd.

# svn checkout svn://svn.freebsd.org/base/stable/9 / usr/src
U /usr/src/usr.bin/grep/util.c
U /usr/src/usr.bin/grep
U /usr/src/share/man/man5/rc.conf.5
U /usr/src/share/man/man5
U /usr/src/share/man/man9/driver.9
U /usr/src/share/man/man9
U /usr/src/usr.sbin/mergemaster/mergemaster.sh
U /usr/src/usr.sbin/mergemaster
U /usr/src/lib/libc/stdtime
U /usr/src/lib/libc
U /usr/src/lib/librt/timer.c
U /usr/src/lib/librt
U /usr/src/lib/libpam/modules/pam ssh/pam ssh.c
U /usr/src/lib/libpam
U /usr/src/etc/network.subr
U /usr/src/etc/devd.conf
U /usr/src/etc
U /usr/src/sys/sparc64/pci/schizo.c
U /usr/src/sys/kern/kern ctf.c
U /usr/src/sys/kern/vfs syscalls.c
U /usr/src/sys/kern/sys generic.c
U /usr/src/sys/netinet/tcp reass.c
U /usr/src/sys/netinet6/nd6.c
U /usr/src/sys/contrib/pf/net/pf.c
U /usr/src/sys/contrib/pf
U /usr/src/sys/amd64/include/segments.h
U /usr/src/sys/amd64/include/xen
U /usr/src/sys/amd64/include/trap.h
U /usr/src/sys/amd64/amd64/trap.c
U /usr/src/sys/sys/bus.h
U /usr/src/sys Checked out revision 228452.

Пример5. Собираем базовую систему FreeBSD

# cd /usr/src
# rm -r -f /usr/obj
# make buildworld kernel KODIR=/boot/testing
# nextboot -k testing
# shutdown -r now


Пример6. Делаем новое ядро используемым по-умолчнию и останавливаем ненужные сервисы
# cd /boot
# rm -r -f OLD
# mv kernel OLD
# mv testing kernel
# killall dhclient moused
# /etc/rc.d/cron stop
# /etc/rc.d/devd stop
# /etc/rc.d/sshd stop
# /etc/rc.d/powerd stop
# /etc/rc.d/syslogd stop

Домашняя FreeBSD Поддержка в актуальном состоянии базовой системы FreeBSD