VMware (简体中文) - ArchWiki

# VMware (简体中文)

相关文章

- Category:Hypervisors
- 在 VMware 中安装 Arch
- VirtualBox
- KVM
- QEMU
- Xen
- Moving an existing install into (or out of) a virtual machine

本页面或部分需要翻译，部分内容可能已经与英文文章脱节。如果您希望贡献翻译，请访问简体中文翻译组。

附注: please use the first argument of the template to provide more detailed indications.

本文是关于在 Arch 中安装 VMware，你也许想寻找的是 在 VMware 中安装 Arch Linux

注意:

- 这篇文章时针对最新的VMware正式版,即VMware Workstation Pro 和Player 12.
- 而对于旧版本,可以使用vmware-patchAUR包

## 安装

安装 依赖项:

- fuse - the `vmware-vmblock-fuse` service is favored over the `vmblock` module, which is not built anymore without disabling fuse in the kernel
- gtkmm - for the GUI
- linux-headers - 作为模块编译
- ncurses5-compat-libsAUR - needed by at least the installer

下载最新的VMware Workstation Pro或Player (或者beta版本,当可用时).

开始安装：

    # sh VMware-edition-version.release.architecture.bundle

提示: Some other useful flags:

- `--eulas-agreed` - Skip the EULAs
- `--console` - Use the console UI.
- `-I`, `--ignore-errors` - Ignore fatal errors.
- `--set-setting vmware-workstation serialNumber XXXXX-XXXXX-XXXXX-XXXXX-XXXXX` - Set the serial number during install (good for scripted installs).
- `--required` - Only ask mandatory questions (results in silent install when combined with `--eulas-agreed` and `--console`).

将`System service scripts directory`设置为`/etc/init.d` (默认值)

注意: 安装过程中会收到`"No rc*.d style init script directories"`错误。这可以安全忽略,因为Arch使用的是systemd.
提示: 从终端上(重新)构建模块，使用:

    # vmware-modconfig --console --install-all

## 配置

提示: AUR 中也包含了一个叫做 vmware-patchAUR 的软件包会自动完成本节内容(它同时支持旧版本的 VMware )。

### VMware module模块补丁和安装

注意: Due to Workstation 12 taking advantage of the mainlined kernel modules, patching the VMCI/VSOCK sources is no longer required.

VMware Workstation 12 支持内核 4.2.

### Systemd 服务

”(可选)“ 你也可以创建一个 `.service` 文件 (也可以用AUR中的vmware-systemd-servicesAUR包)，而不是直接使用 `/etc/init.d/vmware` (`start|stop|status|restart`) and `/usr/bin/vmware-usbarbitrator` 来管理服务：

    /etc/systemd/system/vmware.service

    [Unit]
    Description=VMware daemon
    Requires=vmware-usbarbitrator.service
    Before=vmware-usbarbitrator.service
    After=network.target

    [Service]
    ExecStart=/etc/init.d/vmware start
    ExecStop=/etc/init.d/vmware stop
    PIDFile=/var/lock/subsys/vmware
    RemainAfterExit=yes

    [Install]
    WantedBy=multi-user.target

    /etc/systemd/system/vmware-usbarbitrator.service

    [Unit]
    Description=VMware USB Arbitrator
    Requires=vmware.service
    After=vmware.service

    [Service]
    ExecStart=/usr/bin/vmware-usbarbitrator
    ExecStop=/usr/bin/vmware-usbarbitrator --kill
    RemainAfterExit=yes

    [Install]
    WantedBy=multi-user.target

之后您就可以在启动时enable它们.

## 启动程序

启动VMware Workstation Pro:

    $ vmware

或VMware Player (Pro):

    $ vmplayer

## 提示和技巧

### 输入Workstation Pro许可密钥

#### 从终端

    # /usr/lib/vmware/bin/vmware-vmx-debug --new-sn XXXXX-XXXXX-XXXXX-XXXXX-XXXXX

`XXXXX-XXXXX-XXXXX-XXXXX-XXXXX` 处是你的许可密钥。

Note: The `-debug` binary informs the user of an incorrect license.

#### 从 GUI

如果以上方法无效，你可以试试:

    # /usr/lib/vmware/bin/vmware-enter-serial

### 解压缩 VMware BIOS

    $ objcopy /usr/lib/vmware/bin/vmware-vmx -O binary -j bios440 --set-section-flags bios440=a bios440.rom.Z
    $ perl -e 'use Compress::Zlib; my $v; read STDIN, $v, '$(stat -c%s "./bios440.rom.Z")'; $v = uncompress($v); print $v;' < bios440.rom.Z > bios440.rom

### Extracting the installer

To view the contents of the installer `.bundle`:

    $ sh VMware-edition-version.release.architecture.bundle --extract /tmp/vmware-bundle/

#### 使用修改过的 BIOS

If and when you decide to modify the extracted BIOS you can make your virtual machine use it by moving it to `~/vmware/<Virtual machine name>`:

    $ mv bios440.rom ~/vmware/<Virtual machine name>/

然后在 `<Virtual machine name>.vmx` 文件中加入：

    ~/vmware/<Virtual machine name>/<Virtual machine name>.vmx

    bios440.filename = "bios440.rom"

### 写时复制 (CoW)

CoW comes with some advantages, but can negatively affect performance with large files that have small random writes (例如数据库文件和虚拟机镜像)：

    $ chattr +C ~/vmware/<Virtual machine name>/<Virtual machine name>.vmx

Note: From the chattr man page: "For btrfs, the `C` flag should be set only on new or empty files. If set on a file which already has data blocks, it is undefined when the blocks assigned to the file will be fully stable. If set on a directory, only new files will be affected."

### 使用 DKMS 管理模块

The Dynamic Kernel Module Support (DKMS) can be used to manage Workstation modules and to void from re-running `vmware-modconfig` each time the kernel changes. The following example uses a custom `Makefile` to compile and install the modules through `vmware-modconfig`. Afterwards they are removed from the current kernel tree.

#### 准备

首先从 Community repository 安装 dkms：

    # pacman -S dkms

然后为 `Makefile` 和 `dkms.conf` 创建源目录：

    # mkdir /usr/src/vmware-modules-11/

#### Build configuration

Fetch the files from Git or use the ones below.

##### 1) 使用 Git

    $ cd /tmp
    $ git clone git://github.com/bawaaaaah/dkms-workstation.git
    $ sed -i 's/9/11/' dkms-workstation/dkms.conf
    # cp dkms-workstation/Makefile dkms-workstation/dkms.conf /usr/src/vmware-modules-11/

##### 2) 手动安装

The `dkms.conf` describes the module names and the compilation/installation procedure. `AUTOINSTALL="yes"` tells the modules to be recompiled/installed automatically each time:

    /usr/src/vmware-modules-11/dkms.conf

    PACKAGE_NAME="vmware-modules"
    PACKAGE_VERSION="11"

    MAKE[0]="make all"
    CLEAN="make clean"

    BUILT_MODULE_NAME[0]="vmmon"
    BUILT_MODULE_LOCATION[0]="modules"

    BUILT_MODULE_NAME[1]="vmnet"
    BUILT_MODULE_LOCATION[1]="modules"

    BUILT_MODULE_NAME[2]="vmblock"
    BUILT_MODULE_LOCATION[2]="modules"

    BUILT_MODULE_NAME[3]="vmci"
    BUILT_MODULE_LOCATION[3]="modules"

    BUILT_MODULE_NAME[4]="vsock"
    BUILT_MODULE_LOCATION[4]="modules"

    DEST_MODULE_LOCATION[0]="/extra/vmware"
    DEST_MODULE_LOCATION[1]="/extra/vmware"
    DEST_MODULE_LOCATION[2]="/extra/vmware"
    DEST_MODULE_LOCATION[3]="/extra/vmware"
    DEST_MODULE_LOCATION[4]="/extra/vmware"

    AUTOINSTALL="yes"

and now the `Makefile`:

    /usr/src/vmware-modules-11/Makefile

    KERNEL := $(KERNELRELEASE)
    HEADERS := /usr/lib/modules/$(KERNEL)/build/include
    GCC := $(shell vmware-modconfig --console --get-gcc)
    DEST := /lib/modules/$(KERNEL)/vmware

    TARGETS := vmmon vmnet vmblock vmci vsock

    LOCAL_MODULES := $(addsuffix .ko, $(TARGETS))

    all: $(LOCAL_MODULES)
    	mkdir -p modules/
    	mv *.ko modules/
    	rm -rf $(DEST)
    	depmod

    $(HEADERS)/linux/version.h:
    	ln -s $(HEADERS)/generated/uapi/linux/version.h $(HEADERS)/linux/version.h

    %.ko: $(HEADERS)/linux/version.h
    	vmware-modconfig --console --build-mod -k $(KERNEL) $* $(GCC) $(HEADERS) vmware/
    	cp -f $(DEST)/$@ .

    clean: rm -rf modules/

#### 安装

The modules can then be installed with:

    # dkms install vmware-modules/11 -k $(uname -r)

### Enable 3D graphics on Intel and Optimus

Some graphics drivers are blacklisted by default, due to poor and/or unstable 3D acceleration. After enabling Accelerate 3D graphics, the log may show something like:

    Disabling 3D on this host due to presence of Mesa DRI driver.  Set mks.gl.allowBlacklistedDrivers = TRUE to override.

This means the following:

    ~/.vmware/preferences

    mks.gl.allowBlacklistedDrivers = TRUE

## 疑难解答

### /dev/vmmon not found

完整的错误是:

    Could not open /dev/vmmon: No such file or directory.
    Please make sure that the kernel module `vmmon' is loaded.

这意味着未加载`vmmon`模块.参见#Systemd 服务章节

### Kernel headers for version 4.x-xxxx were not found. If you installed them[...]

安装 linux-headers。

Note: 更新内核和头文件会需要你启动新的内核以匹配头文件的版本。这是一个相对常见的错误。

### 无法识别 USB 设备

提示: 可以通过 vmware-patchAUR 解决。

如果不使用systemd service来处理服务,you need to manually start the `vmware-usbarbitrator` binary as root each time.

启动：

    # vmware-usbarbitrator

停止:

    # vmware-usbarbitrator --kill

### The installer fails to start

If you just get back to the prompt when opening the `.bundle`, then you probably have a deprecated or broken version of the VMware installer and you should remove it (you may also refer to the uninstallation section of this article):

    # rm -r /etc/vmware-installer

### 无法为Guests下载VMware Tools

If after #Preventing crashes and freezes when checking for updates you are still unable to download the VMware Tools ISOs, you may either try running `vmware` or `vmplayer` as root, or downloading them directly from the VMware repository.

Navigate to: "application name / version / build ID / linux / packages/" and download the appropriate Tools.

Extract with:

    $ tar -xvf vmware-tools-name-version-buildID.x86_64.component.tar

And install using the VMware installer:

    # vmware-installer --install-component=/path/vmware-tools-name-version-buildID.x86_64.component

### Incorrect login/password when trying to access VMware remotely

VMware Workstation 9 provides the possibility to remotely manage Shared VMs through the `vmware-workstation-server` service. However, this will fail with the error `"incorrect username/password"` due to incorrect PAM configuration of the `vmware-authd` service. To fix it, edit `/etc/pam.d/vmware-authd` like this:

    /etc/pam.d/vmware-authd

    #%PAM-1.0
    auth     required       pam_unix.so
    account  required       pam_unix.so
    password required       pam_permit.so
    session  required       pam_unix.so

and restart VMware services with:

    # systemctl restart vmware

Now you can connect to the server with the credentials provided during the installation.

Note: libxslt may be required for starting virtual machines.

### Issues with ALSA output

To fix sound quality issues or enabling proper HD audio output, first run:

    $ aplay -L

If interested in playing 5.1 surround sound from the guest, look for `surround51:CARD=vendor_name,DEV=num`, if experiencing quality issues, look for `front:CARD=vendor_name,DEV=num`. Finally put the name in the `.vmx`:

    ~/vmware/Virtual_machine_name/Virtual_machine_name.vmx

    sound.fileName="surround51:CARD=Live,DEV=0"
    sound.autodetect="FALSE"

OSS emulation should also be disabled.

### Kernel-based Virtual Machine (KVM) is running

To disable `KVM` on boot, you can use something like:

    /etc/modprobe.d/vmware.conf

    blacklist kvm
    blacklist kvm-amd   # For AMD CPUs
    blacklist kvm-intel # For Intel CPUs

### Segmentation fault at startup due to old Intel microcode

Old Intel microcode may result in the following kind of segmentation fault at startup:

    /usr/bin/vmware: line 31: 4941 Segmentation fault "$BINDIR"/vmware-modconfig --appname="VMware Workstation" --icon="vmware-workstation"

Install intel-ucode and make `/boot/intel-ucode.img` to be loaded by the bootloader.

See Microcode for more information.

### Guests have incorrect system clocks or are unable to boot: "[...]timeTracker_user.c:234 bugNr=148722"

This is due to incomplete support of power management features (Intel SpeedStep and AMD PowerNow!/Cool'n'Quiet) in VMware Linux that vary the CPU frequency. In March 2012, with the release of linux 3.3-1 the maximum frequency Performance governor was replaced with the dynamic Ondemand. When the host CPU frequency changes, the Guest system clock runs too quickly or too slowly, but may also render the whole Guest unbootable.

To prevent this, the maximum host CPU frequency can be specified, and Time Stamp Counter (TSC) disabled, in the global configuration:

    /etc/vmware/config

    host.cpukHz = "X"  # The maximum speed in KHz, e.g. 3GHz is "3000000".
    host.noTSC = "TRUE" # Keep the Guest system clock accurate even when
    ptsc.noTSC = "TRUE" # the time stamp counter (TSC) is slow.

Tip: To periodically correct the time (once per minute), in the Options tab of VMware Tools, enable: "Time synchronization between the virtual machine and the host operating system".

### Guests系统启动后网络不可用

这可能是 `vmnet` 模块没有加载 [1]。 又见#systemd services 服务自动加载。

## 卸载

To uninstall VMware you need the product name (`vmware-workstation` 或是 `vmware-player`)。列出所有的产品：

    # vmware-installer -l

and uninstall with (`--required` skips the confirmation):

    # vmware-installer -u product --required

Tip: Use `--console` for the console UI.

记得要disable 和删除`.service`文件:

    # rm /etc/systemd/system/vmware.service
    # rm /etc/systemd/system/vmware-usbarbitrator.service

你可能还想看看剩余模块在`/usr/lib/modules/kernel_name/misc/`模块目录.

Category:

- Virtualization (简体中文)