[Internal testing communication] 关于自己编译新内核和vbox之间的问题
Tofloor
poster avatar
昨夜的星辰
deepin
2026-06-28 19:07
Author

昨天自己编译了最新的7.1.2内核,安装前停止deepin-anything-server这个服务,并禁止其开机自动启动,即可正常完成新内核安装并重启成功

但是virtualbox始终无法解决,哪怕用官网run文件安装也不行,借助AI查询了一下,AI给了下面的回复

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

这个错误是由于新版本 Linux 内核(6.19.x)引入了更严格的 符号命名空间(Symbol Namespace) 检查机制导致的--1

问题原因

  1. 内核符号受保护:从 Linux 内核 6.19 版本开始,cr4_update_irqsoffcr4_read_shadow__flush_tlb_all 这几个符号被移入了一个名为 module:kvm,kvm-amd,kvm-intel 的命名空间-1-2。这意味着只有 KVM 相关的内核模块才能使用它们。
  2. VirtualBox 模块未声明导入vboxdrv 模块调用了这些符号,但其代码中没有声明导入这个命名空间-1。更关键的是,即使手动尝试导入,内核的命名空间机制也禁止外部模块(out-of-tree module)导入这个受保护的命名空间-1
  3. 本质是不兼容:这实际上是 Linux 内核 KVM 模块与 VirtualBox 之间的底层接口不兼容问题-2。由于 VirtualBox 是一个“外部”内核模块,它无法直接使用这些被限制在 KVM 命名空间内的内核函数。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

不知道AI说的这个原因是否确是如此,如果真这样的话按说VBOX早该改了吧,不然这以后不是麻烦了?

Reply Favorite View the author
All Replies
avatar
root
deepin
2026-06-28 20:25
#1

LZ使用的是已经过时的VirtualBox版本,最新版已经支持到 主线 7.1 版内核

============

PS:VirtualBox 7.1.2 (released September 26 2024) 是已严重过时的上古版本

VirtualBox 7.1.x is no longer supported!

7.1.4才支持 6.12 LTS 内核,坚持7.1.2是最新版的话建议使用6.6内核.

VirtualBox 7.1.4 (released October 15 2024)

  • Linux Guest Additions: Introduce initial support for kernel 6.12 (NOTE: In kernel 6.12, KVM initializes virtualization on module loading by default. This prevents VirtualBox VMs from starting. In order to avoid this, either add "kvm.enable_virt_at_load=0" parameter into kernel command line or unload corresponding kvm_XXX module)

======

https://www.virtualbox.org/wiki/Changelog-7.2

===============

VirtualBox 7.2.10 (released June 16 2026)

  • Linux Host and Guest: Added initial support for kernel 7.1

=================

VirtualBox 7.2.8 (released April 21 2026)

tail

Reply View the author
avatar
昨夜的星辰
deepin
2026-06-28 21:28
#2
root

LZ使用的是已经过时的VirtualBox版本,最新版已经支持到 主线 7.1 版内核

============

PS:VirtualBox 7.1.2 (released September 26 2024) 是已严重过时的上古版本

VirtualBox 7.1.x is no longer supported!

7.1.4才支持 6.12 LTS 内核,坚持7.1.2是最新版的话建议使用6.6内核.

VirtualBox 7.1.4 (released October 15 2024)

  • Linux Guest Additions: Introduce initial support for kernel 6.12 (NOTE: In kernel 6.12, KVM initializes virtualization on module loading by default. This prevents VirtualBox VMs from starting. In order to avoid this, either add "kvm.enable_virt_at_load=0" parameter into kernel command line or unload corresponding kvm_XXX module)

======

https://www.virtualbox.org/wiki/Changelog-7.2

===============

VirtualBox 7.2.10 (released June 16 2026)

  • Linux Host and Guest: Added initial support for kernel 7.1

=================

VirtualBox 7.2.8 (released April 21 2026)

tail

7.1.2是Linux内核版本号,昨天刚发出来

vbox是官网下载的最新run文件,帖里没写版本号,实际是7.2.10😂

问题是自己编译了kernel 7.1.2,然后遇到vbox内核模块的问题,已有版本是7.2.6,已经尝试过安装VBOX最新版本7.2.10,不过没搞定😭

Reply View the author
avatar
root
deepin
2026-06-28 22:00
#3

圖片.png

=====

VirtualBox 7.2.10 在 kernel 7.1.2 下,木有任何问题,因为

VirtualBox 7.2.10 (released June 16 2026)

  • Linux Host and Guest: Added initial support for kernel 7.1

已经支持

=====

至于缺失有关符号的问题估计是 LZ 的内核木有选择配置这些符号造成

tail

Reply View the author
avatar
mozixun
Moderator
2026-06-28 22:10
#4
root

LZ使用的是已经过时的VirtualBox版本,最新版已经支持到 主线 7.1 版内核

============

PS:VirtualBox 7.1.2 (released September 26 2024) 是已严重过时的上古版本

VirtualBox 7.1.x is no longer supported!

7.1.4才支持 6.12 LTS 内核,坚持7.1.2是最新版的话建议使用6.6内核.

VirtualBox 7.1.4 (released October 15 2024)

  • Linux Guest Additions: Introduce initial support for kernel 6.12 (NOTE: In kernel 6.12, KVM initializes virtualization on module loading by default. This prevents VirtualBox VMs from starting. In order to avoid this, either add "kvm.enable_virt_at_load=0" parameter into kernel command line or unload corresponding kvm_XXX module)

======

https://www.virtualbox.org/wiki/Changelog-7.2

===============

VirtualBox 7.2.10 (released June 16 2026)

  • Linux Host and Guest: Added initial support for kernel 7.1

=================

VirtualBox 7.2.8 (released April 21 2026)

tail

7.2.8版本我也试过不行

Reply View the author
avatar
昨夜的星辰
deepin
21 hours ago
#5
root

圖片.png

=====

VirtualBox 7.2.10 在 kernel 7.1.2 下,木有任何问题,因为

VirtualBox 7.2.10 (released June 16 2026)

  • Linux Host and Guest: Added initial support for kernel 7.1

已经支持

=====

至于缺失有关符号的问题估计是 LZ 的内核木有选择配置这些符号造成

tail

确实,360纳米AI给的解决方案是在.config里配置符号连接再编译

主帖里的是deepseek给的答案,正是因为对dp的答案感到好奇,才来论坛问问是不是这么个事

image.png

Reply View the author
avatar
昨夜的星辰
deepin
17 hours ago
#6
昨夜的星辰

确实,360纳米AI给的解决方案是在.config里配置符号连接再编译

主帖里的是deepseek给的答案,正是因为对dp的答案感到好奇,才来论坛问问是不是这么个事

image.png

实际上这个导出符号的配置位置无法起作用,添加在.config后编译内核时无法识别,经过多次询问AI,告知这些是需要添加在内核源代码中的。。。

好吧,老老实实用6.18内核,等deepin官方出7.x系列再说吧

Reply View the author
avatar
mozixun
Moderator
15 hours ago
#7
昨夜的星辰

实际上这个导出符号的配置位置无法起作用,添加在.config后编译内核时无法识别,经过多次询问AI,告知这些是需要添加在内核源代码中的。。。

好吧,老老实实用6.18内核,等deepin官方出7.x系列再说吧

这个跟deepin官方出不出无关,而是Vbox适不适配

Reply View the author
avatar
昨夜的星辰
deepin
10 hours ago
#8
mozixun

这个跟deepin官方出不出无关,而是Vbox适不适配

3楼说他那VBOX和kernel7.1.2配合没有问题,是改过内核源码?

或许到时候deepin也改一下?我是水平不够,搞不定了

Reply View the author
avatar
mozixun
Moderator
9 hours ago
#9
昨夜的星辰

3楼说他那VBOX和kernel7.1.2配合没有问题,是改过内核源码?

或许到时候deepin也改一下?我是水平不够,搞不定了

他那vbox到7.2.10版本了

Reply View the author
avatar
root
deepin
7 hours ago
#10
昨夜的星辰

3楼说他那VBOX和kernel7.1.2配合没有问题,是改过内核源码?

或许到时候deepin也改一下?我是水平不够,搞不定了

LZ一直怀疑是 7.1.2内核问题和 VirtualBox 的问题,就没考虑是自身的问题

符号 cr4_update_irqsoff

位于代码 arch/x86/kernel/cpu/common.c

圖片.png

在内核中能导出的条件是 EXPORT_SYMBOL_FOR_KVM ,也就是说 内核配置文件 .config 必须有定义 KVM 相关的选项才会导出这个符号,LZ 的内核木有导出 KVM 相关的符号,就说明 LZ的内核根本就木有选择使用KVM相关的功能,也就是 KVM_X86 木有启用

圖片.png

==

3楼的已经说明vboxdrv 是与 kvm_intel 和 kvm_amd 平级的虚拟化内核模块,而 kvm_intel 和 kvm_amd 都依赖 kvm.ko (也就是 KVM_X86 是否配置)

圖片.png

进一步说明LZ的内核配置至少是

# CONFIG_KVM is not set

# CONFIG_KVM_INTEL is not set

# CONFIG_KVM_AMD is not set

然后四处找导出内核符号的方法🤔

==

然而 LZ 四处AI, 最后得出结论 7.1.2内核与 VirtualBox 不兼容,VirtualBox 不适配(无视VirtualBox 7.2.10官方Changelog-7.2已兼容 7.1内核的变动)。

=====

当然VirtualBox木有考虑用户内核木有启用KVM的情况下使用VirtualBox的情况也可以说是 VirtualBox还木有完全适配Linux内核,毕竟Win下木有这个要求🐻

tail

Reply View the author