Сбоит cl-kernel

  • Messages for package sys-kernel/calculate-sources-4.19.63:
  • If you are upgrading from a previous kernel, you may be interested
  • in the following document:

Auto-cleaning packages…
No outdated packages were found on your system.

  • GNU info directory index is up-to-date.
  • IMPORTANT: 11 news items need reading for repository ‘gentoo’.
  • Use eselect news read to view new items.
    kvaathome /usr/src/linux-4.19.63-calculate # cl-kernel
  • /usr/src/linux/Makefile не принадлежит ни одному пакету

Вчерашние обновление утилит результата не дало…

Новая версия ядра 4.19.77 также не собирается. qfile упорно ненаходит /usr/src/linux/Makefile

Этот симлинк /usr/src/linux существует?
cd /usr/src/linux
https://wiki.gentoo.org/wiki/Kernel/Upgrade/ru#.D0.98.D0.B7.D0.BC.D0.B5.D0.BD.D0.B5.D0.BD.D0.B8.D0.B5_.D1.81.D0.B8.D0.BC.D0.B2.D0.BE.D0.BB.D1.8C.D0.BD.D0.BE.D0.B9_.D1.81.D1.81.D1.8B.D0.BB.D0.BA.D0.B8_.D0.B2.D1.80.D1.83.D1.87.D0.BD.D1.83.D1.8E

https://old.calculate-linux.org/main/ru/cl-kernel

Можно без всяких поисковиков через терминал

$ ls -h /usr/src/linux|grep Makefile
Makefile

Существует. qfile COPYING находит, а Makefile, Kbuild, Kconfig нет. Пробовал непосредственно из каталога ядра.

А что там с флагами?

# equery u sys-kernel/calculate-sources

Откуда COPYING взялся?

$ ls -al /usr/src/linux/
итого 3964
drwxr-xr-x 25 root root    4096 окт 12 14:12 .
drwxr-xr-x  4 root root    4096 окт 12 14:24 ..
drwxr-xr-x  3 root root    4096 окт 12 14:11 arch
drwxr-xr-x  3 root root    4096 окт 12 14:11 block
-rw-r--r--  1 root root       0 окт  5 21:31 .calculate
drwxr-xr-x  2 root root    4096 окт 12 14:11 certs
-rw-r--r--  1 root root  161337 окт  5 21:30 .config
drwxr-xr-x  4 root root    4096 окт 12 14:11 crypto
drwxr-xr-x  2 root root    4096 окт 12 14:12 firmware
drwxr-xr-x 73 root root    4096 окт 12 14:12 fs
drwxr-xr-x 29 root root    4096 окт 12 14:12 include
drwxr-xr-x  2 root root    4096 окт 12 14:12 init
drwxr-xr-x  2 root root    4096 окт 12 14:11 ipc
-rw-r--r--  1 root root    2245 окт 22  2018 Kbuild
-rw-r--r--  1 root root     563 окт 22  2018 Kconfig
drwxr-xr-x 18 root root    4096 окт 12 14:11 kernel
drwxr-xr-x 13 root root    4096 окт 12 14:12 lib
drwxr-xr-x  5 root root    4096 окт 12 14:11 LICENSES
-rw-r--r--  1 root root   60020 окт  5 20:56 Makefile
drwxr-xr-x  2 root root    4096 окт 12 14:11 media-video
drwxr-xr-x  3 root root    4096 окт 12 14:11 mm
-rw-r--r--  1 root root 1111337 окт  5 21:30 Module.symvers
drwxr-xr-x 70 root root    4096 окт 12 14:11 net
drwxr-xr-x 27 root root    4096 окт 12 14:11 samples
drwxr-xr-x 14 root root    4096 окт 12 14:11 scripts
drwxr-xr-x 10 root root    4096 окт 12 14:11 security
drwxr-xr-x 26 root root    4096 окт 12 14:12 sound
-rw-r--r--  1 root root 2609093 окт  5 21:29 System.map
drwxr-xr-x  2 root root    4096 окт 12 14:12 .tmp_versions
drwxr-xr-x 32 root root    4096 окт 12 14:11 tools
drwxr-xr-x  2 root root    4096 окт 12 14:11 usr
drwxr-xr-x  4 root root    4096 окт 12 14:11 virt


$ ls -aRh /usr/src/linux/|grep -i copy
    copyarea.h
    copyarea.h
    copy
    /usr/src/linux/include/config/have/copy:
    /usr/src/linux/include/config/have/copy/thread:
    usercopy
    /usr/src/linux/include/config/have/hardened/usercopy:
    metacopy.h
    dm-kcopyd.h
    copyloops
    /usr/src/linux/tools/testing/selftests/powerpc/copyloops:
    /usr/src/linux/tools/testing/selftests/powerpc/copyloops/asm:

/usr/src/linux-4.19.77-calculate # ls -al
итого 1140
drwxr-xr-x 27 root root 4096 окт 10 10:57 .
drwxr-xr-x 4 root root 4096 окт 10 10:56 …
drwxr-xr-x 26 root root 4096 окт 10 10:56 arch
drwxr-xr-x 3 root root 4096 окт 10 10:56 block
drwxr-xr-x 2 root root 4096 окт 10 10:56 certs
-rw-r–r-- 1 root root 13061 окт 22 2018 .clang-format
-rw-r–r-- 1 root root 59 окт 22 2018 .cocciconfig
-rw-r–r-- 1 root root 166300 окт 10 10:56 .config
-rw-r–r-- 1 root root 166300 окт 10 10:56 .config.old
-rw-r–r-- 1 root root 423 окт 22 2018 COPYING
-rw-r–r-- 1 root root 98741 окт 22 2018 CREDITS
drwxr-xr-x 4 root root 4096 окт 10 10:56 crypto
drwxr-xr-x 120 root root 12288 окт 10 10:56 Documentation
drwxr-xr-x 137 root root 4096 окт 10 10:56 drivers
drwxr-xr-x 2 root root 4096 окт 10 10:56 firmware
drwxr-xr-x 73 root root 4096 окт 10 10:56 fs
-rw-r–r-- 1 root root 31 окт 22 2018 .get_maintainer.ignore
-rw-r–r-- 1 root root 30 окт 22 2018 .gitattributes
-rw-r–r-- 1 root root 1498 окт 22 2018 .gitignore
drwxr-xr-x 29 root root 4096 окт 10 10:56 include
drwxr-xr-x 2 root root 4096 окт 10 10:56 init
drwxr-xr-x 2 root root 4096 окт 10 10:56 ipc
-rw-r–r-- 1 root root 2245 окт 22 2018 Kbuild
-rw-r–r-- 1 root root 563 окт 22 2018 Kconfig
drwxr-xr-x 18 root root 4096 окт 10 10:57 kernel
drwxr-xr-x 13 root root 12288 окт 10 10:56 lib
drwxr-xr-x 5 root root 4096 окт 10 10:56 LICENSES
-rw-r–r-- 1 root root 9924 окт 22 2018 .mailmap
-rw-r–r-- 1 root root 471057 окт 10 10:54 MAINTAINERS
-rw-r–r-- 1 root root 60020 окт 10 10:54 Makefile
drwxr-xr-x 2 root root 4096 окт 10 10:56 media-video
-rw-r–r-- 1 root root 548 окт 10 10:57 .missing-syscalls.d
drwxr-xr-x 3 root root 4096 окт 10 10:56 mm
drwxr-xr-x 70 root root 4096 окт 10 10:56 net
-rw-r–r-- 1 root root 800 окт 22 2018 README
drwxr-xr-x 27 root root 4096 окт 10 10:56 samples
drwxr-xr-x 14 root root 4096 окт 10 10:57 scripts
drwxr-xr-x 10 root root 4096 окт 10 10:56 security
drwxr-xr-x 26 root root 4096 окт 10 10:56 sound
drwxr-xr-x 2 root root 4096 окт 10 10:57 .tmp_versions
drwxr-xr-x 32 root root 4096 окт 10 10:56 tools
drwxr-xr-x 2 root root 4096 окт 10 10:56 usr
drwxr-xr-x 4 root root 4096 окт 10 10:56 virt

Флаги -build desktop firmware grub -minimal -muqss symlink themes -uksm -vmlinuz

А вот и Makefile. Все на месте.
Попробуйте пересобрать ядро с -symlink.

Он то на месте. Но утилита qfile из portage-utils его не видит. А эта утилита используется в скрипте cl-kernel.
Попробую.

    # cl-kernel 
 * /usr/src/linux/Makefile не принадлежит ни одному пакету


    # eix calculate-sour
[?] sys-kernel/calculate-sources [1]
     Доступные версии:      
     (4.14.149) ~4.14.149^bs
     (4.19.77) 4.19.77^bs
     (4.19.79) ~4.19.79^bs
     (5.2.21) ~5.2.21^bs
     (5.3.6) ~5.3.6^bs
       {build desktop firmware +grub minimal muqss pae symlink themes uksm +vmlinuz KERNEL="linux"}
     Установленные версии:  4.14.139(4.14.139)^bs(21:55:37 24.08.2019)(desktop firmware grub muqss symlink uksm vmlinuz -build -minimal -pae -themes KERNEL="linux") 4.19.77(4.19.77)^bs(02:02:06 19.10.2019)(desktop firmware grub muqss symlink uksm vmlinuz -build -minimal -pae -themes KERNEL="linux")
     Домашняя страница:     http://www.calculate-linux.org
     Описание:              Calculate Linux kernel image

[1] "calculate" /var/lib/layman/calculate

ps.

# cl-kernel --kver list
 * 4.19.77-calculate *
 * 4.14.139-calculate
 # cl-kernel 
 * /usr/src/linux/Makefile не принадлежит ни одному пакету
# cl-kernel --kver 4.19.77-calculate
 * Подготовка текущей конфигурации ядра ...

Пошло работать)

И я до этого додумался. Но автоматический выбор версии сбоит.

1 Like

Возникла необходимость модернезировать текущее ядро.

Т.е. Не устанавливать новое и не откатывать версию.
А внести изменения в текущую версию с тем условие, что текущее ядро не трогается из соображений “Работает не лезь”, а рядом с текущим создаётся ещё одно с модификациями.

Сделал копию текущего ядра в /usr/src

Так вот эта ошибка меня начала доканывать как у ТС.
В общем и целом нашлось вот такое решение:

ОТЧЁТ: Запуск cl-kernel для кастомного ядра
Calculate Linux - 20 марта 2026

ПРОБЛЕМА:
───────────────────────────────────────
cl-kernel отказывался работать с кастомным ядром 6.18.9-custom,
сообщая ошибку:
“/usr/src/linux-6.18.9-custom/Makefile не принадлежит ни одному
пакету”

ПРИЧИНА:
───────────────────────────────────────

  1. cl-kernel проверяет принадлежность исходников к пакету portage
    через команду: qfile_pkgname -C ${KERNEL_DIR}/Makefile
  2. Для кастомных ядер (не установленных через emerge) эта проверка
    не проходит
  3. В 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