По умолчанию, в операционной системе FreeBSD 11 используется стандартное ядро, которое называется GENERIC
. В этой статье описан процесс перекомпиляции ядра (называемого CUSTOM
в данном примере) с настройкой дополнительных параметров.
Подготовка
Для начала, установим ОС FreeBSD. Скачать её дистрибутив можно на официальном сайте: https://www.freebsd.org/ru/.
Когда процесс развертывания ОС будет завершен, установим утилиту sudo
из-под учетной записи root
:
# pkg install -y sudo
Затем, создадим нового пользователя и сделаем его членом группы wheel
(это даст возможность работать с командой sudo
), а также зададим пароль:
# pw useradd test -g wheel
# passwd test
Changing local password for test
New Password:
Retype New Password:
Настроим разрешения, позволяющие всем членам группы wheel
исполнять любые команды:
# visudo
затем, раскомментируем в редакторе строку
# %wheel ALL=(ALL) ALL
приведя её к следующему виду:
%wheel ALL=(ALL) ALL
Сохраним изменения, нажав клавишу Esc
и выйдем из редактора, набрав команду :wq!
Перейдем в оболочку нового пользователя:
# su test
$
Получение исходного кода
Чтобы перекомпилировать ядро, сначала необходимо получить исходный код из системы управления версиями FreeBSD. Для этого установим пакет subversion
:
$ sudo pkg install -y subversion
Password:
По умолчанию, оболочкой для новых пользователей во FreeBSD является sh
, однако, после установки subversion
нам потребуется изменить его на csh
.
Проверим, какая оболочка используется по-умолчанию:
$ echo $SHELL
/bin/sh
Теперь, изменим оболочку текущего пользователя на csh
:
$ chsh -s /bin/csh
Password:
chsh: user information updated
Убедимся, что внесенные изменения сохранены:
$ grep test /etc/passwd
test:*:1001:0:User &:/home/test:/bin/csh
еще один вариант проверки:
$ echo $SHELL
/bin/csh
После изменения настроек оболочки, выполним повторное сканирование переменной PATH:
$ rehash
И, если всё прошло успешно, скопируем исходный код стабильной ветки FreeBSD в папку /usr/src
:
$ sudo svn co --trust-server-cert --non-interactive https://svn0.us-east.freebsd.org/base/stable/11/ /usr/src
Password:
Checked out revision 317943.
Создание настраиваемой конфигурации
Для создания собственной конфигурации, которую мы назовём CUSTOM
, нам необходимо скопировать существующую стандартную конфигурацию GENERIC
:
$ sudo cp /usr/src/sys/amd64/conf/GENERIC /usr/src/sys/amd64/conf/CUSTOM
Password:
В нашей конфигурации ядра CUSTOM
мы сделаем некоторые изменения. Для этого необходимо открыть файл /usr/src/sys/amd64/conf/CUSTOM
:
$ sudo vi /usr/src/sys/amd64/conf/CUSTOM
В строке 22 можно заметить флаг идентификатора (номера строк можно увидеть в редакторе vi
, нажав клавишу Esc
, затем введя :set nu
):
22 ident GENERIC
Для того, чтобы переименовать нашу конфигурацию ядра, необходимо изменить GENERIC
на любое другое название. В нашем случае, опять же, для примера, это будет CUSTOM:
22 ident CUSTOM
Кроме того, в конце файла конфигурации мы добавим следующее:
options IPSEC
options TCP_SIGNATURE
Как только редактирование файла будет завершено, сохраним файл и выйдем из редактора, набрав команду :wq!
Дополнительная информация по различным опциям может быть найдена в файле NOTES для каждого типа архитектуры в каталоге /usr/src/sys/
.
Ниже приведены некоторые из наиболее популярных архитектур:
/usr/src/sys/amd64/conf/NOTES
/usr/src/sys/arm64/conf/NOTES
/usr/src/sys/i386/conf/NOTES
Информация о параметрах конфигурации, относящихся к конкретной архитектуре находится в файле /usr/src/sys/conf/NOTES
.
Больше подробностей можно найти в официальном руководстве — FreeBSD Handbook.
Сборка и установка кастомизированного ядра
Теперь мы скомпилируем наше ядроCUSTOM
: для этого перейдем в каталог /usr/src/ и введём команду make buildkernel с опцией CUSTOM
:
$ cd /usr/src
$ sudo make buildkernel KERNCONF=CUSTOM
Password:
Здесь необходимо заметить, что время компиляции напрямую зависит от производительности ПК. Например, на моём нетбуке ASUS Eee PC 1225B с процессором AMD E450 1.6 ГГц и 4 ГБ ОЗУ ядро собирается примерно за 4 часа:
--------------------------------------------------------------------
>>> Kernel build for CUSTOM completed on Sat Oct 14 15:32:21 UTC 2018
--------------------------------------------------------------------
После успешного окончания процесса компиляции ядра CUSTOM
произведем его установку:
$ sudo make installkernel KERNCONF=CUSTOM
Password:
Установка должна пройти значительно быстрее, нежели компиляция. После окончания установки перезагрузим систему:
$ sudo shutdown -r now
Password:
Как только компьютер перезагрузится, убедимся, что наше новое ядро установилось. Сделать это можно двумя командами:
$ sysctl kern.conftxt | grep ident
ident CUSTOM
или
$ uname -i
CUSTOM
Статья написана на основе материала Vultr Holdings Corporation: https://www.vultr.com/docs/how-to-build-and-install-a-custom-kernel-on-freebsd-11