918 читателей, 65 постов
Администрация
Модераторы
Блог для тех, кому не безразличны системы семейства *BSD. Между прочим, Хабр вы читаете благодаря FrееBSD.
#Имя ядра
KERNCONF=COMP
#Флаги оптимизации компиляции
CPUTYPE=pentium3
CFLAGS= -O -pipe
NO_PROFILE=true
#Рабочий каталог компиляции портов, если в /usr/ports нету места
WRKDIRPREFIX=/home/compile
#Отдельный каталог складирования архивов с исходниками ПО для портов
DISTDIR=/usr/distfiles
#Отдельный каталог складирования бинарных пакетов после сборки из исходников
#иначе пакеты будут собираться в /usr/ports/packages
PACKAGES=/usr/packages
#Поддерживаемые кодировки для документации
DOC_LANG= en_US.ISO8859-1 ru_RU.KOI8-R
FORMATS= html
# see /usr/share/examples/etc/make.conf
MAKE_KERBEROS4=false
MAKE_KERBEROS5=false
NO_KERBEROS=true
#Для OpenSSL можно использовать алгоритм IDEA, который запрещён к экспорту в США
MAKE_IDEA=true
#Многие опции перенесены в /etc/src.conf, они влияют на сборку системы
#NO_BIND=true
NO_IPFILTER=true
NO_SENDMAIL=true
NO_GAMES=true
WITH_THREADS=true
#Опции сборки из портов
WITH_GECKO=xulrunner
#WITH_GECKO=firefox
WITHOUT_DEBUG=true
WITHOUT_SAMBA=true
WITHOUT_MDNS=true
WITHOUT_MYSQL=true
WITH_LCD_FILTERING=true
WITHOUT_IMAGEMAGICK_TESTS=true
WITHOUT_TTF_BYTECODE_ENABLED=false
WITH_TTF_BYTECODE_ENABLED=true
WITH_EVOLUTION=false
WITHOUT_EVOLUTION=true
# OpenOffice.org
LOCALIZED_LANG=ru
WITH_CUPS=true
WITHOUT_KDE=true
# automatic
PYTHON_DEFAULT_VERSION=python2.5
NOPORTDOCS=true
# added by use.perl 2008-10-05 01:01:16
PERL_VER=5.8.8
PERL_VERSION=5.8.8
LOADER_ZFS_SUPPORT=yes
WITHOUT_ASSERT_DEBUG=yes
WITHOUT_ATM=yes
WITHOUT_AUDIT=yes
#-WITHOUT_BIND=yes
WITHOUT_BIND_DNSSEC=yes
WITHOUT_BIND_ETC=yes
WITHOUT_BIND_LIBS_LWRES=yes
WITHOUT_BIND_MTREE=yes
WITHOUT_BIND_NAMED=yes
#-WITHOUT_BIND_UTILS=yes
WITHOUT_GAMES=yes
WITHOUT_HTML=yes
WITHOUT_INFO=yes
WITHOUT_I4B=yes
WITHOUT_IPX=yes
WITHOUT_IPX_SUPPORT=yes
#-WITHOUT_INET6=yes
#-WITHOUT_INET6_SUPPORT=yes
WITHOUT_IPFILTER=yes
WITHOUT_NCP=yes
WITHOUT_LPR=yes
WITHOUT_PROFILE=yes
WITHOUT_RESCUE=yes
WITHOUT_SENDMAIL=yes
WITHOUT_MAILWRAPPER=yes
WITHOUT_NIS=yes
WITHOUT_KERBEROS=yes
WITH_IDEA=yes
WITHOUT_GSSAPI=yes
WITHOUT_KERBEROS_SUPPORT=yes
WITHOUT_PROFILE=yes
WITHOUT_GDB=yes
*default host=cvsup10.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs
*default tag=RELENG_7
*default delete use-rel-suffix
*default compress
src-all
% csup /etc/sys-supfile
% cd /sys/i386/conf/ && cp GENERIC COMP
# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.474.2.14 2008/08/29 18:54:35 jhb Exp $
#cpu I486_CPU
#cpu I586_CPU
cpu I686_CPU
ident COMP #Имя ядра
# To statically compile in device wiring instead of /boot/device.hints
#hints "GENERIC.hints" # Default places to look for devices.
#makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols ненужно
options SCHED_ULE # ULE scheduler
options PREEMPTION # Enable kernel thread preemption
options INET # InterNETworking
options INET6 # IPv6 communications protocols
options SCTP # Stream Control Transmission Protocol
options FFS # Berkeley Fast Filesystem
options SOFTUPDATES # Enable FFS soft updates support
options UFS_ACL # Support for access control lists
options UFS_DIRHASH # Improve performance on big directories
options UFS_GJOURNAL # Enable gjournal-based UFS journaling
#options MD_ROOT # MD is a potential root device ненужно
options NFSCLIENT # Network Filesystem Client
options NFSSERVER # Network Filesystem Server
options NFSLOCKD # Network Lock Manager
options NFS_ROOT # NFS usable as /, requires NFSCLIENT
options MSDOSFS # MSDOS Filesystem
options CD9660 # ISO 9660 Filesystem
options PROCFS # Process filesystem (requires PSEUDOFS)
options PSEUDOFS # Pseudo-filesystem framework
options GEOM_PART_GPT # GUID Partition Tables.
options GEOM_LABEL # Provides labelization
options COMPAT_43TTY # BSD 4.3 TTY compat [KEEP THIS!]
options COMPAT_FREEBSD4 # Compatible with FreeBSD4
options COMPAT_FREEBSD5 # Compatible with FreeBSD5
options COMPAT_FREEBSD6 # Compatible with FreeBSD6
options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI
#options KTRACE # ktrace(1) support ненужно
#options STACK # stack(9) support ненужно
options SYSVSHM # SYSV-style shared memory
options SYSVMSG # SYSV-style message queues
...
% cd /usr/obj/ && chflags -R noschg * && rm -rf *
% ee /etc/sys-supfile
% cd /usr/src/ && chflags -R noschg * && csup /etc/sys-supfile
% cd /sys/i386/conf/ && cp GENERIC COMP
% ee /sys/i386/conf/COMP
% ee /etc/make.conf
и% ee /etc/src.conf
% cd /usr/src/ && make cleandir && make cleandir && make cleandir
% cd /usr/src/ && make buildworld buildkernel
% cd /usr/src/ && make installkernel
% reboot
% shutdown now
# cd /usr/src/ && make installworld
# mergemaster
В одних случаях может быть достаточно нажимать клавишу [i] на вопросы утилиты — инсталлировать новые файлы конфигурации, но сначала посмотрите, какой файл обрабатывается, прежде чем что-то конкретно сделаете с ним: заменить старую версию файла новым [i], оставить старый конфиг [d], посмотреть изменения [v] и произвести слияние нового со старым [m] или сделать ссылку [l] (бывает и такое). В завершение процесса на вопрос об удалении временного каталога можно нажать клавишу [y].# reboot
# /sbin/mount -a
# cd /usr/src/ && make BATCH_DELETE_OLD_FILES=true delete-old delete-old-libs
# reboot
комментарии (41)
Впредь буду внимательнее.
Ах да, в Gentoo ядро — Linux. Ну это кому как…
В эту ветку добавляются только обновления связанные безопасностью и стабильностью
cat: /etc/sys-supfile: No such file or directory
У меня нет такого файла.
Статья копипаст откуда-то :)
Проще надо жить, проще
csup -h cvsup3.freebsd.org /usr/share/examples/cvsup/stable-supfile
Имя конфига ядра не надо указывать в /etc/make.conf
куда проще собирать нужное и ставить
типа
make buildkernel KERNCONF=COMP
make installkernel KENCONF=COMP
# freebsd-update fetch
# freebsd-update install
Более правильным будет:
% freebsd-update upgrade -r 7.1-BETA2
% freebsd-update install
% shutdown -r now
% freebsd-update install
% shutdown -r now
только, если ядро(ну, у большинства оно кастомное, думаю) обновить, а сам мир проще бинарниками
иными словами, ради чего нужно тратить больше времени на
сборку всего?
> в чем преимущества сорцового обновления перед бинарным?
В том, что каталог /usr/src содержит самые свежие исходники для всех аппаратных архитектур и можно проводить кросс-компиляцию, например, для менее быстродействующей машины, находящейся в локальной сети и распространять свежие бинарники с кастомизированными ядрами.
> иными словами, ради чего нужно тратить больше времени на
сборку всего?
Смотрите сами: для загрузки бинарных обновлений из Интернет на небыстрой линии можно затратить почти столько же времени, сколько на обновление исходников и компиляции из них нового ядра и мира. Если доступ в Интернет неограничен и доступен широкополосный канал, то бинарное обновление будет предпочтительнее.
Посчитайте сами, что для вас выгоднее, и действуйте так, как считаете нужным.
>У меня нет такого файла.
Читайте внимательно: «При этом файлы src.conf и sys-supfile необязательно присутствуют в системе, но их можно и нужно создать на основе примеров.»
> Статья копипаст откуда-то :)
Ага. :)) Собрана по кусочкам из моих долгих объяснений на форумах другим как всё делать.
> Проще надо жить, проще
Кто как хочет, так тот и живёт.
> Имя конфига ядра не надо указывать в /etc/make.conf
Да в этом файле половина опций не нужна. ;)
> куда проще собирать нужное и ставить
Опять же: кому как приспичит. Можно и другие опции в командной строке с make указывать вместо использования опций в файле make.conf.
> make installkernel KENCONF=COMP
Вот видите, вы уже сделали ошибку. ;)
csupиcvsup, кроме того, что первый написан на Си, а второй на Модуле?cvsup — собирается из порта ports/net/cvsup, основная версия имеет графический интерфейс.
Преимущества csup: работает сразу после установки системы (даже без развёртывания локального дерева коллекции портов); для обновления исходников системы ничего не надо устанавливать из коллекции портов.
При наличии соответствующего файла ports-supfile:
*default host=cvsup10.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs
*default delete use-rel-suffix
*default compress
*default tag=.
ports-all
можно загрузить свежее дерево портов с нуля или обновить существующее таким методом:
% csup /path/to/ports-supfile
Загрузить бинарник:
% cd /usr/ports/ && make fetchindex
или построить его самому:
% cd /usr/ports/ && make index
Потом определить, какие из установленных пакетов нуждаются в обновлении:
% pkg_version -v | grep "<"
И обновить их.
Для начала неплохо бы отремонтировать базу данных установленного ПО:
% pkgdb -vfFu
Обновить установленное ПО из исходников/портов:
% portupgrade -apr
(ключ -p создаёт бинарные пакеты в каталоге $PACKAGES/All/, так что их можно распространять; ключ -r задаёт рекурсивно проверить и обновить зависимые пакеты, если нужно; ключ -a — выполнять для всех пакетов).
Обновить установленное ПО из бинарных пакетов, загружаемых из Сети:
% portupgrade -aPP
(Примечание. Утилита portupgrade устанавливается из ports/ports-mgmt/portupgrade)
Если с обновлением установленных пакетов что-то пойдёт не так, то прочтите файл /usr/ports/UPDATING. Там могут быть важные замечания по правильному обновлению установленного ПО.
cvsup -g -L 2 /path/to/src-supfileИз GENERIC делаю нужную конфигурацию ядра. Ну а потом мир, ядро и приступаю к выкачиванию портов таким же образом.
Так вот, есть ли какие-то преимущества csup в этом случае? В моем случае, cvsup работает почти сразу после установки системы…
Ключевое слово: почти
#cd /usr/src/ && make installkernel KERNCONF=COMP
перезагрузиться в однопользовательский режим и уже с новым ядром устанавливать мир т.к. старое ядро не совместимо с новым миром и установка нового мира может пройти с ошибками
поэтому уже в однопользовательском режиме после fsck -p и монтирования файловых систем, а также mergemaster -p стоит приступать к
#cd /usr/src/ && make installworld
Пустые etc/make.conf и /etc/src.conf; затем strip --strip-unneeded ./ls.
И diff /bin/ls ./ls не показывает разницы!