Parallels虚拟机kali内核升级bug

情况

有点小菜又喜欢折腾和尝鲜,看到kali发布了新版本,就想着升级一下。

很常规的操作,疏忽没有做快照。升级到一半出现bug,意思到出bug的瞬间,第一时间光速做了快照。

当时情况:所有命令可正常使用,系统锁定之后无法解锁,重启之后无法加载系统。

使用 apt update && apt -f full-upgrade最终报错


重新启动后报错,无法进入系统

执行**apt update ** 显示正常

分析

询问gpt

gpt是是一个很方便,又很可怕的工具。直接将报错丢给他,回答的很好也很全面

但是很可惜的是并没有解决问题,依旧无法成功更新。在这里卡了很久

询问群友

在此特别感谢一下p神的知识星球,微信群的氛围特别好。有很多人帮我分析,解决问题,让我找回了初心和正确的解决方案


有很多人给了很多建议,我把其中的知识点整理了一下

列出所有已经安装的内核
1
dpkg --list | grep linux-image

第一列的ii,if,iu代表不同的意义

1
2
3
ii:已安装被配置
if:已安装但处于不一致的状态。可能是由于中断的安装或配置问题引起的。
iu:已安装,有可用的升级
查看内核版本
1
2
uname -a
uname -r
删除某个内核版本
1
2
3
#apt remove linux-image-5.18.0-kali5-arm64
dpkg --remove --force-remove-reinstreq linux-headers-6.4.0-kali3-arm64
dpkg --remove --force-remove-reinstreq linux-image-6.4.0-kali3-arm64

在删除的过程中可能会遇到报错提示,比如文件夹非空。去删除指定文件夹即可

ex:

到这里,系统已经可以正常使用,不存在异常状态。

系统可正常使用

到这里,系统已经可以正常使用,不存在异常状态。小小总结:无论什么时候,进行敏感操作前一定要备份备份备份备份!!!!

自我分析

我陷入了深深的不解与疑惑:大版本的升级,无论是官方还是博客给出的命令都是一致的,到底是哪里出了问题呢?排除网络原因,我决定仔细去看整个升级流程,不放过任何信息。

迅速定位首次问题出发点
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
正在设置 linux-headers-6.4.0-kali3-arm64 (6.4.11-1kali1) ...
/etc/kernel/header_postinst.d/dkms:
dkms: running auto installation service for kernel 6.4.0-kali3-arm64.
The kernel is be built without module signing facility, modules won't be signed

Building module:
Cleaning build area...
make -j3 KERNELRELEASE=6.4.0-kali3-arm64 -f Makefile.kmods KSRC=/lib/modules/6.4.0-kali3-arm64/build KVER=6.4.0-kali3-arm64....(bad exit status: 2)
Error! Bad return status for module build on kernel: 6.4.0-kali3-arm64 (aarch64)
Consult /var/lib/dkms/parallels-tools/18.1.0.53311/build/make.log for more information.
dkms autoinstall on 6.4.0-kali3-arm64/aarch64 failed for parallels-tools(10)
Error! One or more modules failed to install during autoinstall.
Refer to previous errors for more information.
dkms: autoinstall for kernel: 6.4.0-kali3-arm64 failed!
run-parts: /etc/kernel/header_postinst.d/dkms exited with return code 11
Failed to process /etc/kernel/header_postinst.d at /var/lib/dpkg/info/linux-headers-6.4.0-kali3-arm64.postinst line 11.
dpkg: 处理软件包 linux-headers-6.4.0-kali3-arm64 (--configure)时出错:
已安装 linux-headers-6.4.0-kali3-arm64 软件包 post-installation 脚本 子进程返回错误状态 1
正在设置 libpfm4:arm64 (4.13.0+git15-gefd10fb-2) ...
正在设置 python3-pyparsing (3.1.1-1) ...
正在设置 libfreetype6:arm64 (2.13.2+dfsg-1) ...
正在设置 libspa-0.2-modules:arm64 (0.3.79-1)

可以看到好像和parallels-tools有关。查看后续报错,均与parallels-tools有关。

卸载parallels-tools,解决问题

灵机一动,如果将parallels-tools卸载掉再升级会不会好呢。验证之后卸载parallels-tools后,可成功升级无报错

卸载parallels-tools方法

彻底升级

成功执行 apt update && apt full-upgrade后,使用 uname -a 查看内核版本,发现内核版本依旧未升级,心生奇怪。

修改grub配置

需要编辑 /etc/default/grub 文件,此文件是 GRUB 引导加载程序的配置文件,用于设置 GRUB 的各种参数和选项。将GRUB_DEFAULT属性设置为saved

1
GRUB_DEFAULT=saved

然后再设置

1
sudo grub-set-default 0

reboot开机启动,就可以看到内核升级完成

总结与思考

arm系列使用 parallels-tools 对虚拟机大版本时候,需要卸载parallels-tools。快照快照快照

gpt很方便很好用,用的久了有些依赖。遇到报错不想看,直接丢给它了,细思极恐。以后遇到问题还是要多看看报错,保持自己分析问题的能力与探索能力,共勉。

感谢以下blog

p神的知识星球和群友值得单独列出来(加入链接https://t.zsxq.com/120S7zhDR)

1
2
3
4
https://www.freebuf.com/sectool/279794.html
https://zhuanlan.zhihu.com/p/545793991
https://kb.parallels.com/cn/117044
https://http.kali.org/kali/pool/main/l/linux/