概括

概括

概括

我最近从 Ubuntu 20.04 升级到了 22.04,从那时起,我就无法安装内核头文件,并且出现错误。最初,我遇到的错误是由于缺少柔性野牛。手动安装这些后,我遇到了下面的错误,无法解决。

错误

尝试安装linux-headers-5.15.0-47-generic(以及几个旧版本)失败,并返回错误状态制作在 dkms 模块构建期间。

Apt 说检查 make 日志,其中有以下错误:

No rule to make target 'arch/x86/entry/syscalls/syscall_32.tbl',
             needed by 'arch/x86/include/generated/uapi/asm/unistd_32.h'

完整 apt 输出

$ sudo apt install --reinstall linux-headers-$(uname -r)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not upgraded.
Need to get 2,898 kB of archives.
After this operation, 0 B of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 linux-headers-5.15.0-47-generic amd64 5.15.0-47.51 [2,898 kB]
Fetched 2,898 kB in 0s (6,016 kB/s)                       
(Reading database ... 191529 files and directories currently installed.)
Preparing to unpack .../linux-headers-5.15.0-47-generic_5.15.0-47.51_amd64.deb ...
Unpacking linux-headers-5.15.0-47-generic (5.15.0-47.51) over (5.15.0-47.51) ...
Setting up linux-headers-5.15.0-47-generic (5.15.0-47.51) ...
/etc/kernel/header_postinst.d/dkms:
 * dkms: running auto installation service for kernel 5.15.0-47-generic

Kernel preparation unnecessary for this kernel. Skipping...

Building module:
cleaning build area...(bad exit status: 2)
make -j4 KERNELRELEASE=5.15.0-47-generic all INCLUDEDIR=/lib/modules/5.15.0-47-generic/build/include KVERSION=5.15.0-47-generic DKMS_BUILD=1....(bad exit status: 2)
Error! Bad return status for module build on kernel: 5.15.0-47-generic (x86_64)
Consult /var/lib/dkms/evdi/5.2.14/build/make.log for more information.
   ...done.

make 日志的完整内容

$ sudo cat /var/lib/dkms/evdi/5.2.14/build/make.log
DKMS make.log for evdi-5.2.14 for kernel 5.15.0-47-generic (x86_64)
Sat Sep  3 09:55:26 AM CDT 2022
make KBUILD_VERBOSE=1 SUBDIRS=/var/lib/dkms/evdi/5.2.14/build SRCROOT=/var/lib/dkms/evdi/5.2.14/build CONFIG_MODULE_SIG= -C /lib/modules/5.15.0-47-generic/build modules
make[1]: Entering directory '/usr/src/linux-headers-5.15.0-47-generic'
: "  SYNC    include/config/auto.conf.cmd"
make -f ./Makefile syncconfig
make -f ./scripts/Makefile.build obj=scripts/basic
  gcc -Wp,-MMD,scripts/basic/.fixdep.d -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89         -o scripts/basic/fixdep scripts/basic/fixdep.c   
make -f ./scripts/Makefile.build obj=scripts/kconfig syncconfig
  gcc -Wp,-MMD,scripts/kconfig/.conf.o.d -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89       -c -o scripts/kconfig/conf.o scripts/kconfig/conf.c
  gcc -Wp,-MMD,scripts/kconfig/.confdata.o.d -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89       -c -o scripts/kconfig/confdata.o scripts/kconfig/confdata.c
  gcc -Wp,-MMD,scripts/kconfig/.expr.o.d -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89       -c -o scripts/kconfig/expr.o scripts/kconfig/expr.c
  flex -oscripts/kconfig/lexer.lex.c -L scripts/kconfig/lexer.l
  bison -o scripts/kconfig/parser.tab.c --defines=scripts/kconfig/parser.tab.h -t -l scripts/kconfig/parser.y
  gcc -Wp,-MMD,scripts/kconfig/.menu.o.d -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89       -c -o scripts/kconfig/menu.o scripts/kconfig/menu.c
  gcc -Wp,-MMD,scripts/kconfig/.parser.tab.o.d -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89      -I ./scripts/kconfig -c -o scripts/kconfig/parser.tab.o scripts/kconfig/parser.tab.c
  gcc -Wp,-MMD,scripts/kconfig/.preprocess.o.d -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89       -c -o scripts/kconfig/preprocess.o scripts/kconfig/preprocess.c
  gcc -Wp,-MMD,scripts/kconfig/.symbol.o.d -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89       -c -o scripts/kconfig/symbol.o scripts/kconfig/symbol.c
  gcc -Wp,-MMD,scripts/kconfig/.util.o.d -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89       -c -o scripts/kconfig/util.o scripts/kconfig/util.c
  gcc -Wp,-MMD,scripts/kconfig/.lexer.lex.o.d -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89      -I ./scripts/kconfig -c -o scripts/kconfig/lexer.lex.o scripts/kconfig/lexer.lex.c
  gcc   -o scripts/kconfig/conf scripts/kconfig/conf.o scripts/kconfig/confdata.o scripts/kconfig/expr.o scripts/kconfig/lexer.lex.o scripts/kconfig/menu.o scripts/kconfig/parser.tab.o scripts/kconfig/preprocess.o scripts/kconfig/symbol.o scripts/kconfig/util.o   
scripts/kconfig/conf  --syncconfig Kconfig
make -f ./scripts/Makefile.build obj=arch/x86/entry/syscalls all
make -f ./scripts/Makefile.build obj=scripts/basic
set -e; mkdir -p include/config/; trap "rm -f include/config/.kernel.release.tmp" EXIT; { echo "5.15.46$(sh ./scripts/setlocalversion .)"; } > include/config/.kernel.release.tmp; if [ ! -r include/config/kernel.release ] || ! cmp -s include/config/kernel.release include/config/.kernel.release.tmp; then : '  UPD     include/config/kernel.release'; mv -f include/config/.kernel.release.tmp include/config/kernel.release; fi
make -f ./scripts/Makefile.asm-generic obj=arch/x86/include/generated/uapi/asm \
generic=include/uapi/asm-generic
make[2]: *** No rule to make target 'arch/x86/entry/syscalls/syscall_32.tbl', needed by 'arch/x86/include/generated/uapi/asm/unistd_32.h'.  Stop.
make[1]: *** [arch/x86/Makefile:217: archheaders] Error 2
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory '/usr/src/linux-headers-5.15.0-47-generic'
make: *** [Makefile:22: all] Error 2

答案1

内核头文件不需要“构建”。它们以 deb 包的形式安装。

它们已正确安装。内核包的安装导致dkms build安装失败。

make.log是关于构建dkms您之前安装的模块。

该模块名为evdi。我不熟悉这个模块,不知道它是做什么用的。

它似乎与正在运行的内核不兼容。

您可以通过以下方式删除模块

sudo dkms remove evdi/5.2.14 --all

错误就会消失。

相关内容