Linux-VMware工作站物理内存不足的错误及解决方法

VMware是一个基于Linux的虚拟化系统,提供了丰富的功能。VMware受Windows、MacOSX、Linux等不同平台的支持。由于WMware是一个封闭源代码产品,我们需要在Linux系统上进行一些手动操作。如果我们使用的是Ubuntu、Fedora、Debian、Mint和类似的最新系统,而它们自己的内核比4.8版本更新,那么VMware就不能相应地工作。在本教程中,我们将研究这个问题以及如何解决它。

null

没有足够的物理内存可用错误

此错误与检查Linux内核版本的源代码有关。VMware检查内核4.8及更高版本。但据我们所知,目前流行发行版使用的Linux内核比4.8版本更新。这是错误的截图。

Not Enough Physical Memory Is Available Error
没有足够的物理内存可用错误

解决问题

我们需要修改问题的源代码。源代码位于名为 vmmon.tar . 此文件将被卸载,并在内核更新或安装过程中编译。

$ cd /usr/lib/vmware/modules/source$ tar xf vmmon.tar$ cd vmmon-only/linux

然后我们将打开名为 hostif.c . 我们需要根权限来保存对文件的更改。这样我们就可以开门了 hostif.c 具有 sudo 就像下面一样。

$ sudo nano hostif.c

在后面添加以下行 #include "versioned_atomic.h" 线路。

#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)#   define global_zone_page_state global_page_state#endifstatic 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}

现在第二个变化是替换下面的行

unsigned int lockedPages = global_page_state(NR_PAGETABLE) +                              global_page_state(NR_SLAB_UNRECLAIMABLE) +                              global_page_state(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 lockedPages = global_zone_page_state(NR_PAGETABLE) +                              get_nr_slab_unreclaimable() +                              get_nr_unevictable() +                              hugePages + reservedPages;unsigned int anonPages = get_nr_anon_mapped();

使用以下命令编译和加载更改。

$ cd ../..$ tar cf vmmon.tar vmmon-only$ rm -rf vmmon-only # cleanup$ sudo vmware-modconfig --console --install-all
Fix The Problem
解决问题

现在,我们可以毫无问题或错误地使用VMware。

相关文章: Linux和Windows的FTP命令列表及示例

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享