Интересное

Сообщение об ошибке

Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in drupal_environment_initialize() (line 684 of /home/www/nixtalk.com/includes/bootstrap.inc).

Сборка ядра в FreeBSD

Опубликовано ср, 08/10/2011 - 23:23 пользователем Demontager

Как не странно, но в FreeBSD собрать собственное, тобишь custom ядро, не такое уже и сложное задание как может показаться на первый взгляд. Если сравнивать с той же Gentoo, то в BSD это происходит интуитивнее понятнее и без лишних телодвижений.

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

Приступим, дефолтный конфиг который использует GENERIC ядро находится в:

  1. /usr/src/sys/i386/conf/GENERIC

Это справедливо для семейств процессоров архитектуры i386, если производилась установка 64 битной версии FreeBSD, то конфиг лежит тут:

  1. /usr/src/sys/amd64/conf/GENERIC

Конечно, желательно сохранить GENERIC конфиг на случай каких-то форс-мажоров, поэтому, скопируем конфиг в эту же директорию, но под другим именем. Тут и далее буду ссылаться на самый распространённый вариант i386, к примеру:

  1. # cd /usr/src/sys/i386/conf
  2. # cp GENERIC CUSTOMKERNEL

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

  1. # nano /usr/src/sys/i386/conf/CUSTOMKERNEL

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

  1. makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols
  2. options SCHED_ULE # ULE scheduler
  3. options PREEMPTION # Enable kernel thread preemption
  4. options INET # InterNETworking
  5. options INET6 # IPv6 communications protocols
  6. options SCTP # Stream Control Transmission Protocol
  7. options FFS # Berkeley Fast Filesystem
  8. options SOFTUPDATES # Enable FFS soft updates support
  9. options UFS_ACL # Support for access control lists
  10. options UFS_DIRHASH # Improve performance on big directories
  11. options UFS_GJOURNAL # Enable gjournal-based UFS journaling
  12. options MD_ROOT # MD is a potential root device
  13. options NFSCLIENT # Network Filesystem Client
  14. options NFSSERVER # Network Filesystem Server

Как видно из примера, вполне всё читабельно - модуль и его описание, что нужно и что не нужно уже придётся решать в конкретной ситуации. Описывать все возможные опции не буду, потомучто их несметное количество, наиболее свежий вариант их описания всегда находится в английском хендбуке http://www.freebsd.org/doc/handbook/kernelconfig-config.html

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

  1. # cd /usr/src
  2. # make buildkernel KERNCONF=CUSTOMKERNEL

Само собой разумеется у вас должны лежать исходные тексты ядра в /usr/src.

И последний щтрих, установка свежеоткомпилированного ядра:

  1. # make installkernel KERNCONF=CUSTOMKERNEL

После завершения, ваше новое ядро автоматически заменит старое. Новое будет тут /boot/kernel/kernel, старое переместится сюда /boot/kernel.old/kernel

Готово, делаем reboot и проверяем.

p.s.

У меня проблем с компиляцией и установкой CUSTOM ядра не возникло, но если таковые пояивились у вас, не стоит паниковать. Благо в FreeBSD Bootloader есть опция загрузки старого/работоспособного ядра. Для этого, когда появляется меню загрузщика, необходимо выбрать “Escape to a loader prompt” и там в консоли ввести boot kernel.old , тоесть мы дадим команду загрузить то старое GENERIC ядро.

category_index: 
Поделится: 

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