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 для использования собственных настроек ядра или для добавления дополнительных патчей.

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

Установите пакет abs и группу пакетов base-devel из официальных репозиториев.

Во-первых, вам нужно иметь чистое ядро перед началом вашей настройки. Выберите файлы пакетов ядра с ABS:

$ ABSROOT=. abs core/linux

Если RSYNC порт блокируется сетевым экраном, вы можете попробовать запустить команду с параметром -t, чтобы использовать архив для синхронизации.

$ ABSROOT=. abs core/linux -t

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

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

Отредактируйте PKGBUILD официального пакета linux.

Укажите имя вашего пакета в параметре pkgbase, например :

 pkgbase=linux-custom

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

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

$ 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
...


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

Примечание: Если вы раскомментируйте 'make menuconfig' в build(), а затем используете графический интерфейс MENUCONFIG для загрузки существующей конфигурации, вы столкнетесь с проблемой конфликта файлов в конце пакета. Это произойдет в связи с тем, что файл конфигурации перезапишется. PKGBUILD предлагает уникальный путь установки LOCALVERSION и параметры конфигурации LOCALVERSION_AUTO. Чтобы это исправить, просто укажите в LOCALVERSION названии пользовательского ядра и LOCALVERSION_AUTO=n в MENUCONFIG. Для получения дополнительной информации см. https://bbs.archlinux.org/viewtopic.php?id=173504
Примечание: Если вы раскомментируйте return 1, то сможете изменить директорию с исходниками ядра по окончании распаковки makepkg, а затем make nconfig. Это позволяет сконфигурировать ядро под несколько сессий. Когда вы будете готовы для компиляции, скопируйте файл .config поверх config или config.x86_64 (в зависимости от вашей архитектуры), закомментируйте return 1 и используйте makepkg -i. Но не используйте это для пользовательских патчей; разместите ваши измененные комманды после этих строк. Если вы вручную изменяли bztar, распакуйте и заменить патч.

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

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

$ updpkgsums

Компиляция

Tip: Одновременный запуск процессов компиляции может значительно сократить время компиляции на многоядерных системах.

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


Примечание: Ядру нужно время чтобы скомпилироваться. Компиляция в течение 1 часа это вполне нормально. На современных системах с SSD обычно это занимает менее десяти минут.

Установка

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

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

Загрузчик

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