sábado, 9 de julio de 2016

Distribuciones GNU/Linux con Interfaces llamativas


Y bueno, quiero migrar a GNU/Linux, pero ¿Cuál distro es para mi? ¿Cuál escritorio es el mejor?, preguntas como esas, nos rondan en la cabeza cuando se intenta migrar a Linux, o peor aún, a veces pensamos que GNU/Linux tiene aún interfaces rústica, ventanas horribles, un sólo tema de iconos, etc.

Si embargo, eso no es así, si algo ha cambiado completamente en GNU/Linuz, es que ahora hay distros para todos los gustos, y no sólo eso, sino que además, es posibles adaptarlas, cambiarlas y crear nuestros propios temas a como nos de la gana, así de simple.

Así, me tomé la molestia de recopilar algunas de las distros más estéticamente "bonitas" en cuestión de interfaces gráficas.

NOTA: No están en un orden específico, tampoco voy a profundizar en cada una de ellas, antes de instalarla como tal, les recomiendo probarlas en VirtualBox.

1.- Zorin OS - http://zorinos.com/
Zorin OS es un sistema operativo multi-funcional diseñadao específicamente para los recién llegados a Linux. Está basado en Ubuntu Linux. Una de las características más destacadas, es que todo el esquema de ventanas, nombres y ubicación de elementos es realmente similar a Windows 7, por lo tanto, si dominaste Winwdos 7, este sin duda podría ser una distro para ti.

Capturas:






SolusOS fue una distribución Linux destinada al usuario principiante, estaba basada en la versión estable de Debian GNU/Linux, distribuida como archivos de imagen que pueden ser corridos desde un DVD, memoria USB e instalados en un disco duro.

Capturas:






3.- ApricityOS - https://apricityos.com/
Apricity OS, es un sistema operativo moderno, intuitivo para la nube. Es relativamente fácil de usar, fácil acceso, y muy bien diseñado. Tiene incorporado software con el fin de minimizar el riesgo de seguridad tanto como sea posible.
Es basada en ArchLinux, por lo tanto muy poderosa, no hay necesidad de reinstalar todo en cada nueva versión.

Capturas:



Deepin OS destaca principalmente por estar orientada al usuario final. Esta excelente distribución está pensada para que el usuario no tenga que tocar la terminal en ningún momento y pueda gestionar su sistema de forma fácil.
Está basada en Debian, trae Google Chrome y WPS Office como programas por defecto, tiene su propio Asistente de Aplicaciones, panel interactivo desde el que se puede acceder a la configuración y opciones de personalización de dicha distribución.

Capturas:






5.- Chakra OS - https://chakraos.org/
Chakra es una distribución GNU / Linux con un énfasis en las tecnologías de KDE y Qt que se centra en la simplicidad de un punto de vista técnico y el software libre.
Basada en ArchLinux también.

Capturas:






OS Haze es una distribución de Linux que fue diseñado para ser fácil de usar, rápido, hermoso y ofrecer la mejor calidad 'Out-Of-The-Box' experiencia. Basada en Debian y tiene una gran interfaz de usuario increíblemente apuesto. El escritorio es innovador para desafío.

Capturas:




7.- EndLess OS - https://endlessm.com/es/
Es un sistema operativo que viene con todo lo que necesitas, hay una versión Live y otra Completa. Es una distro completamente nueva, centrado en el usuario final, para aquellos que no sean desarrolladores o semiexpertos en Linux.

Captura:





8.- Elementary OS - https://elementary.io/
Esta distro está pensada para el usuario novato. Está basada en Ubuntu y es muy atractiva visualmente, lo que hace que el usuario principiante se sienta muy cómodo en esta distribución. Es fácil de utilizar y viene muy completa, aunque no tanto como Ubuntu. De esta distro podemos destacar: Fácil de instalar y cuenta con modo Live, Interfaz gráfica muy agradable, Basada en Ubuntu LTS, Estable y Compatible con la mayoría del hardware.

Captura:




Y No podía faltar, mi SO Favorito Fedora https://getfedora.org/en/workstation/, con Escritorio Gnome: Fedora es proyecto desarrollado por Red Hat. No es nada complicado de utilizar, viene con paquetes preinstalados, el resto se puede ir agregando, existe amplia comunidad para soporte o solución de problemas. Ideal para desarrolladores y tester de programas.

Capturas:





~~~~ Gracias por visitar ~~~

Instalar y desinstalar VMWare Workstation Pro 12.1.1 en Fedora 24

Imagen obtenidad: url

VMware Workstation

Es un software para virtualización de sistemas operativos de una manera más avanzada, o al menos eso es lo que describe en su página oficial, algo que no dudo. Es más o menos parecido a VirtualBox. Si me preguntaran cuál es mejor, diría que no puedo contestar, ya que cad auno tiene lo suyo, sin embargo, VMware, es más potente cuando de redes de SO virtuales se trata, y VirtualBox es más fácil de utilizar por usuarios no expertos.

Virtualización de PC avanzada

VMware Workstation transforma la forma en que los profesionales técnicos desarrollan, prueban e implementan el software o hacen demostraciones de las aplicaciones, porque permite ejecutar varios sistemas operativos basados en x86 al mismo tiempo en el mismo PC. VMware Workstation se sustenta en 15 años de excelencia en virtualización y ha ganado más de 50 premios del sector. Eleva la virtualización de escritorios al próximo nivel porque ofrece a los usuarios una compatibilidad sin parangón con gran diversidad de sistemas operativos, una experiencia de usuario plena y un rendimiento magnífico.

Virtualización de escritorio de última generación para Windows y Linux

Con VMware Workstation Pro, se aprovecha el hardware más reciente para replicar entornos de servidor, de escritorio y de tableta en una máquina virtual. Ejecute aplicaciones en varios sistemas operativos, incluidos Linux y Windows, entre otros, al mismo tiempo y en la misma PC sin tener que reiniciar su equipo. VMware Workstation Pro facilita muchísimo la tarea de evaluar nuevos sistemas operativos como Windows 10 y probar aplicaciones y parches de software, y arquitecturas de referencia en un entorno aislado y seguro. Ningún otro software de virtualización de escritorio brinda el rendimiento, la confiabilidad y las funciones de avanzada de Workstation Pro. 

Creación de máquinas virtuales potentes


Workstation Pro maximiza los recursos de su computadora mediante la capacidad de asignar múltiples núcleos de procesador o gigabytes de memoria principal o de memoria gráfica a cada máquina virtual para ejecutar las aplicaciones más exigentes en un entorno virtualizado. Con Workstation Pro, también se pueden ejecutar anfitriones virtuales ESXi y dispositivos de vSphere, lo que permite crear un centro de datos definido por el software completo en su escritorio.

Virtualización de escritorio de última generación para Windows y Linux

Con VMware Workstation Pro, se aprovecha el hardware más reciente para replicar entornos de servidor, de escritorio y de tableta en una máquina virtual. Ejecute aplicaciones en varios sistemas operativos, incluidos Linux y Windows, entre otros, al mismo tiempo y en la misma PC sin tener que reiniciar su equipo. VMware Workstation Pro facilita muchísimo la tarea de evaluar nuevos sistemas operativos como Windows 10 y probar aplicaciones y parches de software, y arquitecturas de referencia en un entorno aislado y seguro. Ningún otro software de virtualización de escritorio brinda el rendimiento, la confiabilidad y las funciones de avanzada de Workstation Pro.
- See more at: http://www.vmware.com/latam/products/workstation/#sthash.7saKw2Pc.dpuf

Virtualización de escritorio de última generación para Windows y Linux

Con VMware Workstation Pro, se aprovecha el hardware más reciente para replicar entornos de servidor, de escritorio y de tableta en una máquina virtual. Ejecute aplicaciones en varios sistemas operativos, incluidos Linux y Windows, entre otros, al mismo tiempo y en la misma PC sin tener que reiniciar su equipo. VMware Workstation Pro facilita muchísimo la tarea de evaluar nuevos sistemas operativos como Windows 10 y probar aplicaciones y parches de software, y arquitecturas de referencia en un entorno aislado y seguro. Ningún otro software de virtualización de escritorio brinda el rendimiento, la confiabilidad y las funciones de avanzada de Workstation Pro.
- See more at: http://www.vmware.com/latam/products/workstation/#sthash.7saKw2Pc.dpuf

Virtualización de escritorio de última generación para Windows y Linux

Con VMware Workstation Pro, se aprovecha el hardware más reciente para replicar entornos de servidor, de escritorio y de tableta en una máquina virtual. Ejecute aplicaciones en varios sistemas operativos, incluidos Linux y Windows, entre otros, al mismo tiempo y en la misma PC sin tener que reiniciar su equipo. VMware Workstation Pro facilita muchísimo la tarea de evaluar nuevos sistemas operativos como Windows 10 y probar aplicaciones y parches de software, y arquitecturas de referencia en un entorno aislado y seguro. Ningún otro software de virtualización de escritorio brinda el rendimiento, la confiabilidad y las funciones de avanzada de Workstation Pro.
- See more at: http://www.vmware.com/latam/products/workstation/#sthash.7saKw2Pc.dpuf

Instalación de VMware Workstation

1.- Descargar el instalador correspondiente:
http://www.vmware.com/go/tryworkstation-linux-64
2.- Instalar requisitos necesarios
Iniciar la terminal en modo root (es necesario):

NOTA: Debido a que algunas configuraciones requieren acceso a carpetas con permisos únicamente de root, es necesario inicar en ese modo la terminal.
 su -
dnf install kernel-headers kernel kernel-devel gcc make glibc-headers 
dnf groupinstall "Development tools"
dnf update
3.- Reiniciar el equipo en caso de haber actualizaciones, esto es necesario para que el equipo inicie con la última versión del KERNEL en caso de haberlo, sobre todo si es la primera vez que se instalan los headers y librerias de desarrolladores.
reboot
4.- Copiar módulos del kernel necesarios.
cp /usr/src/kernels/`uname -r`/include/generated/uapi/linux/version.h /lib/modules/`uname -r`/build/include/linux/
5.- Cambiar los permisos del ejecutable descargado para ser instalado:
chmod 755 VMware-Workstation-Full-12.1.1-3770994.x86_64.bundle
6.- Ejecutar el instalador, recordar que estamos en modo root:
 Descargar generador de Seriales de aquí:
./VMware-Workstation-Full-12.1.1-3770994.x86_64.bundle

Compilar el Kernel:

NOTA: Una vez terminada la instalación, proseguimos a la compilación de los módulos de VMWare. Iniciar la terminal en modo ROOT
 Para la compilación de las librerias hay dos métodos uno manual y otro semi-automático:
Antes de comenzar hacer lo siguiente:

su -
 dnf install kernel-headers kernel-devel gcc glibc-headers
vmware-modconfig --console --install-all 
En el comando anterior mostrará un mensaje parecido al siguiente:
[...]
Stopping vmware (via systemctl):                           [  OK  ]
make: Entering directory '/tmp/modconfig-ADhuOz/vmmon-only'
Using kernel build system.
/usr/bin/make -C /lib/modules/4.4.9-300.fc23.x86_64/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR= modules
make[1]: Entering directory '/usr/src/kernels/4.4.9-300.fc23.x86_64'
  CC [M]  /tmp/modconfig-ADhuOz/vmmon-only/linux/hostif.o
  CC [M]  /tmp/modconfig-ADhuOz/vmmon-only/linux/driver.o
/tmp/modconfig-ADhuOz/vmmon-only/linux/driver.c:1283:1: aviso: una función always_inline tal vez no se puede incluir en línea [-Wattributes]
 LinuxDriverSyncReadTSCs(uint64 *delta) // OUT: TSC max - TSC min
 ^
  CC [M]  /tmp/modconfig-ADhuOz/vmmon-only/linux/driverLog.o
  CC [M]  /tmp/modconfig-ADhuOz/vmmon-only/common/memtrack.o
  CC [M]  /tmp/modconfig-ADhuOz/vmmon-only/common/apic.o
  CC [M]  /tmp/modconfig-ADhuOz/vmmon-only/common/vmx86.o
  CC [M]  /tmp/modconfig-ADhuOz/vmmon-only/common/cpuid.o
  CC [M]  /tmp/modconfig-ADhuOz/vmmon-only/common/task.o
  CC [M]  /tmp/modconfig-ADhuOz/vmmon-only/common/hashFunc.o
  CC [M]  /tmp/modconfig-ADhuOz/vmmon-only/common/comport.o
  CC [M]  /tmp/modconfig-ADhuOz/vmmon-only/common/phystrack.o
  CC [M]  /tmp/modconfig-ADhuOz/vmmon-only/vmcore/moduleloop.o
  LD [M]  /tmp/modconfig-ADhuOz/vmmon-only/vmmon.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /tmp/modconfig-ADhuOz/vmmon-only/vmmon.mod.o
  LD [M]  /tmp/modconfig-ADhuOz/vmmon-only/vmmon.ko
make[1]: Leaving directory '/usr/src/kernels/4.4.9-300.fc23.x86_64'
/usr/bin/make -C $PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR= postbuild
make[1]: Entering directory '/tmp/modconfig-ADhuOz/vmmon-only'
make[1]: 'postbuild' is up to date.
make[1]: Leaving directory '/tmp/modconfig-ADhuOz/vmmon-only'
cp -f vmmon.ko ./../vmmon.o
make: Leaving directory '/tmp/modconfig-ADhuOz/vmmon-only'
make: Entering directory '/tmp/modconfig-ADhuOz/vmnet-only'
Using kernel build system.
/usr/bin/make -C /lib/modules/4.4.9-300.fc23.x86_64/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR= modules
make[1]: Entering directory '/usr/src/kernels/4.4.9-300.fc23.x86_64'
  CC [M]  /tmp/modconfig-ADhuOz/vmnet-only/hub.o
  CC [M]  /tmp/modconfig-ADhuOz/vmnet-only/driver.o
  CC [M]  /tmp/modconfig-ADhuOz/vmnet-only/userif.o
  CC [M]  /tmp/modconfig-ADhuOz/vmnet-only/netif.o
In file included from include/linux/pci.h:35:0,
                 from /tmp/modconfig-ADhuOz/vmnet-only/compat_netdevice.h:27,
                 from /tmp/modconfig-ADhuOz/vmnet-only/netif.c:43:
include/linux/pci_ids.h:2252:0: aviso: se redefinió "PCI_VENDOR_ID_VMWARE"
 #define PCI_VENDOR_ID_VMWARE  0x15ad
 ^
In file included from /tmp/modconfig-ADhuOz/vmnet-only/net.h:38:0,
                 from /tmp/modconfig-ADhuOz/vmnet-only/vnetInt.h:26,
                 from /tmp/modconfig-ADhuOz/vmnet-only/netif.c:42:
/tmp/modconfig-ADhuOz/vmnet-only/vm_device_version.h:56:0: nota: esta es la ubicación de la definición previa
 #define PCI_VENDOR_ID_VMWARE                    0x15AD
 ^
  CC [M]  /tmp/modconfig-ADhuOz/vmnet-only/bridge.o
  CC [M]  /tmp/modconfig-ADhuOz/vmnet-only/procfs.o
In file included from /tmp/modconfig-ADhuOz/vmnet-only/net.h:38:0,
                 from /tmp/modconfig-ADhuOz/vmnet-only/vnetInt.h:26,
                 from /tmp/modconfig-ADhuOz/vmnet-only/bridge.c:52:
/tmp/modconfig-ADhuOz/vmnet-only/vm_device_version.h:56:0: aviso: se redefinió "PCI_VENDOR_ID_VMWARE"
 #define PCI_VENDOR_ID_VMWARE                    0x15AD
 ^
In file included from include/linux/pci.h:35:0,
                 from /tmp/modconfig-ADhuOz/vmnet-only/compat_netdevice.h:27,
                 from /tmp/modconfig-ADhuOz/vmnet-only/bridge.c:51:
include/linux/pci_ids.h:2252:0: nota: esta es la ubicación de la definición previa
 #define PCI_VENDOR_ID_VMWARE  0x15ad
 ^
  CC [M]  /tmp/modconfig-ADhuOz/vmnet-only/smac_compat.o
  CC [M]  /tmp/modconfig-ADhuOz/vmnet-only/smac.o
  CC [M]  /tmp/modconfig-ADhuOz/vmnet-only/vnetEvent.o
  CC [M]  /tmp/modconfig-ADhuOz/vmnet-only/vnetUserListener.o
  LD [M]  /tmp/modconfig-ADhuOz/vmnet-only/vmnet.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /tmp/modconfig-ADhuOz/vmnet-only/vmnet.mod.o
  LD [M]  /tmp/modconfig-ADhuOz/vmnet-only/vmnet.ko
make[1]: Leaving directory '/usr/src/kernels/4.4.9-300.fc23.x86_64'
/usr/bin/make -C $PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR= postbuild
make[1]: Entering directory '/tmp/modconfig-ADhuOz/vmnet-only'
make[1]: 'postbuild' is up to date.
make[1]: Leaving directory '/tmp/modconfig-ADhuOz/vmnet-only'
cp -f vmnet.ko ./../vmnet.o
make: Leaving directory '/tmp/modconfig-ADhuOz/vmnet-only'
Starting vmware (via systemctl):                           [  OK  ]
[...]

Método uno:

Copiar el siguiente script bash y guardarlo con el nombre de Update_VMW.sh, lo pueden hacer con gedit:
#!/bin/bash
FCX="fedoralib"
VTEMP_DIR=$(mktemp -p /tmp -d VMWFedora232425XXXXXXX)
MODS_SRC_DIR=/usr/lib/vmware/modules/source

# Check for root
if [ "x$(id -u)" != "x0" ]; then
 echo "(**) Run this tool as root!"; exit 1
fi

# Check distro
KVER=$(uname -r|grep fc2[34])
if [ "x${KVER}" = "x" ];then
 echo "(**) Fedora 23 not detected, Exit!"
 exit 1
fi

# Check presence of VMW
if [ -f /usr/lib/vmware/lib/libvmwareui.so/libvmwareui.so ]; then
 echo "(II) /usr/lib/vmware/lib/libvmwareui.so/libvmwareui.so present, continuing..."
else
 echo "(**) VMWare Workstation not detected, exit!"; exit 1
fi

# Force use of VMWare bundled libs
if [ -f /etc/vmware/bootstrap ]; then
 grep -q VMWARE_USE_SHIPPED_LIBS /etc/vmware/bootstrap
 if [ $? -eq 0 ]; then
  echo "(II) /etc/vmware/bootstrap already has VMWARE_USE_SHIPPED_LIBS, skipping.."
 else
  echo "(II) Patching /etc/vmware/bootstrap..."
  echo "export VMWARE_USE_SHIPPED_LIBS=force" >> /etc/vmware/bootstrap
 fi
fi

#

for mylib in $(rpm -ql glib2|grep '/usr/lib64/libg.*so\.0$')
do
 tgtlib="/usr/lib/vmware/lib/$(basename $mylib)/$(basename $mylib)"
 if [ ! -f "${tgtlib}.${FCX}" ]; then
  echo "(II) Backing up to ${tgtlib}.${FCX}..."
  /bin/cp -Lfv ${tgtlib} ${tgtlib}.${FCX}
 fi
 echo "(II) Replacing ${tgtlib} ..."
  /bin/cp -Lfv ${mylib} ${tgtlib}
done

# Look for GNU patch..
if [ ! -x /usr/bin/patch ]; then
 echo "(EE) Please install GNU patch (/usr/bin/patch) to patch the VMWare kernel modules.."
 exit 127
fi

# Get ready to patch the sources..
if [ "x${VTEMP_DIR}" != "x" ]; then
 cd ${VTEMP_DIR} || exit 127
fi

cat <<'EOF1' > modules.patch
diff -ur vmw_mods.orig/vmblock-only/linux/control.c vmw_mods/vmblock-only/linux/control.c
--- vmw_mods.orig/vmblock-only/linux/control.c 2016-04-14 19:31:30.000000000 -0400
+++ vmw_mods/vmblock-only/linux/control.c 2015-12-14 16:07:48.000000000 -0500
@@ -208,9 +208,11 @@
    VMBlockSetProcEntryOwner(controlProcMountpoint);
 
    /* Create /proc/fs/vmblock/dev */
-   controlProcEntry = create_proc_entry(VMBLOCK_CONTROL_DEVNAME,
-                                        VMBLOCK_CONTROL_MODE,
-                                        controlProcDirEntry);
+   controlProcEntry = proc_create(VMBLOCK_CONTROL_DEVNAME, 
+      VMBLOCK_CONTROL_MODE,
+                                  controlProcDirEntry, 
+      &ControlFileOps);
+
    if (!controlProcEntry) {
       Warning("SetupProcDevice: could not create " VMBLOCK_DEVICE "\n");
       remove_proc_entry(VMBLOCK_CONTROL_MOUNTPOINT, controlProcDirEntry);
@@ -218,7 +220,10 @@
       return -EINVAL;
    }
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)
    controlProcEntry->proc_fops = &ControlFileOps;
+#endif
+
    return 0;
 }
 
@@ -282,18 +287,24 @@
    int i;
    int retval;
 
-   name = getname(buf);
+   name = __getname();
    if (IS_ERR(name)) {
       return PTR_ERR(name);
    }
 
+   i = strncpy_from_user(name, buf, PATH_MAX);
+   if (i < 0 || i == PATH_MAX) {
+      __putname(name);
+      return -EINVAL;
+   }
+
    for (i = strlen(name) - 1; i >= 0 && name[i] == '/'; i--) {
       name[i] = '\0';
    }
 
    retval = i < 0 ? -EINVAL : blockOp(name, blocker);
 
-   putname(name);
+   __putname(name);
 
    return retval;
 }
diff -ur vmw_mods.orig/vmblock-only/linux/dentry.c vmw_mods/vmblock-only/linux/dentry.c
--- vmw_mods.orig/vmblock-only/linux/dentry.c 2016-04-14 19:31:30.000000000 -0400
+++ vmw_mods/vmblock-only/linux/dentry.c 2015-12-14 16:07:48.000000000 -0500
@@ -63,7 +63,7 @@
                    struct nameidata *nd)   // IN: lookup flags & intent
 {
    VMBlockInodeInfo *iinfo;
-   struct nameidata actualNd;
+   struct path actualNd;
    struct dentry *actualDentry;
    int ret;
 
diff -ur vmw_mods.orig/vmblock-only/linux/file.c vmw_mods/vmblock-only/linux/file.c
--- vmw_mods.orig/vmblock-only/linux/file.c 2016-04-14 19:31:30.000000000 -0400
+++ vmw_mods/vmblock-only/linux/file.c 2015-12-14 16:07:48.000000000 -0500
@@ -132,7 +132,7 @@
     * and that would try to acquire the inode's semaphore; if the two inodes
     * are the same we'll deadlock.
     */
-   if (actualFile->f_dentry && inode == actualFile->f_dentry->d_inode) {
+   if (actualFile->f_path.dentry && inode == actualFile->f_path.dentry->d_inode) {
       Warning("FileOpOpen: identical inode encountered, open cannot succeed.\n");
       if (filp_close(actualFile, current->files) < 0) {
          Warning("FileOpOpen: unable to close opened file.\n");
@@ -166,11 +166,9 @@
 
 static int
 FileOpReaddir(struct file *file,  // IN
-              void *dirent,       // IN
-              filldir_t filldir)  // IN
+  struct dir_context *ctx)
 {
    int ret;
-   FilldirInfo info;
    struct file *actualFile;
 
    if (!file) {
@@ -184,11 +182,8 @@
       return -EINVAL;
    }
 
-   info.filldir = filldir;
-   info.dirent = dirent;
-
    actualFile->f_pos = file->f_pos;
-   ret = vfs_readdir(actualFile, Filldir, &info);
+   ret = iterate_dir(actualFile, ctx);
    file->f_pos = actualFile->f_pos;
 
    return ret;
@@ -237,7 +232,7 @@
 
 
 struct file_operations RootFileOps = {
-   .readdir = FileOpReaddir,
+   .iterate = FileOpReaddir,
    .open    = FileOpOpen,
    .release = FileOpRelease,
 };
diff -ur vmw_mods.orig/vmblock-only/linux/filesystem.c vmw_mods/vmblock-only/linux/filesystem.c
--- vmw_mods.orig/vmblock-only/linux/filesystem.c 2016-04-14 19:31:30.000000000 -0400
+++ vmw_mods/vmblock-only/linux/filesystem.c 2015-12-14 16:07:48.000000000 -0500
@@ -322,7 +322,7 @@
 {
    VMBlockInodeInfo *iinfo;
    struct inode *inode;
-   struct nameidata actualNd;
+   struct path actualNd;
 
    ASSERT(sb);
 
diff -ur vmw_mods.orig/vmblock-only/linux/inode.c vmw_mods/vmblock-only/linux/inode.c
--- vmw_mods.orig/vmblock-only/linux/inode.c 2016-04-14 19:31:30.000000000 -0400
+++ vmw_mods/vmblock-only/linux/inode.c 2015-12-14 16:07:48.000000000 -0500
@@ -35,10 +35,18 @@
 
 
 /* Inode operations */
-static struct dentry *InodeOpLookup(struct inode *dir,
-                                    struct dentry *dentry, struct nameidata *nd);
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)
+static struct dentry *InodeOpLookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd);
 static int InodeOpReadlink(struct dentry *dentry, char __user *buffer, int buflen);
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)
+#else
+static struct dentry *InodeOpLookup(struct inode *, struct dentry *, unsigned int);
+static int InodeOpReadlink(struct dentry *, char __user *, int);
+#endif
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
+static const char *InodeOpFollowlink(struct dentry *dentry, void **cookie);
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)
 static void *InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd);
 #else
 static int InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd);
@@ -49,12 +57,15 @@
    .lookup = InodeOpLookup,
 };
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0)
 static struct inode_operations LinkInodeOps = {
+#else
+struct inode_operations LinkInodeOps = {
+#endif
    .readlink    = InodeOpReadlink,
    .follow_link = InodeOpFollowlink,
 };
 
-
 /*
  *----------------------------------------------------------------------------
  *
@@ -75,7 +86,11 @@
 static struct dentry *
 InodeOpLookup(struct inode *dir,      // IN: parent directory's inode
               struct dentry *dentry,  // IN: dentry to lookup
-              struct nameidata *nd)   // IN: lookup intent and information
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)
+       struct nameidata *nd)   // IN: lookup intent and information
+#else
+              unsigned int flags)
+#endif
 {
    char *filename;
    struct inode *inode;
@@ -135,7 +150,12 @@
    inode->i_size = INODE_TO_IINFO(inode)->nameLen;
    inode->i_version = 1;
    inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)
    inode->i_uid = inode->i_gid = 0;
+#else
+   inode->i_gid = make_kgid(current_user_ns(), 0);
+   inode->i_uid = make_kuid(current_user_ns(), 0);
+#endif
    inode->i_op = &LinkInodeOps;
 
    d_add(dentry, inode);
@@ -177,7 +197,12 @@
       return -EINVAL;
    }
 
-   return vfs_readlink(dentry, buffer, buflen, iinfo->name);
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(3, 14, 99)
+ return vfs_readlink(dentry, buffer, buflen, iinfo->name);
+#else
+       return readlink_copy(buffer, buflen, iinfo->name);
+#endif
+
 }
 
 
@@ -198,13 +223,20 @@
  *----------------------------------------------------------------------------
  */
 
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
+static const char *
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)
 static void *
 #else
 static int
 #endif
 InodeOpFollowlink(struct dentry *dentry,  // IN : dentry of symlink
-                  struct nameidata *nd)   // OUT: stores result
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
+    void **cookie
+#else
+    struct nameidata *nd
+#endif
+    )   // OUT: stores result
 {
    int ret;
    VMBlockInodeInfo *iinfo;
@@ -221,7 +253,11 @@
       goto out;
    }
 
-   ret = vfs_follow_link(nd, iinfo->name);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
+   return *cookie = (char *)(iinfo->name);
+#else
+   nd_set_link(nd, iinfo->name);
+#endif
 
 out:
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)
@@ -230,3 +266,4 @@
    return ret;
 #endif
 }
+
diff -ur vmw_mods.orig/vmblock-only/shared/compat_namei.h vmw_mods/vmblock-only/shared/compat_namei.h
--- vmw_mods.orig/vmblock-only/shared/compat_namei.h 2016-04-14 19:31:30.000000000 -0400
+++ vmw_mods/vmblock-only/shared/compat_namei.h 2016-05-25 12:30:06.602993677 -0400
@@ -26,21 +26,21 @@
  * struct. They were both replaced with a struct path.
  */
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25)
-#define compat_vmw_nd_to_dentry(nd) (nd).path.dentry
+#define compat_vmw_nd_to_dentry(nd) (nd).dentry
 #else
 #define compat_vmw_nd_to_dentry(nd) (nd).dentry
 #endif
 
 /* In 2.6.25-rc2, path_release(&nd) was replaced with path_put(&nd.path). */
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25)
-#define compat_path_release(nd) path_put(&(nd)->path)
+#define compat_path_release(nd) path_put(nd)
 #else
 #define compat_path_release(nd) path_release(nd)
 #endif
 
 /* path_lookup was removed in 2.6.39 merge window VFS merge */
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38)
-#define compat_path_lookup(name, flags, nd)     kern_path(name, flags, &((nd)->path))
+#define compat_path_lookup(name, flags, nd)     kern_path(name, flags, nd)
 #else
 #define compat_path_lookup(name, flags, nd)     path_lookup(name, flags, nd)
 #endif
diff -ur vmw_mods.orig/vmmon-only/linux/hostif.c vmw_mods/vmmon-only/linux/hostif.c
--- vmw_mods.orig/vmmon-only/linux/hostif.c 2016-04-14 19:48:44.000000000 -0400
+++ vmw_mods/vmmon-only/linux/hostif.c 2016-05-25 10:51:47.677306367 -0400
@@ -1162,8 +1162,13 @@
    int retval;
 
    down_read(&current->mm->mmap_sem);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
+   retval = get_user_pages((unsigned long)uvAddr,
+   numPages, 0, 0, ppages, NULL);
+#else
    retval = get_user_pages(current, current->mm, (unsigned long)uvAddr,
-                           numPages, 0, 0, ppages, NULL);
+   numPages, 0, 0, ppages, NULL);
+#endif
    up_read(&current->mm->mmap_sem);
 
    return retval != numPages;
diff -ur vmw_mods.orig/vmnet-only/netif.c vmw_mods/vmnet-only/netif.c
--- vmw_mods.orig/vmnet-only/netif.c 2016-04-14 19:48:47.000000000 -0400
+++ vmw_mods/vmnet-only/netif.c 2016-05-25 12:07:14.959944026 -0400
@@ -39,8 +39,8 @@
 #include <linux/proc_fs.h>
 #include <linux/file.h>
 
-#include "vnetInt.h"
 #include "compat_netdevice.h"
+#include "vnetInt.h"
 #include "vmnetInt.h"
 
 
diff -ur vmw_mods.orig/vmnet-only/userif.c vmw_mods/vmnet-only/userif.c
--- vmw_mods.orig/vmnet-only/userif.c 2016-04-14 19:48:47.000000000 -0400
+++ vmw_mods/vmnet-only/userif.c 2016-05-25 10:50:57.215044260 -0400
@@ -113,8 +113,12 @@
    int retval;
 
    down_read(&current->mm->mmap_sem);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
+   retval = get_user_pages(addr, 1, 1, 0, &page, NULL);
+#else
    retval = get_user_pages(current, current->mm, addr,
-      1, 1, 0, &page, NULL);
+   1, 1, 0, &page, NULL);
+#endif
    up_read(&current->mm->mmap_sem);
 
    if (retval != 1) {
diff -ur vmw_mods.orig/vmnet-only/vm_device_version.h vmw_mods/vmnet-only/vm_device_version.h
--- vmw_mods.orig/vmnet-only/vm_device_version.h 2016-04-14 19:48:47.000000000 -0400
+++ vmw_mods/vmnet-only/vm_device_version.h 2016-05-25 11:59:27.676539573 -0400
@@ -53,7 +53,9 @@
  *    VMware HD Audio codec
  *    VMware HD Audio controller
  */
+#ifndef PCI_VENDOR_ID_VMWARE
 #define PCI_VENDOR_ID_VMWARE                    0x15AD
+#endif
 #define PCI_DEVICE_ID_VMWARE_SVGA2              0x0405
 #define PCI_DEVICE_ID_VMWARE_SVGA               0x0710
 #define PCI_DEVICE_ID_VMWARE_VGA                0x0711
EOF1

cat <<'EOF2' > util.patch
--- scripts/util.sh.orig 2015-12-09 16:07:06.000000000 -0500
+++ scripts/util.sh 2016-03-02 14:35:04.000000000 -0500
@@ -362,7 +362,7 @@
     echo no
   else
     if [ "$vmdb_VMBLOCK_CONFED" = 'yes' ]; then
-      echo yes
+      echo no
     else
       echo no
     fi
EOF2

if [ "x${VTEMP_DIR}" != "x" ]; then
 for mymod in vmmon vmnet vmblock
 do
  if [ -f ${MODS_SRC_DIR}/${mymod}.tar ]; then
   echo "(II) Extracting  ${MODS_SRC_DIR}/${mymod}.tar  into ${VTEMP_DIR}..."
   /usr/bin/tar xf ${MODS_SRC_DIR}/${mymod}.tar  || exit 127
  fi
 done
 echo "(II) Patching modules..."
 patch -p1 <  modules.patch

 for mymod in vmmon vmnet vmblock
 do
  if [ -f ${MODS_SRC_DIR}/${mymod}.tar.orig ]; then
   echo "(WW) Backup ${MODS_SRC_DIR}/${mymod}.tar.orig already exists! Not replacing original tar..."
  else
   echo "(II) Rebuilding ${MODS_SRC_DIR}/${mymod}.tar from ${VTEMP_DIR}/${mymod}-only ..."
   /bin/cp -Lfv ${MODS_SRC_DIR}/${mymod}.tar{,.orig}
   /usr/bin/tar cf ${MODS_SRC_DIR}/${mymod}.tar ${mymod}-only || exit 127
  fi
 done

 # on recent systems VMW uses vmware-fuse-block, no need for vmblock anymore..
 if [ -f /usr/lib/vmware/scripts/util.sh.orig ]; then
  echo "(WW) /usr/lib/vmware/scripts/util.sh.orig already exists! Not patching..."
 else
  echo "(II) Patching util.sh..."
  /bin/cp -Lfv /usr/lib/vmware/scripts/util.sh{,.orig}
  patch -p1 < util.patch /usr/lib/vmware/scripts/util.sh
 fi
fi

# End
echo "(II) Now run: vmware-modconfig --console --install-all"
Una vez guardado asignarle permiso de ejecución:
chmod 777 Update_VMW.sh
Ejecutarlo como:
./Update_VMW.sh
NOTA: Una vez ejecutado el scrip, saltarse al último paso:

Método DOS:

Primero buscar el subfijo de las librerías a utilizar:
En Fedora 24:

# ls -l /usr/lib64/libglib-2.0.so.0.*

El resultado es:
/usr/lib64/libglib-2.0.so.0.4800.1
Lo siguiente es ejecutar el siguiente comando con la versión de las librerías que arrojaron los comandos anteriores, es muy importante que coincidan, recordar que estamos en modo root:
# cd /usr/lib/vmware/lib

Ejecutar el comando con las modificaciones necesarias:

En mi caso tengo la versión  24 de fedora, por lo tanto lo modifico así:

for mylib in $(ls /usr/lib64/lib*4800*); do /bin/cp -afv $mylib $(basename $mylib .4800.1 )/$(basename $mylib .4800.1 ); done

 Paso final: 

NOTA: Cada vez que haya actualización del kernel, es necesario recompilar los módulos también, lo mismo ocure con el module kernel de virtualbox.
vmware-modconfig --console --install-all

Fuente: http://vcojot.blogspot.mx/2015/11/vmware-worksation-12-on-fedora-core-23.html

Ejecutar el software:

Ahora ya pueden ejecutar el software desde la terminal como usuario normal o desde el cajón de las aplicaciones:
vmware&
Iniciarlo en modo forzado:
$ VMWARE_USE_SHIPPED_LIBS=force vmware or: $ VMWARE_USE_SHIPPED_LIBS=force vmplayer

Fin del proceso de instalación.

Desinstalación:


Listar los productos instalados de VMWare
vmware-installer --list-products
Y mostrará algo parecido:

Product Name         Product Version     
==================== ====================
vmware-workstation   12.1.1.3770994 
Y ahora ejecutamos el comando con el producto seleccionado:
sudo vmware-installer  --uninstall-product vmware-workstation
 Seguir los pasos del  asistente de desintalador para finalizar.


Capturas:








Y eso es todo: Gracias por visitar, lamento el Tutorial tan largo, pero es necesario de ese modo: