ubuntu 24.04 安装vmware workstation
ubuntu 24.04 安装vmware workstation
VMware-Workstation-Full-17.5.1-23298084.x86_64.bundle 安装包下载:https://sysin.org/blog/vmware-workstation-17/<>
vmnet.ko
vmmon.ko
编译
git clone https://github.com/mkubecek/vmware-host-modules.git
切到workstation-17.5.1 branch;
ubuntu 24.04内核版本6.17.0-19-generic,编译问题解决:
diff --git a/vmmon-only/Makefile.kernel b/vmmon-only/Makefile.kernel
index a39e099..57595ed 100644
--- a/vmmon-only/Makefile.kernel
+++ b/vmmon-only/Makefile.kernel
@@ -22,6 +22,11 @@ CC_OPTS += -DVMMON -DVMCORE
INCLUDE := -I$(SRCROOT)/include -I$(SRCROOT)/include/x86 -I$(SRCROOT)/common -I$(SRCROOT)/linux
EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE)
+ccflags-y += $(CC_OPTS) $(INCLUDE) $(INCLUDE)
+
+
+$(warning EXTRA_CFLAGS:$(EXTRA_CFLAGS) )
+
obj-m += $(DRIVER).o
$(DRIVER)-y := $(subst $(SRCROOT)/, , $(patsubst %.c, %.o, \
diff --git a/vmmon-only/linux/driver.c b/vmmon-only/linux/driver.c
index ab8e2dc..df5dc5a 100644
--- a/vmmon-only/linux/driver.c
+++ b/vmmon-only/linux/driver.c
@@ -29,6 +29,8 @@
#include <linux/slab.h>
#include <linux/smp.h>
#include <linux/wait.h>
+#include <linux/timer.h>
+#include <linux/jiffies.h>
#include <asm/hw_irq.h> /* for CALL_FUNCTION_VECTOR */
@@ -345,7 +347,8 @@ LinuxDriverExit(void)
Log("Module %s: unloaded\n", vmmon_miscdev.name);
- del_timer_sync(&tscTimer);
+ //del_timer_sync(&tscTimer);
+ timer_delete_sync(&tscTimer);
Vmx86_CleanupHVIOBitmap();
Task_Terminate();
diff --git a/vmmon-only/linux/hostif.c b/vmmon-only/linux/hostif.c
index c1e6c67..138e60c 100644
--- a/vmmon-only/linux/hostif.c
+++ b/vmmon-only/linux/hostif.c
@@ -55,6 +55,9 @@
#include <linux/signal.h>
#include <linux/taskstats_kern.h> // For linux/sched/signal.h without version check
+#include <linux/timer.h>
+#include <linux/jiffies.h>
+
#include "x86apic.h"
#include "modulecall.h"
#include "driver.h"
@@ -1995,7 +1998,8 @@ HostIF_InitUptime(void)
void
HostIF_CleanupUptime(void)
{
- del_timer_sync(&uptimeState.timer);
+ //del_timer_sync(&uptimeState.timer);
+ timer_delete_sync(&uptimeState.timer);
}
@@ -3410,7 +3414,7 @@ HostIF_SafeRDMSR(unsigned int msr, // IN
int err;
u64 v;
- err = rdmsrl_safe(msr, &v);
+ err = rdmsrq_safe(msr, &v);
*val = (err == 0) ? v : 0; // Linux corrupts 'v' on error
return err;
diff --git a/vmnet-only/vmnetInt.h b/vmnet-only/vmnetInt.h
index b49c399..96f78ab 100644
--- a/vmnet-only/vmnetInt.h
+++ b/vmnet-only/vmnetInt.h
@@ -41,8 +41,16 @@
compat_skb_set_network_header(skb, sizeof (struct ethhdr)), \
dev_queue_xmit(skb) \
)
-#define dev_lock_list() read_lock(&dev_base_lock)
-#define dev_unlock_list() read_unlock(&dev_base_lock)
+//#define dev_lock_list() read_lock(&dev_base_lock)
+//#define dev_unlock_list() read_unlock(&dev_base_lock)
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 11, 0)
+# define dev_lock_list() rcu_read_lock()
+# define dev_unlock_list() rcu_read_unlock()
+#else
+# define dev_lock_list() read_lock(&dev_base_lock)
+# define dev_unlock_list() read_unlock(&dev_base_lock)
+#endif
extern struct proto vmnet_proto;
配置虚拟机自启动
[Unit]
Description=VMware Win10 Auto Start/Stop
After=network-online.target
[Service]
Type=oneshot
RemainAfterExit=yes
User=wyk
Environment=PATH=/usr/local/bin:/usr/bin:/bin
ExecStart=/usr/bin/vmrun start /home/wyk/VirtualMachines/vm-windows/Windows10.vmx nogui
ExecStop=/usr/bin/vmrun stop /home/wyk/VirtualMachines/vm-windows/Windows10.vmx soft
ExecStop=/usr/bin/vmrun stop /home/wyk/VirtualMachines/vm-windows/Windows10.vmx hard
TimeoutStopSec=120
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload sudo systemctl restart vmware-win10
确认是否启动:
systemctl status vmware-win10 -l
vmrun list
配置虚拟机自启动
vim ~/.config/systemd/user/vmware-win10.service
[Unit]
Description=VMware Win10 Auto Start/Stop (User)
After=default.target
[Service]
Type=oneshot
RemainAfterExit=yes
Environment=PATH=/usr/local/bin:/usr/bin:/bin
# 等待 VMware 服务起来(关键)
ExecStartPre=/bin/bash -c 'for i in {1..30}; do systemctl is-active vmware && exit 0; sleep 2; done; exit 1'
# 再额外等一会(保险)
ExecStartPre=/bin/sleep 5
# 启动虚拟机
ExecStart=/usr/bin/vmrun start /home/wyk/VirtualMachines/vm-windows/Windows10.vmx nogui
# 停止虚拟机
ExecStop=/usr/bin/vmrun stop /home/wyk/VirtualMachines/vm-windows/Windows10.vmx soft
ExecStop=/usr/bin/vmrun stop /home/wyk/VirtualMachines/vm-windows/Windows10.vmx hard
TimeoutStopSec=120
[Install]
WantedBy=default.target
bash:
systemctl --user daemon-reload
systemctl --user restart vmware-win10
启动log:
systemctl --user status vmware-win10
浙公网安备 33010602011771号