LINUX.ORG.RU

Fedora 39. Не собирается ryzen_smu.ko

 , ,


0

1

При попытке сборки модуля https://gitlab.com/leogx9r/ryzen_smu получаю вот такой вывод

make 
make[1]: Entering directory '/usr/src/kernels/6.6.4-200.fc39.x86_64'
warning: the compiler differs from the one used to build the kernel
  The kernel was built by: gcc (GCC) 13.2.1 20231011 (Red Hat 13.2.1-4)
  You are using:           gcc (GCC) 13.2.1 20231205 (Red Hat 13.2.1-6)
  CC [M]  /root/ryzen_smu/drv.o
  CC [M]  /root/ryzen_smu/smu.o
  LD [M]  /root/ryzen_smu/ryzen_smu.o
  MODPOST /root/ryzen_smu/Module.symvers
  CC [M]  /root/ryzen_smu/ryzen_smu.mod.o
  LD [M]  /root/ryzen_smu/ryzen_smu.ko
  BTF [M] /root/ryzen_smu/ryzen_smu.ko
/bin/sh: line 1: ./tools/bpf/resolve_btfids/resolve_btfids: No such file or directory
make[3]: *** [scripts/Makefile.modfinal:60: /root/ryzen_smu/ryzen_smu.ko] Error 127
make[3]: *** Deleting file '/root/ryzen_smu/ryzen_smu.ko'
make[2]: *** [/usr/src/kernels/6.6.4-200.fc39.x86_64/Makefile:1864: modules] Error 2
make[1]: *** [Makefile:246: __sub-make] Error 2
make[1]: Leaving directory '/usr/src/kernels/6.6.4-200.fc39.x86_64'
make: *** [Makefile:29: modules] Error 2

Нужных файлов там, действительно, нет

ls -la /usr/src/kernels/6.6.4-200.fc39.x86_64/tools/bpf/resolve_btfids/
-rw-r--r--. 3 root root   296 Dec  3 03:00 Build
-rw-r--r--. 3 root root 17260 Dec  3 03:00 main.c
-rw-r--r--. 3 root root  3216 Dec  3 03:00 Makefile

Какого пакета не хватает?

При попытке скомпилить содержимое ситуация усугубляется

make
  MKDIR     /usr/src/kernels/6.6.4-200.fc39.x86_64/tools/bpf/resolve_btfids/libbpf/
/usr/src/kernels/6.6.4-200.fc39.x86_64/scripts/bpf_doc.py --header \
	--file /usr/src/kernels/6.6.4-200.fc39.x86_64/tools/include/uapi/linux/bpf.h > /usr/src/kernels/6.6.4-200.fc39.x86_64/tools/bpf/resolve_btfids/libbpf/bpf_helper_defs.h
In file included from libbpf.c:36:
/usr/src/kernels/6.6.4-200.fc39.x86_64/tools/include/linux/ring_buffer.h:4:10: fatal error: asm/barrier.h: No such file or directory
    4 | #include <asm/barrier.h>
      |          ^~~~~~~~~~~~~~~
compilation terminated.

Данный файл должет быть в kernel-devel пакет установлен Куда копать?



Последнее исправление: cetjs2 (всего исправлений: 1)

Во-первых, вполне возможно что в этом левом модуле с гитхаба баг и он вообще никак не компилируется (или после компиляции не будет работать).

Во-вторых, может он не для той версии ядра.

В-третьих, по-моему компилировать так модули (я про resolve_btfids) из распакованных исходников ядра нельзя. Компилировать надо ядро целиком, предварительно настроив его через make menuconfig или подобное. Makefile в модуле не для тебя, а чтоб его make более верхнего уровня вызывал.

firkax ★★★★★
()

А ещё вот

https://bbs.archlinux.org/viewtopic.php?pid=2110454#p2110454

у кого-то другое что-то не собиралось с этой ошибкой, и он где-то закомментил какую-то строчку, после чего всё получилось.

И вообще в той теме много обсуждения этой ошибки.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от cobold

Да, по форумам есть несколько сообщений, что на некоторых версиях ядра (6.1 упоминалось) в пределах одного дистрибутива собирается (нужные файлы в resolve_btfids присутствуют), но от чего это зависит не нашёл. По идее должно хватать наличия хэдеров и девел пакета ядра. А что используешь вместо этого модуля, если не секрет? Надо как-то проц на ноуте довести до TDP 5-8W, но вся разработка переключилась на виндовую https://amdaputuningutility.com/

forgottentoys
() автор топика
Ответ на: комментарий от firkax

Про то что мэйк в этой дирректории для сборки ядра целиком я начал подозревать, попробовав докатить все зависимости. Полоучилось почти все девел пакеты gcc libstdc++ и т.д. Это был уже жест отчаяния.

forgottentoys
() автор топика
Ответ на: комментарий от forgottentoys

Почему-то в старом добром дебиане собирается с полоборота (естественно, с установленными хедерами ядра), и прекрасно добавляется в dkms. На 7700 не работает ни хрена, правда, лол.

anonymous
()
Ответ на: комментарий от anonymous

Вот такие на лоре пятизвёздочные

«Необходимо уточнить, что ни в коем случае не следует рассматривать рейтинг как показатель некой личной крутизны. Это лишь показатель активности человека на форуме» (из правил). Это раз.

Человеку может нравиться линукс, он даже может писать прикладные программы, но ни разу не лазить в ядро. Это специализация, это нормально. Это два.

В третьих, раз ты намекнул, что сборка модуля за пределами дерева ядра вполне штатная вещь, почему бы тебе не рассказать ТСу, как это правильно делать, вместо того, чтобы переходить на личности других комментаторов? Это третье и главное.

hobbit ★★★★★
()
Ответ на: комментарий от firkax

Да, я находил этот форум. При отключении в /usr/src/kernels/6.6.4-200.fc39.x86_64/scripts/Makefile.modfinal

# Re-generate module BTFs if either module's .ko or vmlinux changed
%.ko: %.o %.mod.o scripts/module.lds $(and $(CONFIG_DEBUG_INFO_BTF_MODULES),$(KBUILD_BUILTIN),vmlinux) FORCE
        +$(call if_changed_except,ld_ko_o,vmlinux)
#ifdef CONFIG_DEBUG_INFO_BTF_MODULES
#       +$(if $(newer-prereqs),$(call cmd,btf_ko))
#endif

модуль компилируется, но после попытки его подключить в dmesg ругань на то, что модуль не подписан, о чём тут писал уже кто-то из аннимов.

dmesg -T | tail
[Tue Dec 12 21:07:10 2023] ryzen_smu: loading out-of-tree module taints kernel.
[Tue Dec 12 21:07:10 2023] ryzen_smu: module verification failed: signature and/or required key missing - tainting kernel

Видимо придётся пробовать манипуляции, аналогичные для secure_boot

forgottentoys
() автор топика
Ответ на: комментарий от papin-aziat

как результат установки этих пакетов

root@fedora:~/ryzen_smu# dkms status
ryzen_smu/0.1.5: added
Error! Bad return status for module build on kernel: 6.6.4-200.fc39.x86_64 (x86_64)
Dec 12 21:00:24 fedora dkms[2505]: Consult /var/lib/dkms/ryzen_smu/0.1.5/build/make.log for more information.

ну и абсолютно такой же лог

DKMS make.log for ryzen_smu-0.1.5 for kernel 6.6.4-200.fc39.x86_64 (x86_64)
Tue Dec 12 09:00:22 PM MSK 2023
make[1]: Entering directory '/usr/src/kernels/6.6.4-200.fc39.x86_64'
warning: the compiler differs from the one used to build the kernel
  The kernel was built by: gcc (GCC) 13.2.1 20231011 (Red Hat 13.2.1-4)
  You are using:           gcc (GCC) 13.2.1 20231205 (Red Hat 13.2.1-6)
  CC [M]  /var/lib/dkms/ryzen_smu/0.1.5/build/drv.o
  CC [M]  /var/lib/dkms/ryzen_smu/0.1.5/build/smu.o
  LD [M]  /var/lib/dkms/ryzen_smu/0.1.5/build/ryzen_smu.o
  MODPOST /var/lib/dkms/ryzen_smu/0.1.5/build/Module.symvers
  CC [M]  /var/lib/dkms/ryzen_smu/0.1.5/build/ryzen_smu.mod.o
  LD [M]  /var/lib/dkms/ryzen_smu/0.1.5/build/ryzen_smu.ko
  BTF [M] /var/lib/dkms/ryzen_smu/0.1.5/build/ryzen_smu.ko
/bin/sh: line 1: ./tools/bpf/resolve_btfids/resolve_btfids: No such file or directory
make[3]: *** [scripts/Makefile.modfinal:60: /var/lib/dkms/ryzen_smu/0.1.5/build/ryzen_smu.ko] Error 127
make[3]: *** Deleting file '/var/lib/dkms/ryzen_smu/0.1.5/build/ryzen_smu.ko'
make[2]: *** [/usr/src/kernels/6.6.4-200.fc39.x86_64/Makefile:1864: modules] Error 2
make[1]: *** [Makefile:246: __sub-make] Error 2
make[1]: Leaving directory '/usr/src/kernels/6.6.4-200.fc39.x86_64'
make: *** [Makefile:29: modules] Error 2
forgottentoys
() автор топика