[PC周辺] vmware-any-any-update116 + Linux 2.6.25-rc8 git 20080412版 (20080418)

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

全インデックス