www.samag.ru
Журнал «БИТ. Бизнес&Информационные технологии»      
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Интеграция Open Source-решений  

Open Source в облачной среде

Облачные решения становятся всё более популярными в мире. Компании стремятся использовать их для

 Читать далее...

Автоматизация  

Нейросеть вам в руки! Как использовать ИИ для автоматизации задач

Использование ИИ для автоматизации задач помогает компании получить конкурентное преимущество, поскольку объединение

 Читать далее...

Рынок труда  

Специалист по этическому ИИ, инженер по квантовым вычислениям или аналитик по метавселенной?

Новые тенденции в развитии ИТ могут привести к возникновению новых специальностей в

 Читать далее...

Книжная полка  

Учитесь убеждать и побеждать

Издательство «БХВ», как всегда, порадовало своих читателей хорошими книжными новинками. Кроме популярных

 Читать далее...

Сетевая инфраструктура  

Как удаленная работа меняет подход к сетевой инфраструктуре?

С увеличением числа сотрудников, работающих из дома, организации сталкиваются с необходимостью создания

 Читать далее...

Мониторинг  

Какой мониторинг нужен сегодня?

По мнению экспертов ГК InfoWatch, действия сотрудников – самая распространенная причина инцидентов

 Читать далее...

Книжная полка  

Руководство для тех, кто увлечен ИИ, программированием. И дизайном

Накануне лета издательство «БХВ» выпустило книжные новинки, от которых любителям чтения будет

 Читать далее...

Мобильные приложения  

Искусственный интеллект в мобильных приложениях: возможности и перспективы

Обзор современных применений ИИ в мобильных приложениях, анализ перспектив развития этой технологии,

 Читать далее...

ИТ-образование  

Как сделать ИТ-образование эффективным?

Эксперты ИТ-отрасли отвечают на вопросы «СА». Обсуждаем ключевые аспекты для улучшения образовательных

 Читать далее...

Work-life balance  

Как айтишнику найти баланс между работой и личной жизнью?

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

 Читать далее...

Книжная полка  

Всё самое нужное – под одной обложкой

Отличительная черта книжных новинок, выпущенных недавно издательством «БХВ» – это их универсальность. Не просто

 Читать далее...

ИТ-инфраструктура  

Системы мониторинга ИТ-инфраструктуры-2025

Без мониторинга ИТ-инфраструктуры не обходится ни одна компания, хотя бы потому, что

 Читать далее...

Открытое ПО  

Безопасность Open Source: рискуем или контролируем?

Компания «Кросс технолоджис» изучила, как используется ПО с открытым кодом в компаниях

 Читать далее...

Работа с нейросетью  

Скажи, есть ли у тебя AI, и я скажу, кто ты

Недавно сервис по поиску работы SuperJob выяснил, что каждый второй россиянин уже

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 9395
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 9638
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 7043
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 4401
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 5182
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 5185
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 7851
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 4554
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 4817
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 8798
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 12230
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 13819
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 15584
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 10451
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 8484
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 6713
Комментарии: 4
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 5859
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 4707
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 4432
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 4645
Комментарии: 1
Рецензия на книгу «MongoDB в действии»

 Читать далее...

Друзья сайта  

 Компиляция FreeBSD

Архив номеров / 2003 / Выпуск №4 (5) / Компиляция FreeBSD

Рубрика: Администрирование /  Продукты и решения

АЛЕКСАНДР ПРОКОШЕВ

Компиляция FreeBSD

Перекомпиляция ядра и самой операционной системы FreeBSD – часть непрерывного процесса обеспечения безопасности интернет-сервера, и хотя у новичка в мире открытых исходников слова «компиляция ядра операционной системы» обычно вызывают благоговейное преклонение перед произносящим их, этот процесс на самом деле не является слишком сложным и тем более таинственным. В этой статье я опишу обычный порядок перекомпиляции системы, ее ядра, а также основные опции и параметры команды make, используемые в процессе компиляции для систем, основанных на процессорах семейства Intel x86. На вашей машине должны быть установлены инструменты разработки – gcc, make и все соответствующие библиотеки и заголовочные файлы.

Исходные тексты операционной системы обычно находятся в каталоге /usr/src. Для их обновления до текущей версии чаще всего используется программа cvsup, устанавливаемая из коллекции пакетов FreeBSD. cvsup является разновидностью CVS [2] (concurrent versions system, одна из широко распространенных систем управления версиями программ, используемых для групповой разработки программного обеспечения. СVS обеспечивает подмножество ее функций, необходимое для синхронизации локальных файлов с файлами, расположенными на master-сервере cvsup. При работе cvsup передает только различия (diffs) между измененными со времени последнего обновления файлами, а также может использовать компрессию потока (с использованием zlib), что позволяет этому методу обновления существенно выигрывать в производительности и нагрузке на канал по сравнению, например, c FTP.

Данная программа вызывается с параметром, указывающим местоположение файла, описывающего следующие основные параметры:

  • местонахождение исходных текстов OS на локальном винчестере;
  • имя сервера, на котором расположен репозиторий с исходными текстами, соответствующими текущей версии;
  • части операционной системы (например, игры, библиотеки, ядро или вся система целиком), подлежащие обновлению.

Рассмотрим подробно два параметра – default tag и список коллекций для обновления. Параметр default tag указывает, до какой ветки FreeBSD вы хотите производить апгрейд. Возможные варианты:

  • . (точка) – FreeBSD-current. FreeBSD «с переднего края». Не рекомендуется тем, кто только осваивает процесс перекомпиляции.
  • RELENG_5_0 – FreeBSD 5.0. Ветка 5.0-RELEASE, используется для критических багфиксов и патчей системы безопасности.
  • RELENG_4. Ветка FreeBSD-4.x. Сейчас это FreeBSD-STABLE. Основная ветвь развития четвертой версии системы.
  • RELENG_4_7. FreeBSD-4.7-RELEASE, используется для критических багфиксов и патчей системы безопасности.
  • RELENG_4_6. FreeBSD 4.6 и 4.6.2, используется для критических багфиксов и патчей системы безопасности.
  • RELENG_4_5. FreeBSD 4.5, используется для критических багфиксов и патчей системы безопасности.
  • RELENG_4_4. FreeBSD 4.4, используется для критических багфиксов и патчей системы безопасности.
  • RELENG_4_3. FreeBSD 4.3, используется для критических багфиксов и патчей системы безопасности.
  • RELENG_3. Ветка FreeBSD-3.x. Сейчас это 3.x-STABLE. Основная ветвь развития третьей версии системы.
  • RELENG_2_2. Ветка FreeBSD-2.2.x. Устаревшая ветвь.

Чем отличается RELEASE от STABLE? Очень просто: STABLE – это то, что получается из RELEASE в процессе его (релиза) технического сопровождения, то есть исправления ошибок и латания обнаруженных дыр в безопасности. Отдельным пунктом здесь стоит версия системы, обозначаемая тегом RELENG_4, которая представляет собой «стабильную ветвь разработки». Рано или поздно на основе этой версии будет выпущена версия 4.8-RELEASE (RELENG_4_8_0_RELEASE), от которой, в свою очередь, отойдет 4.8-STABLE (RELENG_4_8).

Переходим к списку коллекций. cvsup понимает следующие коллекции, относящиеся к исходным текстам операционной системы:

  • src-all – Полное дерево исходников.
  • src-base – Базовые программы.
  • src-bin – Программы в /usr/src/bin – то, что после установки находится в /bin.
  • src-contrib –  Contributed software, в том числе awk, gcc, tcpdump и многое другое, без чего не обойтись.
  • src-etc – То, что с помощью mergemaster"а устанавливается в /etc.
  • src-games – Игры.
  • src-gnu – GNU software.
  • src-include – .h-файлы для помещения в /usr/include.
  • src-kerberos5 – Kerberos 5.
  • src-kerberosIV – Kerberos 4.
  • src-lib – Исходники системных библиотек.
  • src-libexec –  Некоторые демоны. Складываются в /usr/libexec.
  • src-release –  Инструменты для построения дистрибутива.
  • src-sbin – Будущее содержимое /sbin.
  • src-share – Будущее содержимое /usr/share.
  • src-sys – Исходники ядра.
  • src-tools –  Инструменты для тестирования и поддержки системы. Не собираются во время buildworld.
  • src-usrbin – Будущее содержимое /usr/bin.
  • src-usrsbin – Будущее содержимое /usr/sbin.
  • src-crypto src-eBones src-secure src-sys-crypto –  Криптоподсистема.

Еще раз подчеркну, что коллекция src-all включает в себя все остальные коллекции, так что если в sup-файле вы указали «src-all», нет надобности указывать еще какие-либо коллекции. С другой стороны, FreeBSD Handbook [1] рекомендует не обновлять userspace программы отдельно от ядра и наоборот, так как это может привести к неработоспособности программ из-за несоответствий структур данных (простой пример – команда ps, часто не работающая с ядром, версия которого не соответствует версии остальной системы).

Полностью формат sup-файла описан в документации по cvsup. Далее в этой статье я предполагаю, что параметр default tag установлен в значение «RELENG_4», соответствующий версии системы 4.x-STABLE, и производится обновление системы целиком (используется тег src-all). При этом наш sup-файл имеет примерно следующий вид:

--== cut /etc/cvsupfile.sys ==--

# Файл обновления системы

*default  host=cvsup5.FreeBSD.org

*default  base=/usr

*default  prefix=/usr

*default  release=cvs

*default  tag=RELENG_4

*default  delete use-rel-suffix compress

src-all

# src-base

# src-bin

# src-contrib

# src-etc

# src-games

# src-gnu

# src-include

# src-kerberos5

# src-kerberosIV

# src-lib

# src-libexec

# src-release

# src-sbin

# src-share

# src-sys

# src-tools

# src-usrbin

# src-usrsbin

# src-crypto

# src-eBones

# src-secure

# src-sys-crypto

--== end cut ==--

Запускаем cvsup:

--== cut here ==--

ice.root# cvsup /etc/cvsupfile.sys

Connected to cvsup5.FreeBSD.org

Updating collection src-all/cvs

Edit src/etc/Makefile [выводимые сообщения опущены]

Edit src/share/misc/pci_vendors

Finished successfully ice.root#

--== end cut ==--

После успешного завершения работы cvsup в каталоге /usr/src нашего компьютера находятся исходные тексты, соответствующие текущему содержанию CVS-репозитория ветки STABLE четвертого релиза FreeBSD.

Теперь переходим к компиляции.

Сначала просмотрим файл, настройки которого влияют на конфигурацию и производительность получаемой в результате системы – /etc/make.conf (или /etc/defaults/make.conf). В нем вы можете задать параметры оптимизации для компилятора, указать, компилировать ли профилировочные версии библиотек, sendmail, поставляемый с системой, perl, а также некоторые другие опции. Интересное замечание насчет параметров оптимизации: FreeBSD Handbook [1] рекомендует выставлять флаг оптимизации «-O», но ничто не мешает вам выставить, к примеру «-O3 -march=i686», хотя, конечно, это скажется на времени компиляции. Еще одно важное замечание: если вы производите апгрейд с версии FreeBSD 4.7-RELEASE или ниже на 4-STABLE, обязательно выставьте параметр 2COMPAT3X» файла /etc/make.conf в значение «yes», иначе при запуске программ, скомпилированных для FreeBSD 3.x (одной из таких программ является JDK 1.1.8, содержащийся в ports), вы увидите сообщение динамического редактора связей о ненайденном символе __stderrp в системных библиотеках.

Начнем с конфигурации ядра. Традиционно в 4.3BSD-based системах, к которым относится и FreeBSD, конфигурация ядра описывается в текстовом файле, который затем с помощью команды config преобразуется в h-файлы и Makefile, используемые непосредственно инструментами компиляции. Примеры файлов конфигурации находятся в каталоге /usr/src/sys/i386/conf и называются GENERIC и LINT. Для создания своей конфигурации скопируйте файл GENERIC в файл, к примеру:

MYCONF:

cd /usr/src/sys/i386/conf

cp GENERIC MYCONF

и приступайте к его редактированию. Значения опций довольно подробно описаны в файле LINT, и я не буду повторно описывать их здесь. Естественно, вы должны отчетливо представлять себе аппаратную конфигурацию вашей машины. И еще один совет: на первых порах случается всякое, поэтому лучше вносить серьезные изменения в конфигурацию ядра той же версии, под которой в данный момент работает ваш компьютер, то есть до обновления исходников через cvsup. Такой подход имеет два преимущества:

  • исключается полная перекомпиляция системы (то есть make buildworld не выполняется – только make buildkernel, так как установленная система той же версии, что и собираемое ядро), что значительно уменьшает время итерации;
  • больше возможности сохранить работоспособность системы при загрузке со старым ядром в случае неработоспособности вновь собранного из-за того же самого соответствия версии системы версии ядра.

После завершения редактирования перейдите в каталог /usr/src и дайте команду сборки системы: cd /usr/src make buildworld. Время выполнения этой команды зависит от заданных ранее опций компиляции и может составить от часа до нескольких часов. Если вы компилируете на многопроцессорной машине, имеет смысл выполнять make с ключом -j, где n – количество процессоров:

make -j4 buildworld

Внимание! Для сборки системы вам потребуется около 300 Мб свободного места на разделе файловой системы, содержащем каталог /usr/obj.

После окончания сборки системы остается только скомпилировать ядро:

make buildkernel KERNCONF=MYCONF

Здесь MYCONF – имя того самого файла конфигурации ядра в каталоге /usr/src/sys/i386/conf, который вы недавно редактировали. Обратите внимание, что команда make выполняется в каталоге /usr/src, а имя файла конфигурации передается ей без пути до него. После успешного завершения работы make перейдите в однопользовательский режим:

shutdown now

и, вновь войдя в каталог /usr/src cd /usr/src, выполните три заключительные команды:

make installkernel KERNCONF=MYCONF

make installworld

fastboot

При выполнении make installkernel ваше нынешнее ядро будет скопировано в файл /kernel.old, а модули – в каталог /modules.old. Это даст вам шанс все же запустить систему со старым ядром, если новое по какой-либо причине окажется неработоспособным.

Совет: если вы компилировали ядро самый первый раз (то есть то, которое перед выполнением make installkernel находится в файле /kernel, заведомо работоспособно), перед make installkernel скопируйте его на всякий случай, допустим, в /kernel.stable, чтобы оно не затерлось последующими выполнениями make installkernel. У вас будет возможность впоследствии загрузить его из командной строки начального загрузчика OS вместо ядра по умолчанию /kernel. Описание работы с командами начального загрузчика выходит далеко за рамки темы данной статьи, поэтому интересующихся мы отсылаем к страницам онлайнового руководства по операционной системе, касающихся команд boot и loader (man 8 boot и man 8 loader).

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

Ссылки:

  1. FreeBSD Handbook: http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/index.html
  2. Concurrent versions system: http://www.cvshome.org

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru