Configurando VMWare-Tools en Xorg 7.0

13/11/2006

VMWare y Xorg 7.0
Ubuntu 6.10 viene por defecto con Xorg 7.0 así que si lo instalas en una máquina virtual de VMWare no podrás configurar correctamente las VMWare-Tools del modo habitual ya que el script de configuración (al menos para la versión 5.5.1 del VMWare-Workstation) aún no soporta dicha versión de las Xorg.

Para poder realizar la instalación satisfactoriamente debes hacer lo siguiente:

  • Arranca la instalación del modo habitual:
    sudo ./vmware-install.pl
  • Cuando te pregunte:

    Before running VMware Tools for the first time, you need to configure it by
    invoking the following command: “/usr/bin/vmware-config-tools.pl”. Do you want
    this program to invoke the command for you now? [yes]

    Responde: no

  • Descargate un parche para el vmware-config-tools.pl de http://community.webathome.org/vmware-config-tools-patch.txt

    Por si desaparece alguna vez, incluyo aquí el contenido completo:

    — vmware-config-tools.pl.orig 2006-10-27 01:30:36.000000000 +0200
    +++ vmware-config-tools.pl 2006-10-27 01:31:36.000000000 +0200
    @@ -587,6 +587,10 @@
    my $gXVideoDriverFile = ”;
    my $gIs64BitX = 0;

    +# The location of the modules dir has changed in X.org 7
    +my $cXModulesDir7 = ‘/usr/lib/xorg/modules’;
    +my $cX64ModulesDir7 = ‘/usr/lib64/xorg/modules’;
    +
    # Load the installer database
    sub db_load {
    undef %gDBAnswer;
    @@ -3874,6 +3878,10 @@
    return ‘/usr/X11R6/bin’;
    }

    +sub xserver7 {
    + return ‘/usr/bin/X11/Xorg’;
    +}
    +
    sub xserver6 {
    return xserver_bin() . ‘/Xorg’;
    }
    @@ -4029,6 +4037,8 @@
    $x_server_file = xserver4();
    } elsif ($x_version == 6) {
    $x_server_file = xserver6();
    + } elsif ($x_version == 7) {
    + $x_server_file = xserver7();
    }

    $x_server_file_name = internal_basename($x_server_file);
    @@ -4075,6 +4085,86 @@
    set_uid_X_server($x_server_file);
    }

    +sub xorg_7 {
    + my $xconfig_path = ‘/etc/X11’;
    + my $xconfig_file_name = ‘xorg.conf’;
    + my $xversion = 7;
    + my $xversionAll = ”;
    + my $xserver_link = ”;
    + my $major;
    + my $minor;
    + my $sub;
    +
    + $xversionAll = direct_command(shell_string(xserver7()) . ‘ -version 2>&1’) =~
    + /X Protocol Version 11.* Release (\d+\.\d+)/ ? $1 : ‘0.0.0’;
    +
    + if (defined $ENV{‘XORGCONFIG’} && file_name_exist(‘/etc/X11/’ .
    + $ENV{‘XORGCONFIG’})) {
    + $xconfig_path = ‘/etc/X11’;
    + $xconfig_file_name = $ENV{‘XORGCONFIG’};
    + } elsif (defined $ENV{‘XORGCONFIG’} &&
    + file_name_exist(‘/usr/X11R6/etc/X11/’ . $ENV{‘XORGCONFIG’})) {
    + $xconfig_path = ‘/usr/X11R6/etc/X11’;
    + $xconfig_file_name = $ENV{‘XORGCONFIG’};
    + } elsif (file_name_exist(‘/etc/X11/xorg.conf-4’)) {
    + $xconfig_path = ‘/etc/X11’;
    + $xconfig_file_name = ‘xorg.conf-4’;
    + } elsif (file_name_exist(‘/etc/X11/xorg.conf’)) {
    + $xconfig_path = ‘/etc/X11’;
    + $xconfig_file_name = ‘xorg.conf’;
    + } elsif (file_name_exist(‘/etc/xorg.conf’)) {
    + $xconfig_path = ‘/etc’;
    + $xconfig_file_name = ‘xorg.conf’;
    + } elsif (file_name_exist(‘/usr/X11R6/etc/X11/xorg.conf-4’)) {
    + $xconfig_path = ‘/usr/X11R6/etc/X11’;
    + $xconfig_file_name = ‘xorg.conf-4’;
    + } elsif (file_name_exist(‘/usr/X11R6/etc/X11/xorg.conf’)) {
    + $xconfig_path = ‘/usr/X11R6/etc/X11’;
    + $xconfig_file_name = ‘xorg.conf’;
    + } elsif (file_name_exist(‘/usr/X11R6/lib/X11/xorg.conf-4’)) {
    + $xconfig_path = ‘/usr/X11R6/lib/X11’;
    + $xconfig_file_name = ‘xorg.conf-4’;
    + } elsif (file_name_exist(‘/usr/X11R6/lib/X11/xorg.conf’)) {
    + $xconfig_path = ‘/usr/X11R6/lib/X11’;
    + $xconfig_file_name = ‘xorg.conf’;
    + }
    +
    + print wrap(“\n\n” . ‘Detected X.org version ‘ . $xversionAll . ‘.’
    + . “\n\n”, 0);
    +
    + ($major, $minor, $sub) = split_X_version($xversionAll);
    +
    + # If there is an existing driver, replace it by ours.
    + if ($major == 7) {
    +
    + backup_file_to_restore($gXVideoDriverFile, ‘OLD_X4_DRV’);
    + if (file_name_exist($gXVideoDriverFile)) {
    + unlink $gXVideoDriverFile;
    + }
    +
    + # Install the drivers.
    + my %p;
    + undef %p;
    + if ($minor == 0) {
    + # This is the best driver we can install for X.org 7.0.0
    + install_file(db_get_answer(‘LIBDIR’) . ‘/configurator/XOrg/6.8.x’ .
    + ($gIs64BitX ? ‘_64’ : ”) . ‘/vmware_drv.o’,
    + $gXVideoDriverFile, \%p, 1);
    + install_file(db_get_answer(‘LIBDIR’) . ‘/configurator/XOrg/6.8.x’ .
    + ($gIs64BitX ? ‘_64’ : ”) . ‘/vmmouse_drv.o’,
    + $gXMouseDriverFile, \%p, 1);
    + } else {
    + print wrap(“\n\n” . ‘No mouse driver for X.org version: ‘ . $xversionAll . ‘.’
    + . “\n\n”, 0);
    + }
    + fix_X_link(‘7’);
    + } else {
    + error (‘Problem extracting verion of X.org’ . “\n\n”);
    + }
    + return ($xversion, xconfig_file_abs_path($xconfig_path, $xconfig_file_name),
    + $xversionAll);
    +}
    +
    sub xorg_6 {
    my $xconfig_path = ‘/etc/X11’;
    my $xconfig_file_name = ‘xorg.conf’;
    @@ -4934,7 +5024,23 @@
    my $xconfig_backup = ”;
    my $createNewXConf = 0;

    – if (file_name_exist(xserver6())) {
    + if (file_name_exist(xserver7())) {
    + if (is64BitElf(xserver7())) {
    + $gIs64BitX = 1;
    + # 64-bit FreeBSD puts it’s 64-bit X modules in lib not lib64
    + if (vmware_product() ne ‘tools-for-freebsd’) {
    + $gXMouseDriverFile = “$cX64ModulesDir7/input/vmmouse_drv.o”;
    + $gXVideoDriverFile = “$cX64ModulesDir7/drivers/vmware_drv.o”;
    + } else {
    + $gXMouseDriverFile = “$cXModulesDir7/input/vmmouse_drv.o”;
    + $gXVideoDriverFile = “$cXModulesDir7/drivers/vmware_drv.o”;
    + }
    + } else {
    + $gXMouseDriverFile = “$cXModulesDir7/input/vmmouse_drv.o”;
    + $gXVideoDriverFile = “$cXModulesDir7/drivers/vmware_drv.o”;
    + }
    + ($xversion, $xconfig_file, $xversionAll) = xorg_7();
    + } elsif (file_name_exist(xserver6())) {
    if (is64BitElf(xserver6())) {
    $gIs64BitX = 1;
    # 64-bit FreeBSD puts it’s 64-bit X modules in lib not lib64

  • Aplica el parche recien descargado:
    sudo patch /usr/bin/vmware-config-tools.pl /tmp/vmware-config-tools-patch.txt
  • Configura las vmware-tools:

    sudo vmware-config-tools.pl

NOTA: Parece ser que además, las VMWare-Tools dejan mal configurado el ratón y a partir de su instalación y configuración deja de funcionar la rueda de scroll del mismo. La solución es muy sencilla:

  • Edita el archivo /etc/X11/xorg.conf
  • Busca la sección Input Device, Configured Mouse.
  • Para la opción:

    Option Protocol “ps/2”

  • Sustitúyela por:

    Option Protocol “IMPS/2”

  • Reinicia las X (puedes usar CTRL + ALT + Backspace)

Vía

6 Responses to “Configurando VMWare-Tools en Xorg 7.0”

  1. avo Says:

    Ha funcionado genial

    Gracias!

  2. turing Says:

    Buenas,
    estoy intentado hacer esto y me encuentro con problemas.
    Al intentar aplicar el parche me sale:
    Hunk #1 succeeded at 96 with fuzz 2 (offset -491 lines).
    Hunk #2 succeeded at 3108 with fuzz 1 (offset -770 lines).
    Hunk #3 FAILED at 3267.
    Hunk #4 succeeded at 3557 with fuzz 1 (offset -528 lines).
    Hunk #5 FAILED at 4496.
    2 out of 5 hunks FAILED — saving rejects to file /usr/bin/vmware-config-tools.pl.rej

    El contenido de este archivo vmware-config-tools.pl.rej es:

    ***************
    *** 3259,3264 ****
    $x_server_file = xserver4();
    } elsif ($x_version == 6) {
    $x_server_file = xserver6();
    }

    $x_server_file_name = internal_basename($x_server_file);
    — 3267,3274 —-
    $x_server_file = xserver4();
    } elsif ($x_version == 6) {
    $x_server_file = xserver6();
    + } elsif ($x_version == 7) {
    + $x_server_file = xserver7();
    }

    $x_server_file_name = internal_basename($x_server_file);
    ***************
    *** 4406,4412 ****
    my $xconfig_backup = ”;
    my $createNewXConf = 0;

    – if (file_name_exist(xserver6())) {
    if (is64BitElf(xserver6())) {
    $gIs64BitX = 1;
    # 64-bit FreeBSD puts it’s 64-bit X modules in lib not lib64
    — 4496,4518 —-
    my $xconfig_backup = ”;
    my $createNewXConf = 0;

    + if (file_name_exist(xserver7())) {
    + if (is64BitElf(xserver7())) {
    + $gIs64BitX = 1;
    + # 64-bit FreeBSD puts it’s 64-bit X modules in lib not lib64
    + if (vmware_product() ne ‘tools-for-freebsd’) {
    + $gXMouseDriverFile = “$cX64ModulesDir7/input/vmmouse_drv.o”;
    + $gXVideoDriverFile = “$cX64ModulesDir7/drivers/vmware_drv.o”;
    + } else {
    + $gXMouseDriverFile = “$cXModulesDir7/input/vmmouse_drv.o”;
    + $gXVideoDriverFile = “$cXModulesDir7/drivers/vmware_drv.o”;
    + }
    + } else {
    + $gXMouseDriverFile = “$cXModulesDir7/input/vmmouse_drv.o”;
    + $gXVideoDriverFile = “$cXModulesDir7/drivers/vmware_drv.o”;
    + }
    + ($xversion, $xconfig_file, $xversionAll) = xorg_7();
    + } elsif (file_name_exist(xserver6())) {
    if (is64BitElf(xserver6())) {
    $gIs64BitX = 1;
    # 64-bit FreeBSD puts it’s 64-bit X modules in lib not lib64

    ¿alguna idea?
    Muchas gracias

  3. Ralk Says:

    Hola,

    a mi me ha pasado algo parecido (solo me ha rechazado el hunk #5). Supongo que la versión del vmware-config-tools.pl no es exactamente la misma que la del origen del patch.

    Yo uso VMWare 5.0.0 build-13124. Al final hice los cambios a mano y funcionó, pero no me hace el grab/ungrab automatico.

    Si tienes la misma versión y te interesa el fichero dimelo y te lo envio.

    Saludos,
    Ralk.

  4. Ralk Says:

    Hola,

    corregido lo del auto-grab: no apliqué bien el cambio que instala el fichero /vmware-tools-distrib/lib/configurator/XOrg/6.8.x/vmmouse_drv.o en /usr/lib/xorg/modules/drivers/.

    Ademas hay que modificar el fichero /etc/X11/xorg.conf en la línea que dice Driver “mouse” por Driver “vmmouse”

    Saludos,
    Raúl.

  5. DarkRay Says:

    no funciona en la version VMWare 5.5.3, y el archivo xorg.conf no me deja editarlo, a la hora de guardar me dice que no tengo permisos, no se como entrar en modo root

  6. Antonio Says:

    Intenta: sudo

    Ejemplo: sudo vi xorg.conf


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: