Различия

Показаны различия между двумя версиями страницы.


peresborka_world_rebuilding_world [2025/07/06 12:39] (текущий) – создано - внешнее изменение 127.0.0.1
Строка 1: Строка 1:
 +====== Rebuilding “world” ======
 +===== Предварительные действия =====
 +  * [[cvsup]]: синхронизация (обновление) локального дерева исходных текстов, портов и документации.
 +  * **Читаем руководство: [[https://docs.freebsd.org/ru_RU.KOI8-R/books/handbook/makeworld.html|Пересборка world]]**; 
 +  * **Удалите /usr/obj**
 +При перестроении частей системы они помещаются в каталоги, которые (по умолчанию) находятся в
 +/usr/obj. Структура повторяет структуру /usr/src.
 +Вы можете ускорить выполнение процесса make buildworld и, возможно, избавить себя от некоторой
 +головной боли, связанной с зависимостями, удалив этот каталог.
 +На некоторых файлах из /usr/obj могут быть установлены специальные флаги (обратитесь к chflags(1)
 +за дополнительной информацией), которые сначала должны быть сняты.
 +<code>
 +# cd /usr/obj
 +# chflags -R noschg *
 +# rm -rf *
 +</code>
 +  * **Файл /usr/src/UPDATING**
 +Для обновления вашей системы вы должны прочесть **/usr/src/UPDATING** для выяснения шагов, которые
 +нужно предпринять перед построением системы из вашей версии исходных текстов.
 +  * **Файл /etc/make.conf**
 +Проверьте содержимое /etc/make.conf. Просмотрите файлы /usr/share/examples/etc/make.conf и /etc/make.conf.
 +
 +Первый содержит некоторые предопределенные по умолчанию значения - большинство из них закомментировано. Чтобы воспользоваться ими при перестроении системы из исходных текстов, добавьте их в файл /etc/make.conf. Имейте в виду, что все, добавляемое вами в /etc/make.conf, используется также каждый раз при запуске команды [[make]], так что полезно задать здесь значения, подходящие вашей системе. Вероятно стоит скопировать строки CFLAGS и NO_PROFILE, расположенные в /usr/share/examples/etc/make.conf, в файл /etc/make.conf и раскомментировать их. Посмотрите на другие определения (COPTFLAGS, NOPORTDOCS и так далее) и решите, нужны ли они вам.
 +
 +===== Процедура Rebuilding “world” =====
 +Система перед обновлением:
 +<code>
 +ns# uname -a
 +FreeBSD ns.vip.com.ua 7.2-RELEASE FreeBSD 7.2-RELEASE #0: Fri May  1 08:49:13 UTC 2009     root@walker.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386
 +</code>
 +Вы должны находиться в каталоге /usr/src:
 +  # cd /usr/src
 +(если, конечно, ваш исходный код не находится в другом месте, в случае чего вам нужно перейти в
 +соответствующий каталог). 
 +следующую последовательность действий:
 +<code>
 +# make buildworld
 +# make buildkernel
 +# make installkernel
 +# reboot
 +</code>
 +Замечание: Есть несколько редких случаев, когда перед выполнением buildworld
 +необходимо дополнительно запустить mergemaster -p. Они описаны в файле UPDATING. В
 +общем случае вы можете без ущерба пропустить этот шаг, если не выполняете обновление
 +с одной большой версии FreeBSD на другую.
 +
 +После успешного выполнения installkernel вам необходимо загрузить систему в однопользовательском режиме (заданной в приглашении загрузчика). После этого выполните:
 +<code>
 +# mount -a
 +# cd /usr/src
 +# mergemaster -p
 +</code>
 +эта команда позволяет сравнить только те файлы, которые понадобятся при запуске make installworld, например /etc/make.conf ). Выводы команды mergemaster нужно просмотреть очень тщательно. Вам будут предлагаться для сравнения по две версии файлов, если вы уверены что обновленный файл это то что нужно, жмите i, если вы видите что программа mergemaster предлагает удалить нужные вам данные, то необходимо выбрать m - изображение на экране разделится на правую и левую части, необходимо сравнить старый и новый файл, после чего оставить те строки, которые вы считает нужными, по окончании объединения строк старого и нового файлов нажмите i, для того чтобы установить получившийся файл.
 +<code>
 +# make installworld
 +# mergemaster
 +</code>
 +ключ -i включает полностью ручной режим для mergemaster, то есть придется подтверждать каждое действие утилиты. Проще не использовать.
 +<code>
 +# reboot
 +</code>
 +Система после обновления: 
 +<code>
 +# uname -a
 +FreeBSD ns.vip.com.ua 7.2-RELEASE-p4 FreeBSD 7.2-RELEASE-p4 #0: Sat Oct 24 18:32:43 EEST 2009     root@ns.vip.com.ua:/usr/obj/usr/src/sys/GENERIC  i386
 +</code>
 +
 +====== Сборка собственного ядра ======
 +Примеры параметров конфигурации ядра находится в /usr/src/sys/conf/NOTES
 +===== Предварительные действия =====
 +
 +В ядре нужна поддержка [[razlichija_mezhdu_vlan_i_vpn|VLAN (Virtual Local Area Network)]] и [[Packet Filter Firewall (PF)]].
 +  * **VLAN параметры ядра**:
 +<code>
 +# man vlan
 +...
 +NAME
 +     vlan -- IEEE 802.1Q VLAN network interface
 +
 +SYNOPSIS
 +     To compile this driver into the kernel, place the following lines in your
 +     kernel configuration file:
 +
 +           device miibus
 +           device vlan
 +
 +     Alternatively, to load the driver as a module at boot time, place the
 +     following line in loader.conf(5):
 +
 +           if_vlan_load="YES"
 +
 +...
 +</code>
 +  * **PF и [[ALTQ]] параметры ядра** (подробно читаем здесь [[http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/firewalls-pf.html|Руководство FreeBSD Глава 26. Межсетевые экраны]]):
 +
 +Пример параметров конфигурации ядра для включения PF находится в /usr/src/sys/conf/NOTES и показан здесь:
 +<code>
 +device pf
 +device pflog
 +device pfsync
 +</code>
 +Включение [[ALTQ]]
 +
 +ALTQ может быть включен только путем компилирования ядра FreeBSD с соответствующими параметрами. ALTQ поддерживается не всеми существующими драйверами сетевых карт. Для просмотра списка поддерживаемых устройств в вашем релизе FreeBSD обратитесь к странице справочника altq(4). Следующие параметры включат ALTQ и добавят дополнительную функциональность.
 +<code>
 +options         ALTQ
 +options         ALTQ_CBQ        # Class Bases Queuing (CBQ)
 +options         ALTQ_RED        # Random Early Detection (RED)
 +options         ALTQ_RIO        # RED In/Out
 +options         ALTQ_HFSC       # Hierarchical Packet Scheduler (HFSC)
 +options         ALTQ_PRIQ       # Priority Queuing (PRIQ)
 +options         ALTQ_NOPCC      # Required for SMP build
 +</code>
 +options ALTQ включает подсистему ALTQ.
 +
 +options ALTQ_CBQ включает Class Based Queuing (CBQ). CBQ позволяет распределять пропускную способность соединений по классам или очередям для выставления приоритетов трафика на основе правил фильтрации.
 +
 +options ALTQ_RED включает Random Early Detection (RED). RED используется для предотвращения перегрузки сети. RED вычисляет длину очереди и сравнивает ее с минимальной и максимальной границей очереди. Если очередь превышает максимум, все новые пакеты отбрасываются. В соответствии со своим названием, RED отбрасывает пакеты из различные соединений в произвольном порядке.
 +
 +options ALTQ_RIO включает Random Early Detection In and Out.
 +
 +options ALTQ_HFSC включает Hierarchical Fair Service Curve Packet Scheduler. Дополнительная информация о HFSC находится по адресу: http://www-2.cs.cmu.edu/~hzhang/HFSC/main.html.
 +
 +options ALTQ_PRIQ включает Priority Queuing (PRIQ). PRIQ всегда пропускает трафик из более высокой очереди первым.
 +
 +options ALTQ_NOPCC включает поддержку SMP для ALTQ. Эта опция необходима для SMP систем.
 +
 +
 +===== Процедура создания и компиляции нового ядра =====
 +Файл LINT очищенный от комментариев файл /usr/src/sys/conf/NOTES
 +<code>
 +# cd /usr/src/sys/i386/conf
 +# grep NETGRAPH /usr/src/sys/conf/NOTES
 +# make LINT
 +cat ../../conf/NOTES NOTES | sed -E -n -f ../../conf/makeLINT.sed > LINT
 +# mkdir /root/kernels
 +# cp GENERIC /root/kernels/PFVLAN
 +# ln -s /root/kernels/PFVLAN
 +</code>
 +Редактируем файл конфигурации нового ядра PFVLAN:
 +  cpu             I486_CPU # удаляем поддержу устаревших процессоров
 +  cpu             I586_CPU # удаляем поддержу устаревших процессоров
 +  ident           GENERIC # Заменяем на название нашего ядра, т.е. PFVLAN
 +Дальше нужно в ядре включить нужные опции для VLAN и PF, предварительно проверив PFVLAN на наличие нужных нам опций. Сделав такой запрос
 +<code>
 +# cat GENERIC | grep -i miibus
 +# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
 +device miibus # MII bus support
 +# 'device ed' requires 'device miibus'
 +# USB Ethernet, requires miibus
 +</code> видим, что опция miibus уже включена в ядро и нам дополнительно ее прописывать не надо.
 +Ниже показан PFVLAN, только с изменениям, которые отличают его от ядра GENERIC:
 +<code>
 +# ee /root/kernels/PFVLAN
 +...
 +# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.474.2.17.2.1 2009/04/15 03:14:26 kensmith Exp $
 +
 +cpu             I686_CPU
 +ident           PFVLAN
 +
 +...
 +
 +# New kernel PFVLAN
 +# for Vlan
 +device          vlan
 +# for PF
 +device          pf
 +device          pflog
 +device          pfsync
 +#for ALTQ
 +options         ALTQ
 +options         ALTQ_CBQ        # Class Bases Queuing (CBQ)
 +options         ALTQ_RED        # Random Early Detection (RED)
 +options         ALTQ_RIO        # RED In/Out
 +options         ALTQ_HFSC       # Hierarchical Packet Scheduler (HFSC)
 +options         ALTQ_PRIQ       # Priority Queuing (PRIQ)
 +options         ALTQ_NOPCC      # Required for SMP build
 +# IPSEC for FreeBSD 7.0 and above
 +# for IPsec
 +options         IPSEC
 +options         IPSEC_FILTERTUNNEL
 +device          crypto
 +</code>
 +Опции ядра для использования [[netgraph]] в программах [[mpd]], [[PPPoE]], [[PPP]].
 +<code>
 +# NETGRAPH MPD - необходимо и достаточно этих 3-х опций
 +options         NETGRAPH
 +options         NETGRAPH_MPPC_COMPRESSION
 +options         NETGRAPH_MPPC_ENCRYPTION
 +#PPPoE
 +options         NETGRAPH_ETHER
 +options         NETGRAPH_SOCKET
 +options         NETGRAPH_TEE
 +options         NETGRAPH_BPF
 +options         NETGRAPH_IFACE
 +options         NETGRAPH_KSOCKET
 +options         NETGRAPH_PPP
 +options         NETGRAPH_PPTPGRE
 +options         NETGRAPH_TCPMSS
 +options         NETGRAPH_VJC
 +options         NETGRAPH_ONE2MANY
 +options         NETGRAPH_RFC1490
 +options         NETGRAPH_TEE
 +options         NETGRAPH_TTY
 +options         NETGRAPH_UI
 +</code>
 +Собираем ядро
 +<code>
 +# cd /usr/obj
 +# chflags -R noschg *
 +# rm -rf *
 +# cd /usr/src
 +# make buildkernel KERNCONF=PFVLAN
 +# make installkernel KERNCONF=PFVLAN
 +</code>
 +Новое ядро будет скопировано в каталог /boot/kernel как /boot/kernel/kernel, а старое ядро будет перемещено в /boot/kernel.old/kernel. Теперь перезагрузите систему для того, чтобы использовать новое ядро.
 +
 +Если ядро не загружается, читаем здесь: [[http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/kernelconfig-trouble.html#KERNELCONFIG-NOBOOT|Руководство FreeBSD Глава 8. Настройка ядра FreeBSD]]
 +
 +Система после установки нового ядра PFVLAN: 
 +<code>
 +# uname -a
 +FreeBSD ns.vip.com.ua 7.2-RELEASE-p4 FreeBSD 7.2-RELEASE-p4 #0: Sat Oct 24 20:01:31 EEST 2009     root@ns.com.ua:/usr/obj/usr/src/sys/PFVLAN  i386
 +</code>
 +
 +===== Опции исключаемые из ядра =====
 +Из ядра можно исключить:
 +  * [[http://ru.wikipedia.org/wiki/SCTP|SCTP]] протокол мало где используется - Windows его не поддерживает.<code>options         SCTP                    # Stream Control Transmission Protocol</code>
 +  * Поддержка IPV6<code>options         INET6                   # IPv6 communications protocols</code>
  

📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.

📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.

💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!