Kernels/Arch Build System (Русский)

From ArchWiki
Jump to: navigation, search

Tango-preferences-desktop-locale.pngЭта страница нуждается в сопроводителеTango-preferences-desktop-locale.png

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

Arch Build System позволит вам собрать собственное ядро на основе официального пакета Linux. Этот метод предлагает автоматизировать весь процесс компиляции и основан на тщательно протестированном пакете. Вы можете отредактировать PKGBUILD для использования собственных настроек ядра или для добавления дополнительных патчей.

Получение необходимых пакетов

Поскольку сборка осуществляется при помощи makepkg, необходимо следовать рекомендациям ниже. К примеру, вы не сможете запустить makepkg от имени root/sudo, поэтому для начала создадим папку build в домашней директории пользователя.

 $ cd ~/
 $ mkdir build
 $ cd build/

Установите пакет asp и группу base-devel

# pacman -S asp base-devel

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

$ ASPROOT=. asp checkout linux

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

Редактирование PKGBUILD

Отредактируйте PKGBUILD обратите внимание на параметр pkgbase. Укажите в нем имя вашего пакета, например:

 pkgbase=linux-custom

В зависимости от PKGBUILD также может потребоваться переименовать linux.install для соответствия измененному pkgbase.

Изменение prepare()

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

Если вам нужно изменить несколько опций можно использовать config.x86_64 для 64-битной системы и config для 32-битной по умолчанию и добавить в него необходимые вам опции :

$ echo '
CONFIG_DEBUG_INFO=y
CONFIG_FOO=n
' >> config.x86_64

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

PKGBUILD
...
  # load configuration
  # Configure the kernel. Replace the line below with one of your choice.
  #make menuconfig # CLI menu for configuration
  make nconfig # new CLI menu for configuration
  #make xconfig # X-based configuration
  #make oldconfig # using old config from previous kernel version
  # ... or manually edit .config
...
Важно: У systemd есть несколько требований к конфигурации ядра для работы, некоторых вариантов использования (напр., UEFI) и для специфичной функциональности (напр., bootchart). Несоблюдение этих требований может привести к нестабильной работе или отказу системы. Список необходимых и рекомендуемых параметров вы можете найти в файле /usr/share/doc/systemd/README. Сверьтесь с ним перед компиляцией. Сами требования время от времени меняются, а изменения не анонсируются, так как Arch предполагает, что вы используете официальное ядро. Перед установкой новой версии systemd обратитесь к примечанию к релизу и убедитесь, что ваша конфигурация ядра соответствует требованиям.

Пересоздание контрольных сумм

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

$ updpkgsums

Компиляция

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

 $ makepkg -s

Параметр -s загрузит все необходимые зависимости, используемые последними ядрами, такие как xml и docs.

Примечание:

Установка

После makepkg, вы можете посмотреть файл linux.install. Можно заметить, что некоторые переменные изменились. Теперь пакет можно установить, как обычно, с помощью pacman (или эквивалентной программы):

# pacman -U <kernel-headers_package>
# pacman -U <kernel_package>
Примечание: Желательно так же установить kernel headers. Он может понадобится, если, к примеру, понадобится установить драйвера NVIDIA с nvidia-hook[broken link: invalid section]

Загрузчик

К этому времени файлы и каталоги для собранного вами ядра должны быть созданы, например, /boot/vmlinuz-linux-test. Для проверки вашего ядра нужно обновить загрузчик (/boot/grub/menu.lst для GRUB), добавив новые записи ('default' and 'fallback') для вашего свежесозданного ядра. Таким образом, вы можете паралельно хранить и основное и собранное вами ядра.