Xgu.ru теперь в Контакте  — приходите и подключайтесь.
Пока мы работаем над следующими видео, вы можете подключиться в Контакте. Познакомимся и обсудим новые страницы и ролики.

Vk-big.pngYoutube-big.jpeg

FreeBSD сборка мира и ядра (build world and kernel)

Материал из Xgu.ru

Перейти к: навигация, поиск

Содержание

[править] Описание

Данная процедура предназначена для следующих ситуаций:

  1. Сборка новой системы
  2. Обновление существующей
  3. Пересборка имеющейся, но со специфичными изменениями

Все команды выполняете на свой страх и риск. Все команды необходимо производить от пользователя root

[править] Процедура сборки

[править] Обновление и/или закачка дерева исходных кодов системы

Для начала все же советуем обновить до последней стабильной версии последнего стабильного релиза (на момент написания статьи 9.0 от января 2012). Для этого согласно официальной документации нам понадобится установленный пакет cvsup-whitout-gui. И внесенные изменения в файл /usr/share/examples/cvsup/stable-supfile. Заменить CHANGE_THIS.FreeBSD.org на cvsup2.ru.FreeBSD.org (опять же на момент написания статьи самый быстрый и доступный сервер для РФ). После этого выполнить команду:

# cvsup -g -L 2 /usr/share/examples/cvsup/stable-supfile

Далее ожидание выкачки дерева исходных кодов системы.

[править] Сборка мира

Перейти в каталог /usr/src, который служит контейнером файлов исходных кодов и выполнить

# make buildworld

Для некоторых ситуаций стоит особенно подчеркнуть что манипулируя опциями можно добиться мигрирования с архитектуры на архитектуру (например с i386 на AMD64)

# make -j4 buildworld TARGET_ARCH=${architecture} TARGET=${architecture} \
__MAKE_CONF=${makeconf} SRCCONF=${srcconf} -C ${sourcepath}

где:

-j4 - опция сборки в 4 потока, служит для ускорения.
Актуально на многопроцессорных и многоядерных системах и существенно сокращает время сборки
${architecture} - архитектура для сборки, по умолчанию та, на которой и происходит сборка (i386, AMD64)
${makeconf} - путь к специфичному файлу make.conf, по умолчанию /etc/make.conf
${srcconf} - путь к специфичному файлу src.conf, по умолчанию /etc/src.conf
${sourcepath} - путь к исходникам системы, по умолчанию /usr/src

[править] Сборка ядра

Осуществляется с помощью команды:

# make buildkernel

Расширенная версия:

# make -j4 buildkernel KERNCONF=GENERIC TARGET_ARCH=${architecture} \
TARGET=${architecture} __MAKE_CONF=${makeconf} SRCCONF=${srcconf} -C ${sourcepath}

где к описанным выше опциям добавилась опция

KERNCONF=GENERIC - GENERIC означает конфигурацию нового ядра.
Конфигурация лежит в /usr/src/sys/${architecture}/conf

[править] Процедура установки

Внимание: алгоритм действий при сборке новой системы и обновлении существующей отличается

Алгоритм сборки новой системы:

  • Сборка мира
  • Сборка ядра
  • Установка мира
  • Установка ядра
  • Установка конфигурационных файлов

Алгоритм обновления

  • Сборка мира
  • Сборка ядра
  • Установка ядра
  • Перезагрузка
  • Обновление части конфигурационных файлов
# cd /usr/src
# mergemaster -p
  • Установка мира
  • Обновление конфигурационных файлов
# mergemaster
  • Перезагрузка

[править] Установка мира

Здесь необходимо быть повнимательнее.

# make installworld

Достопримечательная часть

# make installworld DESTDIR=${mountpoint} TARGET_ARCH=${architecture} \
TARGET=${architecture} __MAKE_CONF=${makeconf} SRCCONF=${srcconf} -C ${sourcepath}

[править] Установка ядра

Установка ядра в отличии от установки мира ничем примечательным не отличается. Разве что стоит отметить что старое ядро по умолчанию переместится в каталог /boot/kernel.old, а новое запишется на место старого по адресу /boot/kernel

# make installkernel

Не будем отходить от традиции

# make installkernel KERNCONF=GENERIC DESTDIR=${mountpoint} \
TARGET_ARCH=${architecture} TARGET=${architecture} \
__MAKE_CONF=${makeconf} SRCCONF=${srcconf} -C ${sourcepath}
где добавляем
${mountpoint} - путь для установки ядра относительно корня каталога в ${mountpoint}/boot/kernel

[править] Установка конфигурационных файлов и скриптов

Итак очень важная часть, котору стоило бы вынести в отдельную статью.

# mergemaster

Пресловутые стереотипы

# mergemaster -m ${sourcepath} -A ${architecture} -D ${mountpoint}

При выполнении этой команды для новой системы создаются в основном скрипты и конфиги в папке ${mountpoint}/etc/. При обновлении будет выведено куча информации сравнения файлов скриптов и конфигурационных файлов. Здесь необходимо просмотреть каждое сообщение. Причина банальна. В файлах содержаться списки пользователей, настройки под конкретную систему. Кое-где придется вручную "сливать" два файла с просмотром каждой строки. От того как пройдет этот пункт будет зависеть будет ли следующая загрузка удачной.