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

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

From ArchWiki
< Kernels

Эта страница нуждается в сопроводителе

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков 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.

Примечание:

- Одновременный запуск нескольких процессов компиляции может значительно сократить время компиляции на многоядерных системах.
- Ядру нужно время на компиляцию, 1 час - это вполне нормально. На современных системах с SSD обычно это занимает менее десяти минут.
- Исходные коды ядра подписаны PGP, и makepkg проверит это. Смотрите Makepkg#Signature checking для получения подробностей.

## Установка

После 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') для вашего свежесозданного ядра. Таким образом, вы можете паралельно хранить и основное и собранное вами ядра.

Categories:

- Kernel (Русский)
- Русский

Hidden category:

- Pages with broken section links