Difference between revisions of "VMware (简体中文)"

From ArchWiki
Jump to navigation Jump to search
m
Line 155: Line 155:
  
 
== 主系统和客户系统之间网络速度慢的问题 ==
 
== 主系统和客户系统之间网络速度慢的问题 ==
"那些被错误校验的、尺寸过大的包是“TCP Segmentation Offload”包。 用 ''''ethtool -k eth0 tso off'''' 来在eth0上(或者其它你想进行桥接的网络接口)禁止TSO。目前,vmnet还没有实现TSO。另外,同时使用TSO和桥接网络是愚蠢的行为。and in addition to that it is silly to use TSO together with bridged networking as vmnet will have to split such packet anyway to pass it to the guest, so splitting will be done anyway, and in addition to it kernel will have to prepare metadata about TCP stream for hardware, so you'll probably get worse performance with TSO enabled than with disabled when you'll have some guest running."
+
"那些被错误校验的、尺寸过大的包是“TCP Segmentation Offload”包。 用 ''''ethtool -k eth0 tso off'''' 来在eth0上(或者其它你想进行桥接的网络接口)禁止TSO。目前,vmnet还没有实现TSO。另外,同时使用TSO和桥接网络是愚蠢的行为。and in addition to that it is silly to use TSO together with bridged networking as vmnet will have to split such packet anyway to pass it to the guest, so splitting will be done anyway, and in addition to it kernel will have to prepare metadata about TCP stream for hardware, 所以开了TSO后的性能很可能还不如不开。
  
 
'''注意''' ''ethtool在extra仓库里''
 
'''注意''' ''ethtool在extra仓库里''

Revision as of 10:08, 29 February 2008


Template:I18n links start Template:I18n entry Template:I18n entry Template:I18n links end

VMware 可以安装在 ArchLinux 上,但是过程并不像其他发行版那么直接。

安装

你可以使用 AUR 或者手动安装(从VMware.com下载VMware Server)。本文介绍手动安装VMWare Server的过程,首先假设你的Arch系统版本为Voodoo或以上,并且内核版本大于2.6.20(32bit)。

需求

  • 根用户权限。'sudo' 或者 'su'。在这里我使用'sudo'。
  • 安装了Xinetd并且正在运行。(译者注:不一定需要)
  • 安装了libxtst、libxt和libxrender等X-libraries库。
  • VMware server tarball;目前最高版本为1.0.4 build 56528。
  • 如果你的内核为2.6.24,你需要patch (vmware-any-any-update115a.tgz)

安装过程

  • 执行 sudo mkdir -p /etc/rc.d/vmware.d/rc{0,1,2,3,4,5,6}.d ,用以创建VMWare运行级目录。
  • 执行 sudo ln -s /bin/lsmod /sbin/ ,用以创建lsmod的软链接。
  • 将VMWare Server的压缩包解压到某处,比如/tmp/.
  • 执行 cd /tmp/vmware-server-distrib;sudo ./vmware-install.pl。 这里,我将VMWare安装在 /home/vmware/bin 下。
  • 当问到 rc0.drc6.d 目录在什么位置时,输入这个: /etc/rc.d/vmware.d
  • 当问到init文件的目录在哪里时,使用 /etc/rc.d
  • 当安装程序说是否进行第一次的配置时,直接*退出*
  • 将下载到的vmware-any-any补丁释放到某目录,例如/tmp/.
  • 执行 cd /tmp/vmware-any-any-update*REV*;sudo ./runme.pl。 这将给VMWare内核模块打补丁,以支持新的内核。
  • 执行 cd /home/vmware/bin;sudo ./vmware-config.pl ,开始编译VMWare内核模块。

运行

第一次运行VMWare Server的时候,有可能会跳出一个提示,说“Unable to power virtual machine(无法开启虚拟机)”。关闭VMWare Server然后执行 /etc/rc.d/vmware stop;wait;/etc/rc.d/xinetd restart.

重新运行 sudo /home/vmware/bin/vmware-config.pl 。如果还是不行,重启电脑后继续此过程。

/etc/rc.d目录下有一个vmware启动脚本。你可以将其加入到守护进程中。我个人并不这么做,但是如果你想在不启动VMWare的情况下使用其网络功能,就需要这样做。 另外,在vmware启动前,此脚本必须启动。

关于在重启后VMWare无法正常运行的问题:要解决它,打开/etc/rc.d/vmware,找到下面字段:

case "$1" in
  start)

然后将

rm /etc/vmware/not_configured

紧接着放在其下一行。

要启动vmware,你只要在终端窗口中执行vmware,或者创建一个快捷方式。

注意事项:

不要动/etc/rc.d/vmware.d目录,因为每次执行vmware-config.pl时都需要它。

记住,如果内核被改动了或者升级了,你需要重新运行vmware-config.pl一遍。

2.6内核和udev

除了上述步骤,还需要:

1. 修改udev配置 修改 /etc/udev/rules.d/00-myrules.rules ,添加以下两行:

# tty devices
KERNEL="tty[[0-9]]*", NAME="vc/%n", SYMLINK="%k"

# floppy devices
KERNEL="fd[[0-9]]*", NAME="floppy/%n" , SYMLINK="fd%n"

2. 启动/停止脚本

脚本会进行设备管理并启动vmware,同时负责停止vmware并且移除dev目录下的设备入口。可以将其取名为 mkvmdev,然后将它chmod 755 ,并放入/etc/rc.d

#!/bin/sh

. /etc/rc.conf
. /etc/rc.d/functions

case "$1" in
    start)
    stat_busy "Creating /dev entries and starting VMware"
    for i in `seq 0 9`; do
        mknod /dev/vmnet$i c 119 $i
        chmod 0600 /dev/vmnet$i
    done
    for i in `seq 0 3`; do
        mknod /dev/parport$i c 99 $i
        chmod 0600 /dev/parport$i
    done
    mknod /dev/vmmon c 10 165
    chmod 0660 /dev/vmmon
    /etc/rc.d/vmware start
    ;;

    stop)
    stat_busy "Stopping VMware and removing /dev entries"
    /etc/rc.d/vmware stop
    rm /dev/vmmon
    for i in `seq 0 3`; do
        rm /dev/parport$i
    done
    for i in `seq 0 9`; do
        rm /dev/vmnet$i
    done
    ;;

    restart)
    $0 stop
    $0 start
    ;;

    *)
    echo "usage: $0 {start|stop|restart}"
esac
exit 0

3. 修改 /etc/rc.conf. (注意:这一步是可选的!另外可参考上面“运行”章节中的相关内容)

mkvmdev加入到你的rc.conf文件中的DEAMONS中,同时记得从同样位置移除vmware。如果你愿意,你也可以将mkvmdevrc.conf文件中删除,而只留下初始的vmware

VMWare和2.6.20内核的模块编译问题

下面是在2.6.20内核下编译vmware模块的一个解决方案:

cd /usr/lib/vmware/modules/source/
sudo tar -xvf vmmon.tar
cd vmmon-only
sudo vi include/compat_kernel.h

找到这句:

#define __NR_compat_exit __NR_exit
static inline _syscall1(int, compat_exit, int, exit_code);

然后将“static inline .....”这行改为:

int compat_exit(int exit_code);

接着重新将vmmon-only目录打包:

cd .. 
tar -cf vmmon.tar vmmon-only

最后,执行 vmware-config.pl

VMWare在2.6.16内核下的模块编译问题

问题:内核版本2.6.16-x - vmware 或 vmwareplayer 提示kernel-headers不正确。
解决:你需要vmware-any-any-update补丁。 mirror here or here.
只需要将压缩包解压缩,然后以根用户权限运行 ./runme.pl 就行了。

VMWare和2.6.22内核

也许还不能完全正常工作(译者注:已经可以正常工作,只要下载最新的vmware-any-any补丁就行了,这类问题的解决都是依靠这个补丁的不断升级)。从http://knihovny.cvut.cz/ftp/pub/vmware/vmware-any-any-update112.tar.gz 下载补丁,用http://npw.net/~phbaer/vmnet.tar替换vmnet.tar,然后重新安装vmware。注意:这是个丑陋的破解,请不要将其用于生产环境中。一些客户系统可能会因此崩溃或者出现网络问题。不要说我没警告过你

主系统和客户系统之间网络速度慢的问题

"那些被错误校验的、尺寸过大的包是“TCP Segmentation Offload”包。 用 'ethtool -k eth0 tso off' 来在eth0上(或者其它你想进行桥接的网络接口)禁止TSO。目前,vmnet还没有实现TSO。另外,同时使用TSO和桥接网络是愚蠢的行为。and in addition to that it is silly to use TSO together with bridged networking as vmnet will have to split such packet anyway to pass it to the guest, so splitting will be done anyway, and in addition to it kernel will have to prepare metadata about TCP stream for hardware, 所以开了TSO后的性能很可能还不如不开。

注意 ethtool在extra仓库里

Samba 事项

在vmware中的客户系统无法看到在Linux主系统中的samba共享。要解决这个问题,修改/etc/samba/smb.conf并在[global]下面添加一些参数。推荐下面这些:
workgroup = YOUR_WORKGROUP
netbios name = YOUR_SERVER_NAME
encrypt passwords = yes
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=8192 SO_SNDBUF=8192
interfaces = eth0 vmnet1 vmnet8
sysv shm key=/dev/vmnet1
bind interfaces only = true

远程连接

如果你需要远程控制虚拟机,那么在 /etc/hosts.allow 下加入以下一行:

vmware-authd: ALL

这将使 xinetd 允许所有对vmware的远程连接。