2.6.24-rc8 git 20080124版であれば vmware-any-any-update116 で vmware が動くが,それ以降の Linux だと compile がとおらず,放置してた.
2.6.25 も出てことだし,ちょっと見てみた.
ちなみに vmware-any-any-update116 は <URL:http://groups.google.com/group/vmkernelnewbies/files> にある(開発が 115 までとは別系統?).
で,まず,
In file included from /tmp/vmware-config0/vmmon-only/common/hostKernel.h:56,
from /tmp/vmware-config0/vmmon-only/common/task.c:30:
include/asm/page.h: In function 'pte_t native_make_pte(pteval_t)':
include/asm/page.h:128: error: expected primary-expression before ')' token
include/asm/page.h:128: error: expected ';' before '{' token
include/asm/page.h:128: error: expected primary-expression before '.' token
include/asm/page.h:128: error: expected `;' before '}' token
とか.これは [myn:2007072000] と同様に include/asm/page.h の native_make_pte 付近を修正.次に,
/tmp/vmware-config0/vmnet-only/bridge.c: In function 'VNetBridgeUp': /tmp/vmware-config0/vmnet-only/bridge.c:949: error: implicit declaration of function 'sock_valbool_flag'
とか.これは「[NET]: Move sock_valbool_flag to socket.c」 由来の問題ぽい.
diff -ruw vmnet-only.orig/bridge.c vmnet-only/bridge.c
--- vmnet-only.orig/bridge.c 2007-11-28 19:25:06.000000000 +0900
+++ vmnet-only/bridge.c 2008-04-18 10:43:53.000000000 +0900
@@ -886,6 +886,14 @@
*----------------------------------------------------------------------
*/
+static inline void sock_valbool_flag(struct sock *sk, int bit, int valbool)
+{
+ if (valbool)
+ sock_set_flag(sk, bit);
+ else
+ sock_reset_flag(sk, bit);
+}
+
int
VNetBridgeUp(VNetBridge *bridge, // IN: bridge struct
Bool rtnlLock) // IN: acquire RTNL lock
という感じで bridge.c に宣言を記述して対応(というか手動で inline 展開 しても可).やるきなしなし.次に,
/tmp/vmware-config0/vmnet-only/filter.c:48: error: 'NF_IP_LOCAL_IN' undeclared here (not in a function) /tmp/vmware-config0/vmnet-only/filter.c:53: error: 'NF_IP_POST_ROUTING' undeclared here (not in a function) /tmp/vmware-config0/vmnet-only/filter.c: In function 'VNetFilterHookFn': /tmp/vmware-config0/vmnet-only/filter.c:233: warning: comparison between pointer and integer
とか.NF_IP_LOCAL_IN および NF_IP_POST_ROUTING は linux/netfilter_ipv4.h で define されており, filter.c からこの file を include しようとしているのだが,失敗してるぽい. ということで
diff -ruw vmnet-only.orig/filter.c vmnet-only/filter.c
--- vmnet-only.orig/filter.c 2007-11-28 19:11:12.000000000 +0900
+++ vmnet-only/filter.c 2008-04-18 10:50:24.000000000 +0900
@@ -41,6 +41,9 @@
/* netfilter hooks for filtering. */
static nf_hookfn VNetFilterHookFn;
+#define NF_IP_LOCAL_IN 1
+#define NF_IP_POST_ROUTING 4
+
static struct nf_hook_ops vmnet_nf_ops[] = {
{ .hook = VNetFilterHookFn,
compat_nf_hook_owner
という感じで filter.c に #define を記述して対応.やるきなしなし.
Last-modified: Sun May 11 18:13:47 +0900 2008