Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

Конфигурирование и перегенерация ядра.

Зачем это нужно?
Этапы процесса перегенерации
Создание драйверов устройств
Упражнения
Вопросы и ответы

Зачем это нужно?

При инсталляции FreeBSD у вас создалось в системе ядро (файл /kernel), которое вполне работоспособно. Зачем же его переделывать?

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

В эту конфигурацию встроена поддержка ВСЕХ типов накопителей (HDD и CD) и ВСЕХ сетевых карт, которые на данный момент поддерживаются FreeBSD. Это вполне логично - вы должны иметь возможность поставить свой Unix и дополнительные программы на тот HDD, который имеется у вас и суметь войти в сеть, какой бы сетевой карточкой вы ни пользовались.

В то же время, в ядро не включены некоторые полезные модули, которые могут понадобится в дальнейшем, особенно, если вы хотите использовать вашу машину в качестве сервера. (Например - поддержка firewall, PPP-сервера, bpf и т.п.).

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

  • убрать все лишнее (драйверы устройств, которых у вас нет);
  • добавить то, чего не хватает для работы.

Первое позволит вам ускорить загрузку (так как система не будет тратить время на поиск и тестирование несуществующих в вашей машине устройств) и сэкономить место в ОЗУ, занимаемое ядром.

А без второго вы, скорее всего, не сможете решать свои задачи.

Этапы процесса перегенерации

В общем виде этот процесс выглядит так:

  • установить исходные коды ядра (как правило их устанавливают в процессе инсталляции системы);
  • составить свою конфигурацию ядра (конфигурационный файл);
  • запустить программу config, которая создаст необходимые файлы *.h и *.c в соответствии с вашей конфигурацией;
  • скомпилировать новое ядро с помощью программы make;
  • установить новое ядро (make install);
  • перезагрузиться.

Теперь рассмотрим эти пункты более подробно.

Установка исходных кодов ядра.

Прежде всего, посмотрите в директорию /usr/src/sys если она не пустая, то все что вам нужно уже на месте. И вы можете спокойно перейти к следующему пункту.

В противном случае, вам надо взять из дистрибутива нужные файлы и установить их. Это легко можно проделать с помощью команды /stand/sysinstall. Более подробно, см. раздел "Инсталляция системы".

Составление конфигурационного файла.

Перейдите в директорию /usr/src/sys/i386/conf.

Здесь имеются два конфигурационных файла GENERIC и LINT. Первый представляет собой конфигурацию того ядра, которое установилось у вас при инсталляции системы. Вы можете посмотреть в нем, что именно может ваше текущее ядро.

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

Вам необходимо составить свой конфигурационный файл. Его название значения не имеет. Можете назвать его, например, myKERNEL. Обычно ему дают то же название, что и доменное имя машины, либо (удобно, если вы заготавливаете несколько ядер для выполнения разных задач) - FIRST (SECOND, THIRD и т.п.).

В качестве основы для нового файла вы можете использовать один из уже имеющихся файлов - GENERIC или LINT.

Если вы возьмете за основу GENERIC, то вам придется убрать оттуда описания всех лишних устройств и дописать необходимые вам options.

Если же вы возьмете за основу LINT, то все редактирование будет заключаться в удалении всего ненужного. Это может оказаться весьма и весьма утомительным занятием.

Возьмем за основу файл GENERIC. Скопируйте его:

cp GENERIC myKERNEL

Теперь нужно отредактировать его любым текстовым редактором.

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

Ниже приводится список опций конфигурационного файла.

  1. machine (в нашем случае это "i386", т.е. процессор совместимый с Intel 386 );
  2. cpu "I586_CPU"

    "I386_CPU" - 386-е процессоры;

    "I486_CPU" - 486-е процессоры, включая AMD-5x86;

    "I586_CPU" - 586-e процессоры: Pentium, Pentium MMX, AMD-K5, AMD-K6;

    "I686_CPU" - 686-е процессоры: Pentium Pro, Pentium II;

  3. ident myKERNEL (идентификатор, или название ядра).
  4. options
  5. config
  6. controller
  7. device
  8. pseudo-device

Проверить список устройств в вашей системе можно с помощью следующей команды:

# dmesg

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

Что же нужно, чтобы сделать все правильно?

  • иметь при себе список всех устройств, установленных в вашем компьютере;
  • хорошо знать, чего вы хотите от FreeBSD на данной машине;

Подготовка к компиляции

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

/usr/sbin/config myKERNEL

Она создаст в директории /usr/src/sys директорию compile/myKERNEL (о чем и сообщит вам в конце своей работы) и поместит туда файлы, необходимые для компиляции ядра. Так же эта команда попросит вас "не забыть" выполнить команду make depend.

Выполните команды

Компиляция нового ядра

Находясь в директории /usr/src/sys/compile/myKERNEL и наберите команду

# make

она сделает все что нужно.

Учтите, что ядро системы - достаточно сложная программа, поэтому ее компиляция потребует довольно много времени. От 15-20 минут на процессоре Pentium до часа, на 386 процессоре.

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

Установка нового ядра

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

# make install

она переименует старое ядро в /kernel.old и поместит в корневую директорию ваш новый /kernel. После этого нужно перегрузить компьютер.

Если загрузка нового ядра не получилась (такое тоже возможно), вы можете загрузиться со старым ядром. Для этого, в начале загрузки на подсказку Boot: надо быстро сказать kernel.old. Естественно, после этого надо снова вернуться к редактированию вашей конфигурации и повторить все последующие пункты.

Только не торопитесь. Если новое ядро опять окажется неработоспособным, вы можете попасть в неприятную ситуацию, так как после очередной инсталляции ядра командой make install получится:

kernel.old - предыдущая неработающая версия ядра

kernel - новая, но столь же бесполезная.

Но даже теперь не отчаивайтесь. У вас должен был остаться в корневой директории файл kernel.GENERIC и вы можете всегда загрузить его (конечно, если вы не удалили его ранее в целях экономии места на диске). Поэтому на подсказку Boot: надо набрать kernel. GENERIC.

Для того, чтобы не попасть в вышеописанную ситуацию, после загрузки старого ядра, замените им ваше новое ядро:

# cd /
# chflags noschg kernel
# cp kernel kernel.new
# cp kernel.old kernel
# chflags schg kernel
# reboot

После этого можете смело продолжать ваши изыскания по конфигурированию ядра.

И напоследок, проверьте наличие файла /boot.config. Если этого файла нет - создайте его:

# echo /boot/loader " /boot.config

В каталоге /boot должны содержаться файлы:

boot0
boot1
boot2
loader

Создание драйверов устройств.

Если вы добавили в конфигурации ядра устройства (реальные или pseudo-device), возможно потребуется создать для них файлы-устройства в директории /dev. Какие-то общие рекомендации по этому поводу дать трудно, поскольку это зависит от того - какие устройства были добавлены в конфигурационный файл.

Во всяком случае, если вы знаете какого файла (в /dev) не хватает, его можно создать с помощью программки MAKEDEV, которая лежит в той же /dev. Это даже не программа, а командный файл, в начале которого есть комментарии, в которых более-менее подробно описаны возможные аргументы (имена устройств) для MAKEDEV. Если в ядро включен, например, Sound Blaster 16, но устройства snd0 нет в каталоге /dev (проверить это можно командой ls /dev), нужно создать его:

# cd /dev
# sh MAKEDEV snd0

Упражнения

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

Вопросы и ответы

Вопрос: Я не могу скомпилировать ядро. Отсутствует _hw_float.

Ответ: Вы, возможно, удалили npx0 из вашего файла конфигурации ядра, потому что у вас нет сопроцессора. Это неправильно. Даже если у вас нет математического сопроцессора, вы должны включить поддержку npx0

Сopyright © 2000. Андрей Фёдоров
http://www.anriintern.com/computer/freebsd/

Назад | Содержание | Вперед

 

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...