Возникла необходимость модернезировать текущее ядро.
Т.е. Не устанавливать новое и не откатывать версию.
А внести изменения в текущую версию с тем условие, что текущее ядро не трогается из соображений “Работает не лезь”, а рядом с текущим создаётся ещё одно с модификациями.
Сделал копию текущего ядра в /usr/src
Так вот эта ошибка меня начала доканывать как у ТС.
В общем и целом нашлось вот такое решение:
ОТЧЁТ: Запуск cl-kernel для кастомного ядра
Calculate Linux - 20 марта 2026
ПРОБЛЕМА:
───────────────────────────────────────
cl-kernel отказывался работать с кастомным ядром 6.18.9-custom,
сообщая ошибку:
“/usr/src/linux-6.18.9-custom/Makefile не принадлежит ни одному
пакету”
ПРИЧИНА:
───────────────────────────────────────
- cl-kernel проверяет принадлежность исходников к пакету portage
через команду: qfile_pkgname -C ${KERNEL_DIR}/Makefile
- Для кастомных ядер (не установленных через emerge) эта проверка
не проходит
- В Makefile было указано EXTRAVERSION = -calculate, что путало
систему версионирования
───────────────────────────────────────────────────────────────────
РЕШЕНИЕ (3 шага):
───────────────────────────────────────
ШАГ 1: Изменение EXTRAVERSION в Makefile
───────────────────────────────────────────────────────────────────
Файл: /usr/src/linux-6.18.9-custom/Makefile
Было:
EXTRAVERSION = -calculate
Стало:
EXTRAVERSION = -custom
Команда:
sed -i ‘s/^EXTRAVERSION = -calculate/EXTRAVERSION = -custom/’
/usr/src/linux-6.18.9-custom/Makefile
Зачем:
- Чтобы cl-kernel распознавал ядро как отдельную версию
- Чтобы имя собранного ядра было vmlinuz-6.18.9-custom
ШАГ 2: Создание файла-заглушки i386_defconfig
───────────────────────────────────────────────────────────────────
Файл: /usr/src/linux-6.18.9-custom/arch/x86/configs/i386_defconfig
Команда:
touch /usr/src/linux-6.18.9-custom/arch/x86/configs/i386_defconfig
Зачем:
- Функция check_kernel_sources() в cl-kernel проверяет наличие
этого файла для подтверждения полноты исходников
- Без этого файла cl-kernel --kver list показывает пустой список
ШАГ 3: Модификация cl-kernel (обход проверки portage)
───────────────────────────────────────────────────────────────────
Файл: /usr/sbin/cl-kernel
Изменения в строках 545-552:
Было:
check_belong ${KERNEL_DIR}/Makefile
CATEGORY_PN=$( qfile_pkgname -C ${KERNEL_DIR}/Makefile )
PV=$( qfile_pkgname -Cv ${KERNEL_DIR}/Makefile )
PV=${PV/$CATEGORY_PN-/}
Стало:
//# check_belong ${KERNEL_DIR}/Makefile # ОТКЛЮЧЕНО для кастомных ядер
//# получение параметров пакета, которому принадлежат исходники
//# CATEGORY_PN=$( qfile_pkgname -C ${KERNEL_DIR}/Makefile )
//# PV=$( qfile_pkgname -Cv ${KERNEL_DIR}/Makefile )
CATEGORY_PN=“sys-kernel/calculate-sources”
PV=$(grep “^EXTRAVERSION” ${KERNEL_DIR}/Makefile | sed ‘s/.*=
*-//’)
PV=“6.18.9-${PV}”
PV=${PV/$CATEGORY_PN-/}
Зачем:
- Отключена проверка принадлежности к пакету portage
- CATEGORY_PN и PV определяются из Makefile ядра
- cl-kernel может работать с кастомными исходниками
───────────────────────────────────────────────────────────────────
ТЕКУЩЕЕ СОСТОЯНИЕ:
───────────────────────────────────────────────────────────────────
$ cl-kernel --kver list
- 6.18.9-custom * ← ТЕКУЩЕЕ (активное)
- 6.18.9-calculate ← РЕЗЕРВНОЕ (оригинальное)
Символическая ссылка:
/usr/src/linux → linux-6.18.9-custom
❯ src sudo cl-kernel --kver 6.18.9-custom --skip-config
- Подготовка текущей конфигурации ядра … [ ok ]
- Подготовка базовой конфигурации ядра … [ ok ]
- Пропуск пустого шаблона
– -j5
CLEAN arch/x86/entry/vdso
CLEAN arch/x86/tools
CLEAN certs
CLEAN init
CLEAN usr
CLEAN .
SYNC include/config/auto.conf
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/confdata.o
HOSTCC scripts/kconfig/expr.o
LEX scripts/kconfig/lexer.lex.c
YACC scripts/kconfig/parser.tab.[ch]
HOSTCC scripts/kconfig/menu.o
HOSTCC scripts/kconfig/preprocess.o