Инструменты пользователя

Инструменты сайта


peresborka_world_rebuilding_world

Различия

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

Ссылка на это сравнение

peresborka_world_rebuilding_world [2010/05/08 04:34] (текущий)
Строка 1: Строка 1:
 +====== Rebuilding “world” ======
 +===== Предварительные действия =====
 +  * [[cvsup]]: синхронизация (обновление) локального дерева исходных текстов,​ портов и документации.
 +  * **Читаем руководство:​ [[http://​www.freebsd.org/​doc/​ru_RU.KOI8-R/​books/​handbook/​makeworld.html|Пересборка ''​world''​]]**;​ [[http://​www.malevanov.spb.ru/​freebsd/​mergemaster/​|http://​www.malevanov.spb.ru/​freebsd/​mergemaster/​|Использование mergemaster]]
 +  * **Удалите /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
 +===== Предварительные действия =====
 +
 +В ядре нужна поддержка [[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>​
  
загрузка...
peresborka_world_rebuilding_world.txt · Последние изменения: 2010/05/08 04:34 (внешнее изменение)