[PC周辺] vmware-any-any-update117 + Linux 2.6.26-rc2 git 20080514版 (20080514)

[myn:2008051100]と同様でいける. procfs.c に対する patch は以下のようにしたほうがいいらしい.

diff -uwr vmnet-only.orig/procfs.c vmnet-only/procfs.c
--- vmnet-only.orig/procfs.c    2007-05-14 14:57:41.000000000 +0900
+++ vmnet-only/procfs.c 2008-05-13 13:35:25.000000000 +0900
@@ -63,7 +63,7 @@
 {
    int retval;

-   retval = VNetProc_MakeEntry(&proc_root, "vmnet", S_IFDIR, &base);
+   retval = VNetProc_MakeEntry(NULL, "vmnet", S_IFDIR, &base);
    if (retval) {
       return retval;
    }
@@ -95,7 +95,7 @@
 void
 VNetProc_Cleanup(void)
 {
-   VNetProc_RemoveEntry(base, &proc_root);
+   remove_proc_entry(base->name, NULL);
    base = NULL;
 }

VNetProc_RemoveEntry の 2つ目の引数が NULL だと, 別の意味に解釈されるので. これで /proc/vmnet/ が2つ出来てしまう(消えない)問題が解決.

関連リンク

[PC周辺] vmware-any-any-update117 + Linux 2.6.26-rc1 git 20080507版 (20080511)

vmware-any-any-update117 は <URL:http://download.rsbac.org/tmp/> にあるものを使う.

まず vmmon の comple でこける.

make: Entering directory `/tmp/vmware-config0/vmmon-only'
make -C /usr/src/linux-headers-2.6.26-rc1-20080507-myn-01/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.26-rc1-20080507-myn-01'
  CC [M]  /tmp/vmware-config0/vmmon-only/linux/driver.o
/tmp/vmware-config0/vmmon-only/linux/driver.c:171: error: unknown field 'nopage' specified in initializer
/tmp/vmware-config0/vmmon-only/linux/driver.c:172: warning: initialization from incompatible pointer type
/tmp/vmware-config0/vmmon-only/linux/driver.c:175: error: unknown field 'nopage' specified in initializer
/tmp/vmware-config0/vmmon-only/linux/driver.c:176: warning: initialization from incompatible pointer type
make[2]: *** [/tmp/vmware-config0/vmmon-only/linux/driver.o] Error 1
make[1]: *** [_module_/tmp/vmware-config0/vmmon-only] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.26-rc1-20080507-myn-01'
make: *** [vmmon.ko] Error 2
make: Leaving directory `/tmp/vmware-config0/vmmon-only'
Unable to build the vmmon module.

これについては,

diff -uwr vmmon-only.orig/linux/driver.c vmmon-only/linux/driver.c
--- vmmon-only.orig/linux/driver.c      2007-11-28 19:59:26.000000000 +0900
+++ vmmon-only/linux/driver.c   2008-05-11 17:41:57.000000000 +0900
@@ -168,11 +168,9 @@
 static void LinuxDriverPollTimeout(unsigned long clientData);

 static struct vm_operations_struct vmuser_mops = {
-       .nopage = LinuxDriverNoPage
 };

 struct vm_operations_struct vmuser_locked_mops = {
-       .nopage = LinuxDriverLockedNoPage
 };

 static struct file_operations vmuser_fops;

とかで対応.include/linux/mm.h の struct vm_operations_struct から nopage が無くなったのは mm: remove nopage で,本当は mm: merge populate and nopage into fault (fixes nonlinear) で導入された fault を使わなければならないような気もする.

次に vmnet の comple でこける.

make: Entering directory `/tmp/vmware-config0/vmnet-only'
make -C /usr/src/linux-headers-2.6.26-rc1-20080507-myn-01/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.26-rc1-20080507-myn-01'
  CC [M]  /tmp/vmware-config0/vmnet-only/driver.o
  CC [M]  /tmp/vmware-config0/vmnet-only/hub.o
  CC [M]  /tmp/vmware-config0/vmnet-only/userif.o
  CC [M]  /tmp/vmware-config0/vmnet-only/netif.o
  CC [M]  /tmp/vmware-config0/vmnet-only/bridge.o
/tmp/vmware-config0/vmnet-only/bridge.c: In function 'VNetBridgeDevCompatible':
/tmp/vmware-config0/vmnet-only/bridge.c:278: error: 'struct net_device' has no member named 'nd_net'
/tmp/vmware-config0/vmnet-only/bridge.c:278: error: 'struct net_device' has no member named 'nd_net'
/tmp/vmware-config0/vmnet-only/bridge.c: In function 'VNetBridgeUp':
/tmp/vmware-config0/vmnet-only/bridge.c:905: error: 'struct net_device' has no member named 'nd_net'
/tmp/vmware-config0/vmnet-only/bridge.c:943: error: 'struct net_device' has no member named 'nd_net'
make[2]: *** [/tmp/vmware-config0/vmnet-only/bridge.o] Error 1
make[1]: *** [_module_/tmp/vmware-config0/vmnet-only] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.26-rc1-20080507-myn-01'
make: *** [vmnet.ko] Error 2
make: Leaving directory `/tmp/vmware-config0/vmnet-only'
Unable to build the vmnet module.

これについては,[myn:2008041900] と同じ.次に以下.

make: Entering directory `/tmp/vmware-config0/vmnet-only'
make -C /usr/src/linux-headers-2.6.26-rc1-20080507-myn-01/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.26-rc1-20080507-myn-01'
  CC [M]  /tmp/vmware-config0/vmnet-only/driver.o
  CC [M]  /tmp/vmware-config0/vmnet-only/hub.o
  CC [M]  /tmp/vmware-config0/vmnet-only/userif.o
  CC [M]  /tmp/vmware-config0/vmnet-only/netif.o
  CC [M]  /tmp/vmware-config0/vmnet-only/bridge.o
  CC [M]  /tmp/vmware-config0/vmnet-only/filter.o
  CC [M]  /tmp/vmware-config0/vmnet-only/procfs.o
/tmp/vmware-config0/vmnet-only/procfs.c: In function 'VNetProc_Init':
/tmp/vmware-config0/vmnet-only/procfs.c:66: error: 'proc_root' undeclared (first use in this function)
/tmp/vmware-config0/vmnet-only/procfs.c:66: error: (Each undeclared identifier is reported only once
/tmp/vmware-config0/vmnet-only/procfs.c:66: error: for each function it appears in.)
/tmp/vmware-config0/vmnet-only/procfs.c: In function 'VNetProc_Cleanup':
/tmp/vmware-config0/vmnet-only/procfs.c:98: error: 'proc_root' undeclared (first use in this function)
make[2]: *** [/tmp/vmware-config0/vmnet-only/procfs.o] Error 1
make[1]: *** [_module_/tmp/vmware-config0/vmnet-only] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.26-rc1-20080507-myn-01'
make: *** [vmnet.ko] Error 2
make: Leaving directory `/tmp/vmware-config0/vmnet-only'
Unable to build the vmnet module.

これは,include/linux/proc_fs.h から proc_root が無くなったのは proc: remove proc_root from drivers. 見た感じ NULL にしておけばいいらしい.ということで,以下のような感じに.

diff -uwr vmnet-only.orig/procfs.c vmnet-only/procfs.c
--- vmnet-only.orig/procfs.c    2007-05-14 14:57:41.000000000 +0900
+++ vmnet-only/procfs.c 2008-05-11 18:08:43.000000000 +0900
@@ -63,7 +63,7 @@
 {
    int retval;

-   retval = VNetProc_MakeEntry(&proc_root, "vmnet", S_IFDIR, &base);
+   retval = VNetProc_MakeEntry(NULL, "vmnet", S_IFDIR, &base);
    if (retval) {
       return retval;
    }
@@ -95,7 +95,7 @@
 void
 VNetProc_Cleanup(void)
 {
-   VNetProc_RemoveEntry(base, &proc_root);
+   VNetProc_RemoveEntry(base, NULL);
    base = NULL;
 }

がしかしただし,vmnet を組込む時に,

proc_dir_entry 'vmnet' already registered
Pid: 10683, comm: insmod Tainted: P          2.6.26-rc1-20080507-myn-01 #1
 [<c018abfd>] proc_register+0xf2/0x11d
 [<c018ad23>] create_proc_entry+0x6d/0x80
 [<f8ae0dc1>] VNetProc_MakeEntry+0x18/0x28 [vmnet]
 [<f8ae0de7>] VNetProc_Init+0x16/0x1b [vmnet]
 [<f8add6f8>] init_module+0x7/0xce [vmnet]
 [<c013989e>] sys_init_module+0x157f/0x1716
 [<c02587e2>] _write_unlock_irqrestore+0x0/0xa
 [<c0103816>] syscall_call+0x7/0xb
 =======================

とか怒られて,かつ実際,

% ls -ld /proc/vmnet*   
dr-xr-xr-x 2 root root 0 2008-05-11 18:10 /proc/vmnet/
dr-xr-xr-x 2 root root 0 2008-05-11 18:10 /proc/vmnet/

みたいな素敵なことになる(一応動く).

関連リンク
参照リンク

このページのインデックス


Last-modified: Wed May 14 23:50:32 +0900 2008

全インデックス