找不到 dkms 包,apt 每次都失败

找不到 dkms 包,apt 每次都失败

执行完常规操作后apt update && apt upgrade,我在重启时出现内核恐慌。我修复了这个问题,从旧内核恢复模式进入 shell,然后发出:

mount -o remount,rw /
mkinitramfs -o /boot/initrd.img-6.5.0-14-generic 6.5.0-14-generic
update-grub

这样,我就可以再次启动我的 Ubuntu 23.10。但现在每次apt调用它都会失败并显示以下消息(抱歉,其中一些词是意大利语):

Configurazione di linux-headers-6.5.0-14-generic (6.5.0-14.14)...
/etc/kernel/header_postinst.d/dkms:
 * dkms: running auto installation service for kernel 6.5.0-14-generic
Sign command: /usr/bin/kmodsign
Signing key: /var/lib/shim-signed/mok/MOK.priv
Public certificate (MOK): /var/lib/shim-signed/mok/MOK.der

Building module:
Cleaning build area...
make -j8 KERNELRELEASE=6.5.0-14-generic default KERNELVERSION=6.5.0-14-generic..
.(bad exit status: 2)
ERROR (dkms apport): binary package for ch340: 1.0.0 not found
Error! Bad return status for module build on kernel: 6.5.0-14-generic (x86_64)
Consult /var/lib/dkms/ch340/1.0.0/build/make.log for more information.
dkms autoinstall on 6.5.0-14-generic/x86_64 succeeded for nvidia virtualbox
dkms autoinstall on 6.5.0-14-generic/x86_64 failed for ch340(10)
Error! One or more modules failed to install during autoinstall.
Refer to previous errors for more information.
 * dkms: autoinstall for kernel 6.5.0-14-generic
   ...fail!
run-parts: /etc/kernel/header_postinst.d/dkms exited with return code 11
dpkg: errore nell'elaborare il pacchetto linux-headers-6.5.0-14-generic (--confi
gure):
 il sottoprocesso installato pacchetto linux-headers-6.5.0-14-generic script pos
t-installation ha restituito lo stato di errore 1
dpkg: problemi con le dipendenze impediscono la configurazione di linux-headers-
generic:
 linux-headers-generic dipende da linux-headers-6.5.0-14-generic; tuttavia:
  Il pacchetto linux-headers-6.5.0-14-generic non è ancora configurato.

dpkg: errore nell'elaborare il pacchetto linux-headers-generic (--configure):
 problemi con le dipendenze - lasciato non configurato
Configurazione di linux-image-6.5.0-14-generic (6.5.0-14.14)...
Segnalazione apport non scritta poiché il messaggio di errore indica la presenza
 di un fallimento precedente.
                             dpkg: problemi con le dipendenze impediscono la con
figurazione di linux-headers-generic-hwe-22.04:
 linux-headers-generic-hwe-22.04 dipende da linux-headers-6.5.0-14-generic; tutt
avia:
  Il pacchetto linux-headers-6.5.0-14-generic non è ancora configurato.

dpkg: errore nell'elaborare il pacchetto linux-headers-generic-hwe-22.04 (--conf
igure):
 problemi con le dipendenze - lasciato non configurato
Segnalazione apport non scritta poiché il messaggio di errore indica la presenza
 di un fallimento precedente.
                             Segnalazione apport non scritta poiché è stato ragg
iunto il valore massimo di MaxReports
                                     Segnalazione apport non scritta poiché è st
ato raggiunto il valore massimo di MaxReports
                                             dpkg: problemi con le dipendenze im
pediscono la configurazione di linux-generic-hwe-22.04:
 linux-generic-hwe-22.04 dipende da linux-headers-generic-hwe-22.04 (= 6.5.0.14.
16); tuttavia:
  Il pacchetto linux-headers-generic-hwe-22.04 non è ancora configurato.

dpkg: errore nell'elaborare il pacchetto linux-generic-hwe-22.04 (--configure):
 problemi con le dipendenze - lasciato non configurato
dpkg: problemi con le dipendenze impediscono la configurazione di linux-generic:
 linux-generic dipende da linux-headers-generic (= 6.5.0.14.16); tuttavia:
  Il pacchetto linux-headers-generic non è ancora configurato.

dpkg: errore nell'elaborare il pacchetto linux-generic (--configure):
 problemi con le dipendenze - lasciato non configurato
Elaborazione dei trigger per dbus (1.14.10-1ubuntu1)...
Elaborazione dei trigger per mailcap (3.70+nmu1ubuntu1)...
Elaborazione dei trigger per desktop-file-utils (0.26-1ubuntu5)...
Elaborazione dei trigger per hicolor-icon-theme (0.17-2)...
Elaborazione dei trigger per gnome-menus (3.36.0-1.1ubuntu1)...
Si sono verificati degli errori nell'elaborazione:
 linux-headers-6.5.0-14-generic
 linux-headers-generic
 linux-headers-generic-hwe-22.04
 linux-generic-hwe-22.04
 linux-generic
E: Sub-process /usr/bin/dpkg returned an error code (1)

我看到了很多错误,但我能够理解哪个是根本原因。我的猜测是:

ERROR (dkms apport): binary package for ch340: 1.0.0 not found

我读问题,但未sudo dpkg -l | grep ch340返回任何内容。虽然sudo dpkg -l | grep dkms返回:

ii  dkms                                          3.0.11-1ubuntu10                           all          Dynamic Kernel Module System (DKMS)
ii  nvidia-dkms-470                               470.223.02-0ubuntu0.23.10.1                amd64        NVIDIA DKMS package
ii  virtualbox-dkms                               7.0.10-dfsg-3                              amd64        x86 virtualization solution - kernel module sources for dkms

你能帮助我了解如何解决这个问题吗?

更新

$ dkms status
ch340/1.0.0: added
nvidia/470.223.02, 6.5.0-10-generic, x86_64: installed
nvidia/470.223.02, 6.5.0-14-generic, x86_64: installed
virtualbox/7.0.10, 6.5.0-10-generic, x86_64: installed
virtualbox/7.0.10, 6.5.0-14-generic, x86_64: installed

$ tree /var/lib/dkms/
/var/lib/dkms/
├── ch340
│   └── 1.0.0
│       ├── build
│       │   ├── ch340.c
│       │   ├── ch340.mod
│       │   ├── dkms.conf
│       │   ├── Dockerfile
│       │   ├── Makefile
│       │   ├── make.log
│       │   └── README.md
│       └── source -> /usr/src/ch340-1.0.0
├── nvidia
│   ├── 470.223.02
│   │   ├── 6.5.0-10-generic
│   │   │   └── x86_64
│   │   │       ├── log
│   │   │       │   └── make.log
│   │   │       └── module
│   │   │           ├── nvidia-drm.ko.zst
│   │   │           ├── nvidia.ko.zst
│   │   │           ├── nvidia-modeset.ko.zst
│   │   │           ├── nvidia-peermem.ko.zst
│   │   │           └── nvidia-uvm.ko.zst
│   │   ├── 6.5.0-14-generic
│   │   │   └── x86_64
│   │   │       ├── log
│   │   │       │   └── make.log
│   │   │       └── module
│   │   │           ├── nvidia-drm.ko.zst
│   │   │           ├── nvidia.ko.zst
│   │   │           ├── nvidia-modeset.ko.zst
│   │   │           ├── nvidia-peermem.ko.zst
│   │   │           └── nvidia-uvm.ko.zst
│   │   └── source -> /usr/src/nvidia-470.223.02
│   ├── kernel-6.5.0-10-generic-x86_64 -> 470.223.02/6.5.0-10-generic/x86_64
│   └── kernel-6.5.0-14-generic-x86_64 -> 470.223.02/6.5.0-14-generic/x86_64
└── virtualbox
    ├── 7.0.10
    │   ├── 6.5.0-10-generic
    │   │   └── x86_64
    │   │       ├── log
    │   │       │   └── make.log
    │   │       └── module
    │   │           ├── vboxdrv.ko.zst
    │   │           ├── vboxnetadp.ko.zst
    │   │           └── vboxnetflt.ko.zst
    │   ├── 6.5.0-14-generic
    │   │   └── x86_64
    │   │       ├── log
    │   │       │   └── make.log
    │   │       └── module
    │   │           ├── vboxdrv.ko.zst
    │   │           ├── vboxnetadp.ko.zst
    │   │           └── vboxnetflt.ko.zst
    │   └── source -> /usr/src/virtualbox-7.0.10
    ├── kernel-6.5.0-10-generic-x86_64 -> 7.0.10/6.5.0-10-generic/x86_64
    └── kernel-6.5.0-14-generic-x86_64 -> 7.0.10/6.5.0-14-generic/x86_64

31 directories, 27 files

$ df -h
File system     Dim. Usati Dispon. Uso% Montato su
tmpfs           782M  2,3M    780M   1% /run
/dev/sda3       183G   38G    136G  22% /
tmpfs           3,9G   76K    3,9G   1% /dev/shm
tmpfs           5,0M  8,0K    5,0M   1% /run/lock
efivarfs        128K   48K     76K  39% /sys/firmware/efi/efivars
/dev/sda4       260G   45G    202G  19% /home
/dev/sda1        93M  6,1M     87M   7% /boot/efi
tmpfs           782M   80K    782M   1% /run/user/1000

更新2

观察后/var/lib/dkms/ch340/1.0.0/build/make.log我发现:

/var/lib/dkms/ch340/1.0.0/build/ch340.c: At top level:
/var/lib/dkms/ch340/1.0.0/build/ch340.c:675:30: error: initialization of ‘void (*)(struct tty_struct *, struct usb_serial_port *, const struct ktermios *)’ from incompatible pointer >
  675 |         .set_termios       = ch340_set_termios,
      |                              ^~~~~~~~~~~~~~~~~
/var/lib/dkms/ch340/1.0.0/build/ch340.c:675:30: note: (near initialization for ‘ch340_device.set_termios’)
/var/lib/dkms/ch340/1.0.0/build/ch340.c:676:30: error: initialization of ‘int (*)(struct tty_struct *, int)’ from incompatible pointer type ‘void (*)(struct tty_struct *, int)’ [-Wer>
  676 |         .break_ctl         = ch340_break_ctl,
      |                              ^~~~~~~~~~~~~~~
/var/lib/dkms/ch340/1.0.0/build/ch340.c:676:30: note: (near initialization for ‘ch340_device.break_ctl’)
/var/lib/dkms/ch340/1.0.0/build/ch340.c:682:30: error: initialization of ‘void (*)(struct usb_serial_port *)’ from incompatible pointer type ‘int (*)(struct usb_serial_port *)’ [-Wer>
  682 |         .port_remove       = ch340_port_remove,
      |                              ^~~~~~~~~~~~~~~~~
/var/lib/dkms/ch340/1.0.0/build/ch340.c:682:30: note: (near initialization for ‘ch340_device.port_remove’)
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:251: /var/lib/dkms/ch340/1.0.0/build/ch340.o] Errore 1
make[2]: *** [/usr/src/linux-headers-6.5.0-14-generic/Makefile:2037: /var/lib/dkms/ch340/1.0.0/build] Errore 2
make[1]: *** [Makefile:234: __sub-make] Errore 2
make[1]: uscita dalla directory «/usr/src/linux-headers-6.5.0-14-generic»
make: *** [Makefile:5: default] Errore 2

我猜这就是为什么它找不到二进制文件的原因:它无法构建!官方的 Ubuntu 应用程序怎么可能在代码中存在错误!?

答案1

好的,请在文件中

/usr/src/ch340-1.0.0/dkms.conf

改变

AUTOINSTALL="yes"

AUTOINSTALL="no"

然后我们从 dkms 树中删除该模块。

sudo dkms remove ch340/1.0.0 -k --all

最大的问题是该文件夹来自哪里。

请 mv 文件夹,并且仅将此文件夹放在您的 $HOME 中

sudo mv /var/lib/dkms/ch340/ $HOME

那么请

sudo apt -f install

并且附注决定 1 个内核树。

看来您使用了 hw-edge,至少为这个 kerneltree 构建并安装了 virtualbox 和 nvidia 的模块。因此,通过卸载它来清理 linux-generic 和 linux-generic-hwe-22.04 内核树。

此内核树的元包是

linux-generic-hwe-22.04-edge

编辑:

sudo apt purge linux-generic linux-image-generic linux-headers-generic linux-generic-hwe-22.04 linux-image-generic-hwe-22.04 linux-headers-generic-hwe-22.04

然后请为您的内核安装元包。

sudo apt install linux-generic-hwe-22.04-edge

sudo apt autopurge

相关内容