UNPKG

arch-wiki-md-repo

Version:

All arch-wiki articles in markdown format, updated every two days.

120 lines (76 loc) 8.94 kB
[Arch Build System](/index.php/Arch_Build_System "Arch Build System") позволит вам собрать собственное ядро на основе официального пакета Linux. Этот метод предлагает автоматизировать весь процесс компиляции и основан на тщательно протестированном пакете. Вы можете отредактировать PKGBUILD для использования собственных настроек ядра или для добавления дополнительных патчей. ## Contents * [1 Получение необходимых пакетов](#.D0.9F.D0.BE.D0.BB.D1.83.D1.87.D0.B5.D0.BD.D0.B8.D0.B5_.D0.BD.D0.B5.D0.BE.D0.B1.D1.85.D0.BE.D0.B4.D0.B8.D0.BC.D1.8B.D1.85_.D0.BF.D0.B0.D0.BA.D0.B5.D1.82.D0.BE.D0.B2) * [2 Редактирование PKGBUILD](#.D0.A0.D0.B5.D0.B4.D0.B0.D0.BA.D1.82.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_PKGBUILD) * [2.1 Изменение prepare()](#.D0.98.D0.B7.D0.BC.D0.B5.D0.BD.D0.B5.D0.BD.D0.B8.D0.B5_prepare.28.29) * [2.2 Пересоздание контрольных сумм](#.D0.9F.D0.B5.D1.80.D0.B5.D1.81.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D0.BA.D0.BE.D0.BD.D1.82.D1.80.D0.BE.D0.BB.D1.8C.D0.BD.D1.8B.D1.85_.D1.81.D1.83.D0.BC.D0.BC) * [3 Компиляция](#.D0.9A.D0.BE.D0.BC.D0.BF.D0.B8.D0.BB.D1.8F.D1.86.D0.B8.D1.8F) * [4 Установка](#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0) * [5 Загрузчик](#.D0.97.D0.B0.D0.B3.D1.80.D1.83.D0.B7.D1.87.D0.B8.D0.BA) ## Получение необходимых пакетов Поскольку сборка осуществляется при помощи [makepkg](/index.php/Makepkg "Makepkg"), необходимо следовать рекомендациям ниже. К примеру, вы не сможете запустить makepkg от имени root/sudo, поэтому для начала создадим папку `build` в домашней директории пользователя. ``` $ cd ~/ $ mkdir build $ cd build/ ``` [Установите](/index.php/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D0%B5 "Установите") пакет [asp](https://www.archlinux.org/packages/?name=asp) и группу [base-devel](https://www.archlinux.org/groups/x86_64/base-devel/) ``` # pacman -S asp base-devel ``` Перед кастомизацией потребуется чистое ядро. Получите из ABS файлы пакета в рабочую папку командой: `$ 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. **Примечание:** * [Одновременный запуск нескольких процессов компиляции](/index.php/Makepkg#MAKEFLAGS "Makepkg") может значительно сократить время компиляции на многоядерных системах. * Ядру нужно время на компиляцию, 1 час - это вполне нормально. На современных системах с SSD обычно это занимает менее десяти минут. * Исходные коды ядра [подписаны PGP](https://www.kernel.org/signature.html#kernel-org-web-of-trust), и makepkg проверит это. Смотрите [Makepkg#Signature checking](/index.php/Makepkg#Signature_checking "Makepkg") для получения подробностей. ## Установка После makepkg, вы можете посмотреть файл linux.install. Можно заметить, что некоторые переменные изменились. Теперь пакет можно установить, как обычно, с помощью pacman (или эквивалентной программы): ``` # pacman -U <kernel-headers_package> # pacman -U <kernel_package> ``` **Примечание:** Желательно так же установить kernel headers. Он может понадобится, если, к примеру, понадобится установить драйвера NVIDIA с [nvidia-hook](/index.php/NVIDIA#Alternate_install:_custom_kernel "NVIDIA") ## Загрузчик К этому времени файлы и каталоги для собранного вами ядра должны быть созданы, например, `/boot/vmlinuz-linux-test`. Для проверки вашего ядра нужно обновить загрузчик (/boot/grub/menu.lst для GRUB), добавив новые записи ('default' and 'fallback') для вашего свежесозданного ядра. Таким образом, вы можете паралельно хранить и основное и собранное вами ядра.