Freebsd где находится файл конфигурации ядра. Мое ядро FreeBSD. Установка и обновление исходных текстов системы Freebsd

Дистрибутив фрюхи часто называют самым подходящим для решения прикладных сетевых задач в локальной сети. Сегодня мы займемся решением одной из сетевых задач — настройкой шлюза на Freebsd 10 для доступа в интернет из локалки. Это простой, популярный и востребованный функционал сервера, который можно расширять дополнительными возможностями.

Будем использовать следующую версию системы для решения нашей задачи по настройке шлюза:

# uname -v FreeBSD 10.2-RELEASE-p8 #0 r292756M: Sat Dec 26 22:49:34 MSK 2015 root@freebsd:/usr/obj/usr/src/sys/GENERIC

На сервере установлены 2 сетевые карты:

В нашу задачу по настройке программного freebsd роутера будет входить настройка маршрутизации на сервере, установка и настройка ipfw, включение nat, настройка локального dhcp и dns сервера.

Подготовка сервера к настройке шлюза

Информацию о выданных leases dhcp сервера dnsmasq можно посмотреть в файле /var/db/dnsmasq.leases .

Анализ сетевой активности в freebsd с помощью iftop

Иногда хочется посмотреть, что происходит на роутере и кто использует интернет в данный момент. По-умолчанию, в системе нет готового средства для получения этой информации. На помощь нам придет простая программа iftop, которая позволяет в режиме реального времени посмотреть активность на сетевом интерфейсе.

Устанавливаем iftop на настроенный Freebsd шлюз:

# pkg install iftop

Запускаем iftop с указанием интерфейса и отображением используемых портов:

# iftop -i hn1 -P

Видим любопытную картину — кто, куда, по какому порту и с какой скоростью лезет.

Я для примера на одном из компьютеров запустил генератор трафика интернета. Он занял почти весь канал и это стало отлично видно на роутере с помощью iftop. Конечно, эта простая утилита не решает всех вопросов по мониторингу сетевой активности, но для представления текущей картины подходит, если вам не нужно что-то большее.

Заключение

Подведем итог того, что сделали. За короткое время настроили полноценный шлюз (по сути программный роутер) на базе Freebsd 10 для обеспечения выхода в интернет клиентов за сервером. При этом обеспечили автоматическое получение настроек. Даже на скромном виртуальном сервере такой шлюз способен переварить достаточно большой траффик.

Вся настройка занимает буквально 10-15 минут. Основное время уходит на сборку ядра. Чем выше версия Freebsd, тем дольше оно собирается, несмотря на то, что скорости железа существенно возрастают.

Пройдемся по пунктам и разберемся с тем, что конкретно мы сделали:

  1. Подготовили сервер к настройке шлюза.
  2. Пересобрали ядро с необходимыми параметрами.
  3. Настроили ipfw и nat, включили маршрутизацию.
  4. Установили и настроили dnsmasq для раздачи сетевых настроек по dhcp и dns сервера.
  5. Установили iftop для простейшего анализа сетевой активности на внешнем интерфейсе.

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

Июнь 3, 2015 12:15 пп 2 161 views | Комментариев нет

Операционная система FreeBSD 10.1 по умолчанию использует ядро GENERIC. Эта стандартная конфигурация используется для поддержки большого количества аппаратных средств из коробки. Компиляция пользовательского ядра, в свою очередь, позволяет повысить безопасность, увеличить функциональность и улучшить производительность сервера.

Для этого FreeBSD использует две ветки кода: стабильную и текущую. Стабильная ветка – это последний релиз кода, готовый к производству. Текущая ветка – это последний релиз кода от команды разработчиков, который предоставляет передовые функции, но при этом более уязвим к ошибкам и нестабильностям системы. В данном руководстве используется стабильная ветка кода.

Это руководство покажет, как выполнить пользовательскую компиляцию ядра FreeBSD.

Требования

1: Загрузка исходного кода ядра

Сначала нужно загрузить исходный код операционной системы.

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

Для хранения кодов команда FreeBSD использует репозиторий Subversion, потому для начала нужно установить бинарный порт Subversion.

sudo pkg install subversion

По умолчанию система FreeBSD использует оболочку tcsh, которая использует внутреннюю хэш-таблицу команд в $PATH. После установки Subversion нужно выполнить команду rehash, благодаря которой система повторно читает конфигурационные файлы.

Теперь найдите копию последней стабильной ветки в каталоге /usr/src.

sudo svn co https://svn0.us-east.FreeBSD.org/base/stable/10 /usr/src

Возможно, система предложит принять сертификат сервера. Чтобы принять его, введите p, убедившись, что контрольная сумма файла (или fingerprint) совпадает с суммой, указанной внизу этой страницы .

2: Пользовательская настройка ядра

Теперь можно приступать к настройке ядра системы.

Согласно конвенции об именах конфигурационных файлов ядра, имя ядра должно записываться в верхнем регистре. В данном руководстве этот файл будет называться EXAMPLE. Настройки ядра хранятся в каталоге /usr/src/sys/architecture/conf; допустим, используется архитектура AMD64.

Откройте конфигурационный каталог:

cd /usr/src/sys/amd64/conf

Создайте файл EXAMPLE и откройте его для редактирования в любом текстовом редактореданном случае используется ее):

Ядро GENERIC поддерживает огромное количество различной аппаратуры; ядро EXAMPLE поддерживает только оборудование, необходимое для запуска сервера, все стандартные и ненужные устройства удалены. Также EXAMPLE поддерживает фаервол для фильтрации пакетов (pf), шейпинг трафика (altq), шифрование файловой системы (geom_eli) и безопасность IP (IPsec).

Примечание : Подробнее об опциях можно прочесть в документации FreeBSD . Попробуйте самостоятельно написать код для ядра.

3: Сборка и установка ядра

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

Вернитесь в каталог /usr/src и выполните команду make buildkernel, используя новый конфигурационный файл:

cd /usr/src
sudo make buildkernel KERNCONF=EXAMPLE

Это может занять некоторое время в зависимости от объёма ресурсов сервера (в среднем сервер в 1GB компилируется 90 минут).

После завершения перекомпиляции установите новое ядро:

sudo make installkernel KERNCONF=EXAMPLE

Затем перезапустите систему.

sudo shutdown -r now

После этого сервер отключит текущие сервисы, синхронизирует диски и обновит ядро.

После перезагрузки сервера войдите в систему. При помощи следующей команды убедитесь, что конфигурационный файл ядра используется системой.

sysctl kern.conftxt | grep ident

На экране должен появиться такой результат:

Настройка и перекомпиляция ядра выполнена успешно.

Tags: ,

дМС УВПТЛЙ СДТБ ОЕПВИПДЙНП ОБМЙЮЙЕ ЧУЕИ ЙУИПДОЩИ ЖБКМПЧ FreeBSD.

чП-РЕТЧЩИ, ДБЧБКФЕ УДЕМБЕН ЛТБФЛЙК ПВЪПТ ЛБФБМПЗБ, Ч ЛПФПТПН ВХДЕФ РТПЙУИПДЙФШ УВПТЛБ СДТБ. чУЕ ЛБФБМПЗЙ, ЛПФПТЩЕ ВХДХФ ХРПНЙОБФШУС, ВХДХФ ПФОПУЙФЕМШОЩНЙ РП ПФОПЫЕОЙА Л ПУОПЧОПНХ ЛБФБМПЗХ /usr/src/sys , ЛПФПТЩК ФБЛЦЕ ДПУФХРЕО ЛБЛ ЛБФБМПЗ /sys . ьФПФ ЛБФБМПЗ УПДЕТЦЙФ НОПЦЕУФЧП РПДЛБФБМПЗПЧ, РТЕДУФБЧМСАЭЙИ УПВПК ТБЪМЙЮОЩЕ ЮБУФЙ СДТБ, ОП ОБЙВПМЕЕ ЧБЦОЩН ДМС ОБУ ВХДЕФ ЛБФБМПЗ arch /conf , Ч ЛПФПТПН ЧЩ ВХДЕФЕ ТЕДБЛФЙТПЧБФШ ЛПОЖЙЗХТБГЙПООЩК ЖБКМ СДТБ Й Ч ЛПФПТПН ОБИПДЙФУС ЛБФБМПЗ compile , ЗДЕ ВХДЕФ УПВЙТБФШУС ЧБЫЕ СДТП. arch НПЦЕФ ВЩФШ i386 , amd64 , ia64 , powerpc , sparc64 ЙМЙ pc98 (БМШФЕТОБФЙЧОБС ЧЕФЧШ БРРБТБФОПЗП ПВЕУРЕЮЕОЙС, РПРХМСТОБС Ч сРПОЙЙ). чУЕ, ЮФП ОБИПДЙФУС ЧОХФТЙ ЛБФБМПЗБ ПРТЕДЕМЕООПК БТИЙФЕЛФХТЩ, ПФОПУЙФУС ФПМШЛП Л ЬФПК БТИЙФЕЛФХТЕ; ПУФБМШОПК ЛПД СЧМСЕФУС НБЫЙООП ОЕЪБЧЙУЙНЩН Й ПВЭЙН ДМС ЧУЕИ РМБФЖПТН, ОБ ЛПФПТЩЕ FreeBSD НПЦЕФ ВЩФШ РПФЕОГЙБМШОП РПТФЙТПЧБОБ. пВТБФЙФЕ ЧОЙНБОЙЕ ОБ МПЗЙЮЕУЛХА УФТХЛФХТХ ЛБФБМПЗПЧ, Ч ЛПФПТПК ЛБЦДПЕ РПДДЕТЦЙЧБЕНПЕ ХУФТПКУФЧП, ЛБЦДБС ЖБКМПЧБС УЙУФЕНБ Й ЛБЦДБС ПРГЙС ТБЪНЕЭБЕФУС Ч УЧПЈН УПВУФЧЕООПН ЛБФБМПЗЕ.

ч РТЙНЕТБИ ЬФПК ЗМБЧЩ РПДТБЪХНЕЧБЕФУС, ЮФП ЧЩ ЙУРПМШЪХЕФЕ БТИЙФЕЛФХТХ i386. еУМЙ БТИЙФЕЛФХТБ ЧБЫЕК УЙУФЕНЩ ПФМЙЮБЕФУС ПФ ЙУРПМШЪХЕНПК Ч РТЙНЕТБИ, ФП ЧБН ОЕПВИПДЙНП ВХДЕФ УППФЧЕФУФЧЕООП ЙЪНЕОЙФШ ЙНЕОБ ЛБФБМПЗПЧ.

рТЙНЕЮБОЙЕ:

еУМЙ ЛБФБМПЗ /usr/src/ ПФУХФУФЧХЕФ Ч ЧБЫЕК УЙУФЕНЕ (ЙМЙ ЬФПФ ЛБФБМПЗ РХУФ), ФП ЬФП ЪОБЮЙФ, ЮФП ЙУИПДОЩЕ ФЕЛУФЩ ОЕ ВЩМЙ ХУФБОПЧМЕОЩ. оБЙВПМЕЕ РТПУФПК УРПУПВ ХУФБОПЧЙФШ ЙИ - ЧПУРПМШЪПЧБФШУС , ЛБЛ ПРЙУБОП Ч тБЪДЕМљ21.5, > . дБМЕЕ, УПЪДБКФЕ УЙНЧПМЙЮЕУЛХА УУЩМЛХ ОБ /usr/src/sys/ :

# ln -s /usr/src/sys /sys

ъБФЕН, РЕТЕКДЙФЕ Ч ЛБФБМПЗ arch /conf Й УЛПРЙТХКФЕ ЖБКМ ЛПОЖЙЗХТБГЙЙ GENERIC Ч ЖБКМ У ЧЩВТБООЩН ЧБНЙ ЙНЕОЕН. оБРТЙНЕТ:

# cd /usr/src/sys/ i386 /conf # cp GENERIC MYKERNEL

рП ФТБДЙГЙЙ ЙНС УПУФПЙФ ЙЪ ВХЛЧ Ч ЧЕТИОЕН ТЕЗЙУФТЕ, Й ЕУМЙ ЧЩ РПДДЕТЦЙЧБЕФЕ ОЕУЛПМШЛП ЛПНРШАФЕТПЧ FreeBSD ОБ ТБЪМЙЮОПН ПВПТХДПЧБОЙЙ, ИПТПЫБС ЙДЕС ДПВБЧМСФШ ЬФП ЙНС Л ЙНЕОЙ ИПУФБ. нЩ ОБЪЧБМЙ СДТП MYKERNEL Ч ЬФПН РТЙНЕТЕ.

рПДУЛБЪЛБ:

рПНЕЭЕОЙЕ ЖБКМБ ЛПОЖЙЗХТБГЙЙ СДТБ Ч /usr/src НПЦЕФ ВЩФШ РМПИПК ЙДЕЕК. еУМЙ ЧЩ ЙУРЩФЩЧБЕФЕ РТПВМЕНЩ, ЙИ НПЦОП ТЕЫЙФШ ХДБМЙЧ /usr/src Й ОБЮБЧ ЧУЕ У ОБЮБМБ. рПУМЕ ЬФПЗП ПВЩЮОП ФТЕВХЕФУС ОЕУЛПМШЛП УЕЛХОД, ЮФПВЩ РПОСФШ, ЮФП ЧЩ ХДБМЙМЙ УПВУФЧЕООЩК ЖБКМ ОБУФТПКЛЙ СДТБ. оЕ ТЕДБЛФЙТХКФЕ ОЕРПУТЕДУФЧЕООП GENERIC , ПО НПЦЕФ ВЩФШ ФБЛЦЕ РЕТЕЪБРЙУБО Й РТЙ УМЕДХАЭЕН ПВОПЧМЕОЙЙ ДЕТЕЧБ ЙУИПДОЩИ ФЕЛУФПЧ , Й ЙЪНЕОЕОЙС СДТБ ВХДХФ РПФЕТСОЩ.

чЩ НПЦЕФЕ УПИТБОЙФШ ЖБКМ ЛПОЖЙЗХТБГЙЙ СДТБ Ч ДТХЗПН НЕУФЕ, Б ЪБФЕН УПЪДБФШ УЙНЧПМЙЮЕУЛХА УУЩМЛХ ОБ ЬФПФ ЖБКМ Ч ЛБФБМПЗЕ i386 .

оБРТЙНЕТ:

# cd /usr/src/sys/ i386 /conf # mkdir /root/kernels # cp GENERIC /root/kernels/ MYKERNEL # ln -s /root/kernels/ MYKERNEL

фЕРЕТШ ПФТЕДБЛФЙТХКФЕ ЖБКМ MYKERNEL Ч УЧПЈН МАВЙНПН ФЕЛУФПЧПН ТЕДБЛФПТЕ. еУМЙ ЧЩ ФПМШЛП ОБЮЙОБЕФЕ, ЕДЙОУФЧЕООЩН ДПУФХРОЩН ТЕДБЛФПТПН УЛПТЕЕ ЧУЕЗП ВХДЕФ vi , ЛПФПТЩК УМЙЫЛПН УМПЦЕО ДМС ФПЗП, ЮФПВЩ ПРЙУБФШ ЕЗП ЪДЕУШ, ОП Ч ВЙВМЙПЗТБЖЙЙ РЕТЕЮЙУМЕОП НОПЦЕУФЧП ЛОЙЗ, Ч ЛПФПТЩИ ЕЗП ЙУРПМШЪПЧБОЙЕ ИПТПЫП ПУЧЕЭЕОП. пДОБЛП FreeBSD РТЕДПУФБЧМСЕФ ВПМЕЕ РТПУФПК ТЕДБЛФПТ ee , ЛПФПТЩК, ЕУМЙ ЧЩ - ОПЧЙЮПЛ, РПДПКДЈФ ЧБН ВПМШЫЕ ЧУЕЗП. оЕ УФЕУОСКФЕУШ ЙЪНЕОСФШ УФТПЛЙ ЛПННЕОФБТЙЕЧ Ч ОБЮБМЕ ЖБКМБ, У ФЕН, ЮФПВЩ ПФПВТБЪЙФШ ЧБЫХ ЛПОЖЙЗХТБГЙА ЙМЙ ЙЪНЕОЕОЙС, ЛПФПТЩЕ ЧЩ УДЕМБМЙ РП УТБЧОЕОЙА У GENERIC .

еУМЙ ЧБН РТЙИПДЙМПУШ УПВЙТБФШ СДТП ДМС SunOS TM ЙМЙ ЛБЛПК-МЙВП ДТХЗПК ПРЕТБГЙПООПК УЙУФЕНЩ ФЙРБ BSD, НОПЗПЕ ЙЪ ФПЗП, ЮФП УПДЕТЦЙФУС Ч ЬФПН ЖБКМЕ ВХДЕФ ПЮЕОШ ЪОБЛПНП ЧБН. еУМЙ ЦЕ ЧЩ, ОБРТПФЙЧ, ЙУРПМШЪПЧБМЙ ДТХЗХА ПРЕТБГЙПООХА УЙУФЕНХ, ФБЛХА ЛБЛ DOS, ЖБКМ ЛПОЖЙЗХТБГЙЙ GENERIC НПЦЕФ РПЛБЪБФШУС ЧБН ЛТБКОЕ УМПЦОЩН, РПЬФПНХ УМЕДХКФЕ ЙОУФТХЛГЙСН Ч ТБЪДЕМЕ лПОЖЙЗХТБГЙПООЩК ЖБКМ НЕДМЕООП Й ЧОЙНБФЕМШОП.

оПЧПЕ СДТП ВХДЕФ УЛПРЙТПЧБОП Ч ЛБФБМПЗ /boot/kernel ЛБЛ /boot/kernel/kernel , Б УФБТПЕ СДТП ВХДЕФ РЕТЕНЕЭЕОП Ч /boot/kernel.old/kernel . фЕРЕТШ РЕТЕЪБЗТХЪЙФЕ УЙУФЕНХ ДМС ФПЗП, ЮФПВЩ ЙУРПМШЪПЧБФШ ОПЧПЕ СДТП. еУМЙ ЮФП-ФП РПКДЈФ ОЕ ФБЛ, ЧЩ НПЦЕФЕ ПВТБФЙФШУС Л ТБЪДЕМХ тЕЫЕОЙЕ РТПВМЕН Ч ЛПОГЕ ЬФПК ЗМБЧЩ, ЛПФПТЩК НПЦЕФ ПЛБЪБФШУС РПМЕЪЕО. оЕ ЪБВХДШФЕ РТПЮЙФБФШ ТБЪДЕМ, ЛПФПТЩК ПВЯСУОСЕФ ЛБЛ ЙУРТБЧЙФШ УЙФХБГЙА, ЛПЗДБ СДТП ОЕ ЪБЗТХЦБЕФУС .

рТЙНЕЮБОЙЕ:

дТХЗЙЕ ЖБКМЩ, ПФОПУСЭЙЕУС Л РТПГЕУУХ ЪБЗТХЪЛЙ, ФБЛЙЕ ЛБЛ ЪБЗТХЪЮЙЛ () Й ЕЗП ЛПОЖЙЗХТБГЙПООЩЕ ЖБКМЩ, ТБЪНЕЭБАФУС Ч /boot . нПДХМЙ УФПТПООЙИ РТПЙЪЧПДЙФЕМЕК НПЗХФ ВЩФШ РПНЕЭЕОЩ Ч /boot/kernel , ИПФС РПМШЪПЧБФЕМЙ ДПМЦОЩ ЪОБФШ, ЮФП ПЮЕОШ ЧБЦОП, ЮФПВЩ НПДХМЙ ВЩМЙ УЙОИТПОЙЪЙТПЧБОЩ У УПВТБООЩН СДТПН. нПДХМЙ, ОЕ ТБУУЮЙФБООЩЕ ОБ ТБВПФХ У УПВТБООЩН СДТПН, НПЗХФ ЧЩЪЧБФШ ОЕУФБВЙМШОПУФШ Й ОЕЛПТТЕЛФОПУФШ ТБВПФЩ.

Решил прояснить для себя вопрос с обновлением системы. В freebsd есть определенная неоднозначность в этом процессе. Один раз я попал в неприятную ситуацию при обновлении и потратил много времени, пока не понял, в чем же было дело. Сейчас постараюсь рассказать обо всех нюансах обновления freebsd. В качестве подопытной машины у меня выступает версия 10.1

Использование утилиты freebsd-update

Установить все обновления безопасности на сервер freebsd можно легко и быстро с помощью утилиты freebsd-update . Итак, у нас имеется:

# uname -a FreeBSD websrv.local 10.1-RELEASE FreeBSD 10.1-RELEASE #0 r274401: Tue Nov 11 21:02:49 UTC 2014 [email protected]:/usr/obj/usr/src/sys/GENERIC amd64

Запускаем freebsd-update , проверяем наличие обновлений и скачиваем необходимые:

# freebsd-update fetch Looking up update.FreeBSD.org mirrors... none found. Fetching public key from update.FreeBSD.org... done. Fetching metadata signature for 10.1-RELEASE from update.FreeBSD.org... done. Fetching metadata index... done. Fetching 2 metadata files... done. Inspecting system... done. Preparing to download files... done. Fetching 19 patches.....10.... done. Applying patches... done. The following files will be updated as part of updating to 10.1-RELEASE-p1:

Устанавливаем обновления:

# freebsd-update install Installing updates... done.

Если после этого мы снова проверим версию системы с помощью uname, то окажется, что ничего не изменилось. Будет показана та же версия. Что же произошло после этого обновления? Произошло бинарное обновление системы до актуальных значений. При этом, если у вас собрано и установлено свое ядро, отличное от GENERIC, то после перезагрузки у вас будет загружено ядро GENERIC. Про это обязательно нужно помнить. Я так долго разбирался, почему вдруг перестала работать команда forward в ipfw. Перепроверил все, что только мог, опустились руки. А все потому, что процесс обновления и перезагрузки сервера были сильно разделены по времени, а заметил я то, что не работает перенаправление еще позже, поэтому не сопоставил эти два события. О том, что у меня не то ядро загружено я и представить не мог. Я же знаю и помню, что ядро собирал и не трогал с тех пор. Вот такой нюанс, о котором нужно не забывать.

Чтобы отразить изменения в версии системы, пересоберем и установим ядро GENERIC. Исходные тексты системы, нужные для сборки, находятся в папке /usr/src. Если у вас там пусто, то их необходимо установить.

Установка и обновление исходных текстов системы Freebsd

Для установки исходных текстов системы есть много способов. Я предлагаю воспользоваться, как мне кажется, самым простым — с помощью программы subversion . Устанавливаем ее из портов:

# cd /usr/ports/devel/subversion # make install clean # rehash

И качаем исходники для версии 10.1:

# svn checkout https://svn0.ru.freebsd.org/base/release/10.1.0 /usr/src

Или для версии 10.2:

# svn checkout https://svn0.ru.freebsd.org/base/release/10.2.0 /usr/src

# svn checkout https://svn0.ru.freebsd.org/base/release/10.3.0 /usr/src

После того, как скачали исходники, снова запускаем обновление системы. Она найдет исправления, которые нужно внести в тексты:

# freebsd-update fetch # freebsd-update install

После этого собираем и устанавливаем ядро GENERIC:

# cd /usr/src # make buildkernel # make installkernel # shutdown -r now

Проверяем версию:

# uname -a FreeBSD websrv.local 10.1-RELEASE-p1 FreeBSD 10.1-RELEASE-p1 #0 r275828M: Tue Dec 16 16:55:19 MSK 2014 [email protected]:/usr/obj/usr/src/sys/GENERIC amd64

Все изменения вступили в силу и отображены.

Теперь для того, чтобы иметь всегда актуальную версию критических обновлений безопасности системы, создадим задание cron на ежедневную проверку обновлений:

# echo "20 3 * * * root freebsd-update cron" >> /etc/crontab

По этому заданию каждый день в 3.20 будет проверяться наличие новых критических обновлений безопасности системы freebsd 10. В случае, если таковые найдутся, они будут закачаны и пользователю root отправлено оповещение. Устанавливать их необходимо вручную.

Помогла статья? Есть возможность автора

Дополнительные материалы по Freebsd

Онлайн курс "Администратор Linux"

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Администратор Linux» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Проверьте себя на вступительном тесте и смотрите программу детальнее по.

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

src — Source for everything but encryption

и потом выбрать

sys — /usr/src/sys (FreeBSD kernel)

.
Доставить можно через /stand/sysinstall.
Считаем, что исходники ядра вы установили.
Под пользователем root идем в папку /usr/src/sys/i386/conf.
Копируем файл GENERIC, например в mykernel. Полученный файл и будем править.
Если у вас машина Pentium4, то советую сразу закоментировать строки:

cpu I386_CPU
cpu I486_CPU
cpu I586_CPU

пусть наша машина будет настроена на определенный процессор и не распыляется на всякую фигню 😉
Можно отключить не используемы устройства, что уменьшит размер ядра и соответсвенно нагрузку на процессор. Посмотреть какие у вас устройства можно коамандой dmesg, после загрузки компьютера.
Так же можно добавить устройства, которые по умолчанию не поддерживаются в ядре. Более подробно устройства описаны в файл LINT для FreeBSD ветки 4.х, и в файле NOTES для FreeBSD ветки 5.х.

После того как мы отредактировали наш файл, можно приступить к его компиляции.
Нам надо будет выполнить следующие команды:

config mykernel - конфигурим ядро
cd ../../compile/mykernel
make depend
make
make install - устанавливаем ядро

Если все прошло удачно, то все что нам надо это перезагрузиться.

P.S. Советую перед эксперементами сохранить нормальное ядро, например под именем kernel.good и тогда если не загрузилось наше новое ядро, мы вместо kernel.old указажем boot kernel.good. Это предлагаю сделать, потмоу что при новом собирании ядра наш kernel.old перезапишется например не рабочим ядром и мы вообще не сможем загрузиться.

P.P.S. Сохранение хорошего рабочего ядра:
Для FreeBSD 4.x — команда cp /kernel /kernel.good
Для FreeBSD 5.x — команда cp -R /boot/kernel /boot/kernel.good

Второй способ обновления ядра:
Перейдите в каталог /usr/src.
# cd /usr/src

Соберите ядро.
# make buildkernel KERNCONF=MYKERNEL

Установите новое ядро.
# make installkernel KERNCONF=MYKERNEL

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

MYKERNEL — конфигурационный файл вашего ядра, который для i386 находится в папке /usr/src/sys/i386/conf. Если не указывать параметр KERNCONF, то соберется ядро GENERIC.



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: