内核升级后 dpkg/dkms 不退出/挂起

ker*_*000 5 upgrade kernel 17.10

我已经升级到最新的内核版本。

升级过程未完成。手动尝试时(在终端上),我得到:

Setting up linux-image-4.13.0-25-generic (4.13.0-25.29) ...
Running depmod.
update-initramfs: deferring update (hook will be called later)
The link /initrd.img is a dangling linkto /boot/initrd.img-4.13.0-25-generic
vmlinuz(/boot/vmlinuz-4.13.0-25-generic
) points to /boot/vmlinuz-4.13.0-25-generic
 (/boot/vmlinuz-4.13.0-25-generic) -- doing nothing at /var/lib/dpkg/info/linux-image-4.13.0-25-generic.postinst line 491.
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 4.13.0-25-generic /boot/vmlinuz-4.13.0-25-generic
run-parts: executing /etc/kernel/postinst.d/dkms 4.13.0-25-generic /boot/vmlinuz-4.13.0-25-generic
(hangs)
Run Code Online (Sandbox Code Playgroud)

按照评论中的建议,我尝试删除 nvidia 驱动程序和内核映像。但这基本上导致了同样的问题:

$ sudo apt-get purge linux-image-4.13.0-25-generic *nvidia*
The following packages will be REMOVED:
  linux-image-4.13.0-25-generic* linux-image-extra-4.13.0-25-generic nvidia-384* nvidia-opencl-icd-384* nvidia-prime*
  nvidia-settings*
0 upgraded, 0 newly installed, 6 to remove and 0 not upgraded.
4 not fully installed or removed.
After this operation, 235 MB disk space will be freed.
Do you want to continue? [Y/n] Y
(Reading database ... 210977 files and directories currently installed.)
Removing linux-image-extra-4.13.0-25-generic (4.13.0-25.29) ...
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 4.13.0-25-generic /boot/vmlinuz-4.13.0-25-generic
run-parts: executing /etc/kernel/postinst.d/dkms 4.13.0-25-generic /boot/vmlinuz-4.13.0-25-generic
(hangs)
Run Code Online (Sandbox Code Playgroud)

byf*_*rdy 6

对我来说,这与专有的 nvidia 驱动程序(版本 385)有关。我使用“软件和更新 - > 附加驱动程序”选项卡删除了它们。之后,我手动卸载了该linux-image-4.13.0-25-generic软件包:

sudo apt-get remove linux-image-4.13.0-25-generic
Run Code Online (Sandbox Code Playgroud)

并跑了:

sudo apt-get install -f && sudo apt-get upgrade
Run Code Online (Sandbox Code Playgroud)

重新启动后,我的系统正在运行最新的内核,并且能够安装最新的 nvidia 驱动程序。

编辑:

如果进程挂起,显然终止plymouth服务应该会有所帮助(请参阅Launchpad)。在新的终端类型中

sudo pkill plymouth
Run Code Online (Sandbox Code Playgroud)

安装应该继续。

编辑2:

正如在一切正常后提到的 /op 重新安装linux-image-generic软件包以将内核更新到最新版本:

sudo apt-get install linux-image-generic
Run Code Online (Sandbox Code Playgroud)