Собрать своё ядро в Arch Linux в 2026 году — это пять шагов: получить исходники через asp export linux, взять за основу конфиг работающего ядра, ужать его командой make localmodconfig, донастроить в make menuconfig, собрать пакет через makepkg и установить его командой pacman -U. На выходе получишь пакет linux-custom, который легко удалить или откатить, а штатное ядро останется в меню загрузчика как запасной вариант.
Честный ответ: большинству пользователей сборка не нужна. Штатное ядро Arch собирается с широким набором модулей и работает на любом железе. Своё ядро имеет смысл собирать, когда хочется выжать скорость загрузки, убрать лишние модули, включить экспериментальную опцию или просто разобраться, как система работает изнутри. Если ты ещё не решил, какое ядро ставить, — сначала прочитай статью «Какое ядро выбрать: linux, linux-lts, linux-zen или linux-hardened». Сборка своего ядра — следующий уровень, и она не отменяет штатное: оба ядра спокойно живут рядом.
Самый простой путь в Arch — пакет asp из официального репозитория. Он скачивает PKGBUILD и исходники ядра, как они собираются в репозитории Arch:
sudo pacman -S asp
asp export linux
cd linux
В каталоге linux появятся PKGBUILD, config и остальные файлы сборки. Это готовый рецепт: менять в нём нужно минимум, а makepkg сделает всё остальное.
Альтернатива — свежий тарболл с kernel.org:
git clone --depth 1 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
cd linux
Такой вариант даёт чистый исходник без PKGBUILD, и собирать придётся вручную через make. Для Arch это лишняя возня: пакетный путь удобнее, потому что pacman потом знает про твоё ядро и умеет его удалять.
Ядро собирается по конфигу — файлу .config, где перечислены все опции. Начинать с нуля не нужно: возьми конфиг работающего ядра.
zcat /proc/config.gz > .config
Это работает, если в ядре включён CONFIG_IKCONFIG_PROC — в штатных ядрах Arch он включён. Запасной вариант — готовый конфиг из пакета: cp /usr/src/linux/config .config.
Дальше ужимаем конфиг под твоё железо:
make localmodconfig
Команда смотрит на список загруженных модулей через lsmod и оставляет в конфиге только их, всё остальное выключает. Ядро получается маленьким и собирается быстро. Но помни про риск: localmodconfig видит только то, что загружено прямо сейчас. Новую видеокарту, внешний Wi-Fi-адаптер или файловую систему, которую ты подключишь через месяц, такое ядро не поддержит. Для сервера с фиксированным железом это нормально, для ноутбука с частыми подключениями — лотерея.
После ужимания открой графический редактор конфига:
make menuconfig
Здесь проверь главное: сетевую карту, GPU, файловые системы, которые используешь (btrfs, ext4, ntfs3), и драйверы клавиатуры. Навигация простая: стрелки, пробел — включить как модуль, Y — встроить в ядро, /? — справка по опции. Если не уверен, что нужно, — оставляй как есть.
Если ты берёшь конфиг от старой версии ядра, а исходники свежие, в конфиге появятся новые опции без значения. Их проставит команда make olddefconfig: новые опции получат значения по умолчанию, а твои правки не тронутся. Прогони её перед сборкой, чтобы не ловить вопросы в середине процесса.
Есть два пути. Первый — классический make, он подходит для исходников с kernel.org:
make -j$(nproc)
sudo make modules_install
sudo cp arch/x86/boot/bzImage /boot/vmlinuz-linux-custom
sudo mkinitcpio -k linux-custom -g /boot/initramfs-linux-custom.img
Работает, но файлы в /boot не отслеживаются pacman: удалить такое ядро вручную, а initramfs пересобрать — твоя забота.
Второй путь — makepkg, и на Arch он правильный. В каталоге из asp export открой PKGBUILD и поменяй имя пакета:
pkgbase=linux-custom
Дальше собери и установи:
makepkg -sci
Флаги: -s — подтянуть зависимости сборки, -c — почистить временные файлы, -i — установить пакет сразу после сборки. Внутри PKGBUILD сборка идёт через make -j$(nproc) с флагом KBUILD_MODPOST_WARN=1 — он превращает предупреждения о несобранных модулях в замечания, а не в ошибку. На выходе получишь linux-custom-*.pkg.tar.zst — обычный пакет, который pacman умеет ставить, обновлять и удалять.
Перед сборкой убедись, что в системе есть base-devel и ncurses: без них makepkg и menuconfig не запустятся. Если чего-то не хватает, makepkg -s сам подтянет зависимости из репозитория.
Если makepkg запускался без -i, установи пакет вручную:
sudo pacman -U linux-custom-*.pkg.tar.zst
Initramfs уже собран: mkinitcpio вызывается внутри package() PKGBUILD, и готовый образ попадает в пакет вместе с ядром. Проверь, что всё на месте:
pacman -Ql linux-custom | grep boot
ls /boot
В /boot должны появиться vmlinuz-linux-custom и initramfs-linux-custom.img. Если initramfs не создался — разберись, как работают хуки и модули, в статье «mkinitcpio подробно: хуки и модули».
Осталось сказать загрузчику, что появилось новое ядро:
sudo grub-mkconfig -o /boot/grub/grub.cfg
Перезагрузись и в меню GRUB выбери пункт с linux-custom. После загрузки проверь версию:
uname -r
Если увидел 6.x.x-arch1-1-custom — всё получилось. Штатное ядро никуда не делось: оно осталось в меню как отдельный пункт, и в любой момент можно загрузиться с него. Про то, как в меню уживаются несколько ядер, — в статье «Несколько ядер в меню: linux, linux-lts, linux-hardened». А если захочешь передать своему ядру особые параметры при загрузке — смотри «Кастомные аргументы ядра в GRUB».
Если пункта с linux-custom в меню нет — проверь, что grub-mkconfig увидел новое ядро: в выводе команды должна появиться строка с linux-custom. Иногда помогает перезапуск grub-mkconfig после установки пакета, потому что загрузчик сканирует /boot в момент генерации конфига.
Самый частый сценарий: ядро собралось, загрузилось, а сеть или видеокарта не работают. Причина почти всегда одна — localmodconfig выключил нужный драйвер, потому что модуль не был загружен в момент ужимания конфига. Лечится так: вернись в make menuconfig, найди нужную опцию (например, драйвер твоей сетевой карты), включи её как модуль и пересобери пакет заново.
Если система вообще не загрузилась — не паникуй. В меню GRUB выбери штатное ядро, загрузись и удали проблемный пакет:
sudo pacman -R linux-custom
После этого вернись к шагу 2 и пересобери с правильным конфигом. Отсутствующий initramfs тоже лечится пересборкой: mkinitcpio -P пересоздаст образы для всех установленных ядер.
Зависит от процессора и размера конфига. После localmodconfig на современном CPU сборка занимает от десяти до тридцати минут. Полный конфиг со всеми модулями — час и больше. Первая сборка всегда дольше: компилятор прогревает кэш, а зависимости скачиваются впервые. Дальше пересборки идут быстрее, потому что меняется только то, что ты поправил в конфиге.
Нет. Штатное ядро Arch покрывает практически всё железо и получает обновления безопасности вместе с системой. Своё ядро — это эксперимент и оптимизация, а не необходимость. Если собираешь впервые — держи штатное ядро установленным как запасной вариант.
Он оставляет только загруженные сейчас модули. Подключишь новое устройство — драйвера для него в ядре не окажется. Поэтому после localmodconfig обязательно пройдись по make menuconfig и включи то, что может понадобиться: драйверы Wi-Fi, Bluetooth, файловые системы, которые используешь не каждый день.
Просто выбери его в меню GRUB при загрузке. Чтобы убрать своё ядро совсем — sudo pacman -R linux-custom, и grub-mkconfig -o /boot/grub/grub.cfg уберёт лишний пункт из меню.
Скорее всего, драйвер сетевой карты не попал в конфиг. Загрузись со штатного ядра, найди модель карты (lspci -k), включи её драйвер в make menuconfig и пересобери пакет.
make с подробными пояснениями.Сборка своего ядра в Arch — пять шагов: исходники через asp export linux, конфиг через localmodconfig и menuconfig, сборка через makepkg -sci, установка через pacman -U и перегенерация grub.cfg. Пакетный путь держит всё под контролем pacman: ядро легко удалить, а штатное остаётся в меню как страховка. Главный подводный камень — localmodconfig, который отрезает драйверы для ещё не подключённого железа. Проверяй конфиг в menuconfig, не удаляй штатное ядро, и эксперимент закончится успешной загрузкой с первого раза.
Задай вопрос в чате — отвечаем быстро, по делу и без воды.
Комментарии