Intel Simics VMP内核在PopOS 22.04下编译安装失败求助
问题描述
在PopOS 22.04 LTS系统编译安装Intel Simics VMP内核模块时失败,核心报错为get_user_pages函数参数不匹配,具体报错信息如下:
Setting up your system for Simics VMP ================================================ This step will be performed with root privilege through sudo: - Loading of the vmxmon kernel module. Unless this script is run as root, you will be prompted for the root password during those steps. Building kernel modules for Simics VMP setup build directory... ok building vmxmon... failed Consolidate compiler generated dependencies of target vmxmon-version [ 28%] Built target vmxmon-version [ 42%] Copying scripts to build directory [ 42%] Built target copy-scripts Consolidate compiler generated dependencies of target check-hw-util [ 71%] Built target check-hw-util [ 85%] Main target; builds the vmxmon kernel module warning: the compiler differs from the one used to build the kernel The kernel was built by: x86_64-linux-gnu-gcc-12 (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0 You are using: cc (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0 /home/herget/simics/simics-6.0.169/vmxmon/build/module/linux/page.c: In function ‘get_upage’: /home/herget/simics/simics-6.0.169/vmxmon/build/module/linux/page.c:295:15: error: too many arguments to function ‘get_user_pages’ 295 | cnt = get_user_pages(va, 1 /* #pages */, | ^~~~~~~~~~~~~~ In file included from /home/herget/simics/simics-6.0.169/vmxmon/build/module/linux/page.c:17: ./include/linux/mm.h:2430:6: note: declared here 2430 | long get_user_pages(unsigned long start, unsigned long nr_pages, | ^~~~~~~~~~~~~~ make[5]: *** [scripts/Makefile.build:243: /home/herget/simics/simics-6.0.169/vmxmon/build/module/linux/page.o] Error 1 make[4]: *** [Makefile:2040: /home/herget/simics/simics-6.0.169/vmxmon/build/module] Error 2 gmake[3]: *** [CMakeFiles/vmxmon.dir/build.make:73: module/vmxmon.ko] Error 2 gmake[2]: *** [CMakeFiles/Makefile2:109: CMakeFiles/vmxmon.dir/all] Error 2 gmake[1]: *** [CMakeFiles/Makefile2:116: CMakeFiles/vmxmon.dir/rule] Error 2 gmake: *** [Makefile:124: vmxmon] Error 2 exiting
系统环境信息:
- OS: PopOS 22.04 LTS
- Kernel: 6.5.6-76060506-generic
- CPU: Intel® Core™ i7-10850H CPU @ 2.70GHz × 12
- RAM: 32GB
- BIOS已启用所有Intel虚拟化技术
- 系统已更新至最新版本
- Simics版本:6.0.169(公开版)
可行解决办法
1. 降级内核到6.0以下版本
Linux 6.0+对get_user_pages函数签名做了修改,而Simics 6.0.169的vmxmon模块仅兼容旧版内核:
- 安装5.15系列LTS内核:
sudo apt install linux-image-5.15.0-88-generic linux-headers-5.15.0-88-generic - 重启后在GRUB菜单的「Advanced options for Pop!_OS」中选择5.15内核启动
- 重新运行Simics VMP安装脚本
2. 手动修改vmxmon代码适配新内核
修改/home/herget/simics/simics-6.0.169/vmxmon/build/module/linux/page.c中的get_upage函数:
- 找到第295行的
get_user_pages调用,将其替换为内核6.0+兼容的函数(如get_user_pages_locked或get_user_pages_remote),调整参数匹配新函数签名 - 修改完成后,重新执行安装脚本:
cd /home/herget/simics/simics-6.0.169 && ./setup-vmp.sh
3. 升级Simics到支持新内核的版本
Intel后续发布的Simics版本可能已适配Linux 6.x内核:
- 下载最新公开版或商业版Simics
- 卸载旧版本后安装新版本,再运行VMP安装脚本
内容的提问来源于stack exchange,提问作者Herget
相关产品推荐
相关产品推荐

