执行完常规操作后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