(Last Updated On: 2017年10月20日)
VMware 14にはパッチがでるそうです。まだ12を使っているので以下のパッチが必要でした。13にアップグレードする意味はなさそうだったので12のままでしたが、そろそろ14にアップグレードする時期のようです。
VMware 12をFedora 26で利用するにはモジュールを手動でビルドし、インストールする必要があります。
この手順でインストールできますが、4.13カーネルからは以下のパッチが必要です。
vmmon-onlyのパッチ
--- linux/hostif.c.orig 2017-06-20 11:54:38.000000000 +0900 +++ linux/hostif.c 2017-10-12 16:26:26.196886994 +0900 @@ -99,6 +99,37 @@ #include "vmmonInt.h" #include "versioned_atomic.h" +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) +# define global_zone_page_state global_page_state +#endif + +static unsigned long get_nr_slab_unreclaimable(void) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0) + return global_node_page_state(NR_SLAB_UNRECLAIMABLE); +#else + return global_page_state(NR_SLAB_UNRECLAIMABLE); +#endif +} + +static unsigned long get_nr_unevictable(void) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0) + return global_node_page_state(NR_UNEVICTABLE); +#else + return global_page_state(NR_UNEVICTABLE); +#endif +} + +static unsigned long get_nr_anon_mapped(void) +{ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0) + return global_node_page_state(NR_ANON_MAPPED); + #else + return global_page_state(NR_ANON_PAGES); + #endif +} + /* * Determine if we can use high resolution timers. */@@ -1594,16 +1625,11 @@ unsigned int reservedPages = MEMDEFAULTS_MIN_HOST_PAGES; unsigned int hugePages = (vm == NULL) ? 0 : BYTES_2_PAGES(vm->memInfo.hugePageBytes); - unsigned int lockedPages = global_page_state(NR_PAGETABLE) + - global_page_state(NR_SLAB_UNRECLAIMABLE) + - global_page_state(NR_UNEVICTABLE) + + unsigned int lockedPages = global_zone_page_state(NR_PAGETABLE) + + get_nr_slab_unreclaimable() + + get_nr_unevictable() + hugePages + reservedPages; - unsigned int anonPages = -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0) - global_page_state(NR_ANON_MAPPED); -#else - global_page_state(NR_ANON_PAGES); -#endif + unsigned int anonPages = get_nr_anon_mapped(); unsigned int swapPages = BYTES_2_PAGES(linuxState.swapSize); if (anonPages > swapPages) { @@ -3708,4 +3734,3 @@ return ret; }
vmnet-onlyのパッチ
diff -Naur vmnet-only.orig/bridge.c vmnet-only/bridge.c --- vmnet-only/bridge.c 2017-06-26 22:08:39.148034785 +1000 +++ vmnet-only/bridge.c 2017-07-16 11:37:01.325802125 +1000 @@ -636,7 +636,7 @@ unsigned long flags; int i; - atomic_inc(&clone->users); + clone = skb_get(clone); clone->dev = dev; clone->protocol = eth_type_trans(clone, dev);
参考: https://communities.vmware.com/thread/568089
Leave a Comment