Re: ng_ipacct

From
Eugene Grosbein (2:5006/1)
To
dmitry@atlantis.dp.ua
Date
2006-12-21T17:46:14Z
Area
RU.UNIX.BSD
Reply-To: eugen@grosbein.pp.ru

21 дек 2006, четверг, в 11:51 KRAST, dmitry@atlantis.dp.ua написал(а):

 SS>> При пересборке ядра в 6.x каталог /boot/kernel перемещается в
 SS>> /boot/kernel.old. Соотв. требуется пересборка тех портов, которые
 SS>> содержат kld-modules. Я так подозреваю это именно тот случай.
 >> Я везде использую MODULES_WITH_WORLD=no, одним из эффектов
 dadu>    Учитывая, что переменная проверяется не по значению, а на defined(),
 dadu> можно по ошибке подумать, что Вы приказываете _не_ строить модули с
 dadu> миром.
 dadu> Но мы-то знаем, что это не так ;) Поэтому, _если уж советовать_, лучше
 dadu> в каноническом стиле, который нам советует (на примере NO_MODULES) 
 dadu> src/share/examples/etc/make.conf:
 dadu> MODULES_WITH_WORLD=		#Build modules with world (not with kernel)

Это опечатка у меня тут, =yes конечно.
А определять переменные пустышкой мне не нравится :-)

 dadu> Однако см. ниже...
 >> является хранение модулей в /boot/modules, отдельно от ядра.
 >> Все такие странные проблемы уходят, всем рекомендую.
 dadu>    IMHO зря _всем_ рекомендуете. Для тех, кто часто обновляет исходники
 dadu>    _и_
 dadu> перестраивает ядро это плохой, негодный совет. Я, например, при
 dadu> очередном
 dadu> обновлении STABLE смотрю лог csup (а часто и diff -u старого и нового
 dadu> src),
 dadu> и, если изменения принципиальные только в ядре (а остальной мир
 dadu> практически
 dadu> не изменился) - делаю только make kernel.

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

Понятно, когда опытный админ, читающий с листа diff и логи
на свою, мнээ, голову пересобирает только ядро, но вот озвучивать
такой экстремизм я бы не стал без крупных варнингов :-)

Если же только эксперименты с конфигом ядра, модули пересобирать
почти всегда не надо.

 dadu> Но устаревшие модуля мне,
 dadu> естественно, не нужны. Ведь и ядро, и модуля, которые строит buildkernel
 dadu> -
 dadu> продукт одних и тех же текстов из src/sys, они тесно интегрированы,
 dadu> разрывать их перестроение - чревато тонкими глюками и невозможностью
 dadu> толком
 dadu> проанализировать kernel dump.

А еще бывают те же связки ядра и userland, поэтому модули пересобираются
вместе с миром, а мир - с изменением исходников. Или типа стабильность ABI
уже это требование похоронила?

 >> Изменение конфигурации ядра почти всегда - не причина пересобирать
 >> модули, а оверхед дикий. И проблемы для портов нет.
 dadu>    Вот как раз порты, кладя в /boot/modules свои модуля, порождают кучу 
 dadu> вопросов у пользователей-не-девелоперов, когда последние обновляют
 dadu> систему,
 dadu> а она, погань, слетает при перезагрузке из-за устаревшего драйвера
 dadu> nVidia
 dadu> или какого-нибудь rtc.ko. Тут MODULES_WITH_WORLD AFAIK ничем помочь не
 dadu> может (а созданием в /boot/modules мешанины из актуальных базовых и 
 dadu> устаревших портовых модулей, наоборот, навредит).

Ну это вопрос аккуратности, можно и UPDATING не читать перед пересборкой
мира... Рекомендуемая процедура должна быть, в первую очередь,
надежной, а во вторую эффективной и простой. Требование читать diff-ы
не удовлетворяет второму :-) Требование при обновлении сорцов
пересобирать ядро, модули и мир и портовые модули удовлетворяется
хоть при использовании MODULES_WITH_WORLD, хоть без. Но при использовании
пересборка ядра без изменения сорцов, во-первых, не дает проблем
с портовыми модулями (а без - проблемы есть), а во-вторых, гораздо
эффективнее в смысле глупого оверхеда на пересборку модулей.

 dadu> IMHO /boot/modules примерно 
 dadu> так же соотносится с /boot/kernel, как /usr/local с /usr: при обновлении
 dadu> 
 dadu> текстов ядра (мира) мы пересобираем содержимое /boot/kernel
 dadu> (/usr/не-local), а 
 dadu> своевременное обновление /boot/modules и /usr/local при смене веток,
 dadu> например, 
 dadu> RELENG_5 -> 6 - за этим уже мы сами (или наши скрипты, но не базовый
 dadu> {build,install}{kernel,world}) должны следить.

Мне вообще активно не нравится требование обновлять /usr/local
при смене версии OS. И я не обновлял ничего при переходе с четверки
на шестерку дома, за исключением досадных вещей типа смены
locale on-disk format, работало все, начиная от XFree86 и кончая
galeon-ом через compat4x без проблем.

Eugene
-- 
Знаете ли вы, что...
Иисус имел не менее 4 братьев и 2 сестер (Матф.13:54)
--- slrn/0.9.8.0 (FreeBSD)
 * Origin: Svyaz Service JSC (2:5006/1@fidonet)
SEEN-BY: 50/12 400/814 450/159 1024 461/43 132 640 469/999 4616/3 4625/8
SEEN-BY: 4641/444 5000/76 5000 5006/1 8 9 10 14 15 16 17 5007/1 5010/70
SEEN-BY: 5011/13 5012/46 5015/28 5019/26 5020/18 175 194 400 545 982 1057 1909
SEEN-BY: 5020/1922 2238 2395 2871 4441 5021/29 5025/3 5026/14 45 5027/12
SEEN-BY: 5030/1080 1957 5034/10 13 5035/38 5036/1 5045/7 5049/1 5051/15 5054/1
SEEN-BY: 5054/4 8 9 11 28 35 36 37 45 66 67 70 75 84 85 5059/9 5060/88 5061/15
SEEN-BY: 5062/10 5063/3 5064/7 5066/18 5075/5 5076/1 5077/70 5084/9 5085/13
SEEN-BY: 5095/20 5096/18 6001/10
PATH: 5006/1 5020/400 545 5054/1 37