среда, 17 августа 2016 г.

VMWare 12.1.1. на ядре 4.6.4 и 4.7


Для запуска VMWare на Ubuntu 16.04 на ядрах выше 4.2 необходимо пропатчить ядро.
Для 4.6.4 нашел в сети вот этот патч


#!/bin/bash
usr=`whoami`
if [ "$usr" != "root" ]; then
    echo "Run $0 ar superuser"
    exit 1
fi

WORKDIR=/tmp/vmw
SRCDIR=/usr/lib/vmware/modules/source
MODDIR=/lib/modules/`uname -r`/kernel/misc
mkdir $WORKDIR
mkdir $MODDIR
cp $SRCDIR/vmmon.tar $WORKDIR/
cp $SRCDIR/vmnet.tar $WORKDIR/
cd $WORKDIR
tar -xf vmmon.tar
tar -xf vmnet.tar
cd vmnet-only
# cat netif.c | sed -r 's/dev->trans_start = jiffies/netif_trans_update(dev)/g' > netif.c1
# mv netif.c1 netif.c
cat userif.c | sed -r 's/get_user_pages/get_user_pages_remote/g' > userif.c1
mv userif.c1 userif.c
make
cp *.ko $MODDIR/
cd ../vmmon-only/linux
cat hostif.c | sed -r 's/get_user_pages/get_user_pages_remote/g' > hostif.c1
mv hostif.c1 hostif.c
cd ../
make
cp *.ko $MODDIR/
depmod -a
modprobe vmnet
modprobe vmmon
rm -R $WORKDIR
Скрипт сохранить в любой каталог, дать права на исполнение и запустить под root.
Для ядер 4.6.7 этот патч не работает.

Для ядра 4.7 запускаем этот патч:
#!/bin/bash
usr=`whoami`
if [ "$usr" != "root" ]; then
  echo "Run $0 ar superuser"
  exit 1
fi
WORKDIR=/tmp/vmw
SRCDIR=/usr/lib/vmware/modules/source
MODDIR=/lib/modules/`uname -r`/kernel/misc
mkdir $WORKDIR
mkdir $MODDIR
cp $SRCDIR/vmmon.tar $WORKDIR/
cp $SRCDIR/vmnet.tar $WORKDIR/
cd $WORKDIR
tar -xf vmmon.tar
tar -xf vmnet.tar
cd vmnet-only
cat netif.c | sed -r 's/dev->trans_start = jiffies/netif_trans_update(dev)/g' > netif.c1
mv netif.c1 netif.c
cat userif.c | sed -r 's/get_user_pages/get_user_pages_remote/g' > userif.c1
mv userif.c1 userif.c
make
cp *.ko $MODDIR/
cd ../vmmon-only/linux
cat hostif.c | sed -r 's/get_user_pages/get_user_pages_remote/g' > hostif.c1
mv hostif.c1 hostif.c
cd ../
make
cp *.ko $MODDIR/
depmod -a
modprobe vmnet
modprobe vmmon
rm -R $WORKDIR
Ветка обсуждения на rutracker.