This commit is contained in:
96
.SRCINFO
Normal file
96
.SRCINFO
Normal file
@@ -0,0 +1,96 @@
|
||||
pkgbase = vmware-workstation
|
||||
pkgdesc = The industry standard for running multiple operating systems as virtual machines on a single Linux PC.
|
||||
pkgver = 17.6.3
|
||||
pkgrel = 9
|
||||
url = https://www.vmware.com/products/workstation-for-linux.html
|
||||
install = vmware-workstation.install
|
||||
arch = x86_64
|
||||
license = custom
|
||||
makedepends = sqlite
|
||||
makedepends = python
|
||||
makedepends = 7zip
|
||||
makedepends = uefitool
|
||||
depends = dkms
|
||||
depends = fuse2
|
||||
depends = gtkmm3
|
||||
depends = libcanberra
|
||||
depends = libaio
|
||||
depends = pcsclite
|
||||
depends = hicolor-icon-theme
|
||||
depends = libxcrypt-compat
|
||||
depends = libxml2-legacy
|
||||
depends = gtk3
|
||||
depends = gcr
|
||||
optdepends = linux-headers: build modules against Arch kernel
|
||||
provides = vmware-ovftool
|
||||
conflicts = vmware-modules-dkms
|
||||
conflicts = vmware-ovftool
|
||||
conflicts = vmware-patch
|
||||
conflicts = vmware-systemd-services
|
||||
options = !strip
|
||||
options = emptydirs
|
||||
options = !debug
|
||||
backup = etc/vmware/config
|
||||
backup = etc/conf.d/vmware
|
||||
source = https://softwareupdate-prod.broadcom.com/cds/vmw-desktop/ws/17.6.3/24583834/linux/core/VMware-Workstation-17.6.3-24583834.x86_64.bundle.tar
|
||||
source = https://softwareupdate-prod.broadcom.com/cds/vmw-desktop/ws/17.5.2/23775571/linux/packages/vmware-tools-linux-12.4.0-23259341.x86_64.component.tar
|
||||
source = https://softwareupdate-prod.broadcom.com/cds/vmw-desktop/ws/17.5.2/23775571/linux/packages/vmware-tools-linuxPreGlibc25-12.4.0-23259341.x86_64.component.tar
|
||||
source = https://softwareupdate-prod.broadcom.com/cds/vmw-desktop/ws/17.5.2/23775571/linux/packages/vmware-tools-netware-12.4.0-23259341.x86_64.component.tar
|
||||
source = https://softwareupdate-prod.broadcom.com/cds/vmw-desktop/ws/17.5.2/23775571/linux/packages/vmware-tools-solaris-12.4.0-23259341.x86_64.component.tar
|
||||
source = vmware-tools-windows-12.5.0-24276846-17.6.3.x86_64.component.tar::https://softwareupdate-prod.broadcom.com/cds/vmw-desktop/ws/17.6.3/24583834/linux/packages/vmware-tools-windows-12.5.0-24276846.x86_64.component.tar
|
||||
source = vmware-tools-windows-x86-12.5.0-24276846-17.6.3.x86_64.component.tar::https://softwareupdate-prod.broadcom.com/cds/vmw-desktop/ws/17.6.3/24583834/linux/packages/vmware-tools-windows-x86-12.5.0-24276846.x86_64.component.tar
|
||||
source = https://softwareupdate-prod.broadcom.com/cds/vmw-desktop/ws/17.5.2/23775571/linux/packages/vmware-tools-winPre2k-12.4.0-23259341.x86_64.component.tar
|
||||
source = https://softwareupdate-prod.broadcom.com/cds/vmw-desktop/ws/17.5.2/23775571/linux/packages/vmware-tools-winPreVista-12.4.0-23259341.x86_64.component.tar
|
||||
source = winVistaSP1.iso::https://packages-prod.broadcom.com/tools/frozen/windows/WindowsToolsVista/SP1/windows.iso
|
||||
source = winVistaSP2.iso::https://packages-prod.broadcom.com/tools/frozen/windows/WindowsToolsVista/SP2/windows.iso
|
||||
source = vmware-bootstrap
|
||||
source = vmware-vix-bootstrap
|
||||
source = config
|
||||
source = configure-initscript.sh
|
||||
source = vmware-environment.sh
|
||||
source = vmware-networks-configuration.service
|
||||
source = vmware-networks.service
|
||||
source = vmware-usbarbitrator.service
|
||||
source = vmware-networks.path
|
||||
source = vmware-usbarbitrator.path
|
||||
source = dkms.conf.in
|
||||
source = Makefile
|
||||
source = vmmon.patch
|
||||
source = vmnet.patch
|
||||
source = linux6_15.patch
|
||||
source = https://packages-prod.broadcom.com/tools/frozen/darwin/darwin.iso
|
||||
source = https://packages-prod.broadcom.com/tools/frozen/darwin/darwinPre15.iso
|
||||
source = unlocker.py
|
||||
source = efi-patches.txt
|
||||
sha256sums = 4f3b643068bbd6e4c864e1b434cfef080faa18382b988d012dc4738094a73e74
|
||||
sha256sums = d862be0d12796134b40e5ffc7534a5e6161b8898355fe32ca8f705a3806cbfe4
|
||||
sha256sums = d79f79f17e5f37399046d16be3967e0cff3c9474e2cb6ea3f2c3ebea3ff68cea
|
||||
sha256sums = 4643fff3ed4f8af5a56a1c4c2084fa7327d78e58ee9b0687b98390a4b4a1ac14
|
||||
sha256sums = 196c842f758b813afb202b0db2d09d457fccafac212ca41ef3277dfe9ceaf9ec
|
||||
sha256sums = 81b63fd7f3a7f9f7b24cddb8712a592b4b3c9f269338a8897c55146c9766a18b
|
||||
sha256sums = 5078060e520cf1491d1585d9b85a311bfcde1da080fc527512840d44040eb137
|
||||
sha256sums = d4e9884f5f11cef4e261023d895eba5b57a8a80623bff0de8b3f1c47154b2a11
|
||||
sha256sums = 20abd21da43ac31741f8bb26db1ae7d8f4ef4c5082c9a2cc3ae5da494f1b9529
|
||||
sha256sums = 3b8f9d6e43f5d1dff0576cb93d008c14e0434d7233872f6c63988513d2bda5d1
|
||||
sha256sums = 8f1cc3181055891b98672f715e0ca7bbe4018960eae945d7a4b9f640c44c3d79
|
||||
sha256sums = 12e7b16abf8d7e858532edabb8868919c678063c566a6535855b194aac72d55e
|
||||
sha256sums = da1698bf4e73ae466c1c7fc93891eba4b9c4581856649635e6532275dbfea141
|
||||
sha256sums = ac81b0470feebba36482fbb2a9f641fef98924711bf761c0e6fdec67178194de
|
||||
sha256sums = 48d203450db426e8780f3696a2cf85ee08db004e93f8aca50a9aa24129b1e839
|
||||
sha256sums = b94959a11b28e51b541321be0588190eb10825e9ff55cbd16eb01483a839a69f
|
||||
sha256sums = 9b4fbe0ba83f761a2eb9ecd05d48428f8b0a5b3abd8404ccbd928408e682f02b
|
||||
sha256sums = c0a5aea785db06921fb350d36d5e0fd9a14f5eee0c835686ec6fea1af8c92245
|
||||
sha256sums = d7a9fbf39a0345ae2f14f7f389f30b1110f605d187e0c241e99bbb18993c250d
|
||||
sha256sums = 16a73931894a65d43da489ff25d07647c0ecddf60d443b103bceca63504910fe
|
||||
sha256sums = fe1b1be8297f4170406f97dd1f8b385d911faf45afe19cbc0c26b8092b3ddf8d
|
||||
sha256sums = 7ba8cbdb1981a9a714b4068e651cc7a20ab358dddf6cab68519d9f324ea800b3
|
||||
sha256sums = 273d4357599a3e54259c78cc49054fef8ecfd2c2eda35cbcde3a53a62777a5ac
|
||||
sha256sums = 32ae0ba7836c2212b819e3e7ec3f96667c1ac6d5083003eab1e794f0c032f640
|
||||
sha256sums = 74453f184ff57390ea0696144f0fc767cc875635595c964d5d5e7924a01c82d8
|
||||
sha256sums = 2411268a37a2aac03ea1e8b38e2da3fc31a232161f92cad824d98d9873b2586d
|
||||
sha256sums = e0c96286f376b30e2c2362bd991709f0f6bc6ebd911be4056a58da8698c49236
|
||||
sha256sums = ef33fc5d152fd9db27cac0b1f21160226dfa5e5b7a501ffa25818682f3b4aaa0
|
||||
sha256sums = 8a61e03d0edbbf60c1c84a43aa87a6e950f82d2c71b968888f019345c2f684f3
|
||||
sha256sums = 392c1effcdec516000e9f8ffc97f2586524d8953d3e7d6f2c5f93f2acd809d91
|
||||
|
||||
pkgname = vmware-workstation
|
||||
13
.gitea/workflows/build.yml
Normal file
13
.gitea/workflows/build.yml
Normal file
@@ -0,0 +1,13 @@
|
||||
name: Build package
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
build-package:
|
||||
runs-on: pkgbuilder
|
||||
env:
|
||||
steps:
|
||||
- name: Build and push package
|
||||
uses: https://gitea.konchin.com/action/archbuild@main
|
||||
with:
|
||||
minio-accesskey: ${{ secrets.MINIO_ACCESSKEY }}
|
||||
minio-secretkey: ${{ secrets.MINIO_SECRETKEY }}
|
||||
21
Makefile
Normal file
21
Makefile
Normal file
@@ -0,0 +1,21 @@
|
||||
#!/usr/bin/make -f
|
||||
|
||||
MODULES = \
|
||||
vmmon \
|
||||
vmnet
|
||||
|
||||
all: $(foreach m, $(MODULES), $m.ko)
|
||||
|
||||
%.ko: %
|
||||
$(MAKE) KVERSION=$(KVERSION) VM_KBUILD=yes -C $*-only
|
||||
|
||||
$(MODULES): %:
|
||||
cp -r $(SRCDIR)/$*-only $*-only
|
||||
|
||||
vsock.ko: vmci.ko
|
||||
|
||||
clean:
|
||||
rm -rf $(MODULES)
|
||||
rm -rf $(foreach m, $(MODULES), $m-only)
|
||||
rm -f $(foreach m, $(MODULES), $m.ko)
|
||||
rm -f $(foreach m, $(MODULES), $m.o)
|
||||
451
PKGBUILD
Normal file
451
PKGBUILD
Normal file
@@ -0,0 +1,451 @@
|
||||
# Maintainer: Julian Xhokaxhiu <https://julianxhokaxhiu.com>
|
||||
# Contributor: Jean-Marc Lenoir <archlinux "at" jihemel "dot" com>
|
||||
# Contributor: Maxwell Pray a.k.a. Synthead <synthead@gmail.com>
|
||||
|
||||
# To enable macOS guests support, uncomment the line below:
|
||||
#_enable_macOS_guests=y
|
||||
# CAUTION: Running macOS on VMware Workstation on non Apple computer is forbidden by
|
||||
# Apple and VMware EULAs.
|
||||
|
||||
# vmware-keymaps dependency is needed to avoid some conflicts when you install
|
||||
# this package with vmware-horizon-client. If you don't plan to install
|
||||
# vmware-horizon-client and don't want to add this dependency, you can
|
||||
# uncomment the line below:
|
||||
#_remove_vmware_keymaps_dependency=y
|
||||
|
||||
#PKGEXT=.pkg.tar
|
||||
pkgname=vmware-workstation
|
||||
pkgver=17.6.3
|
||||
_buildver=24583834
|
||||
_pkgver=${pkgver}_${_buildver}
|
||||
pkgrel=9
|
||||
_tools_version=12.5.0-24276846
|
||||
_legacy_ver=17.5.2
|
||||
_legacy_buildver=23775571
|
||||
_legacy_tools_version=12.4.0_23259341
|
||||
pkgdesc='The industry standard for running multiple operating systems as virtual machines on a single Linux PC.'
|
||||
arch=(x86_64)
|
||||
url='https://www.vmware.com/products/workstation-for-linux.html'
|
||||
license=(custom)
|
||||
install="vmware-workstation.install"
|
||||
conflicts=(
|
||||
vmware-modules-dkms
|
||||
vmware-ovftool
|
||||
vmware-patch
|
||||
vmware-systemd-services
|
||||
)
|
||||
provides=(
|
||||
vmware-ovftool
|
||||
)
|
||||
depends=(
|
||||
dkms
|
||||
fuse2
|
||||
gtkmm3
|
||||
libcanberra
|
||||
libaio
|
||||
pcsclite
|
||||
hicolor-icon-theme
|
||||
libxcrypt-compat # needed for ovftool
|
||||
libxml2-legacy # needed for vmrun
|
||||
# needed to use Arch GTK3 library (for theme integration)
|
||||
gtk3
|
||||
gcr
|
||||
)
|
||||
optdepends=(
|
||||
'linux-headers: build modules against Arch kernel'
|
||||
)
|
||||
makedepends=(
|
||||
sqlite
|
||||
)
|
||||
backup=(
|
||||
'etc/vmware/config'
|
||||
'etc/conf.d/vmware'
|
||||
)
|
||||
|
||||
DLAGENTS=("https::/usr/bin/curl -fLC - --connect-to softwareupdate-prod.broadcom.com:443:softwareupdate-prod.broadcom.com.cdn.cloudflare.net:443 --retry 3 --retry-delay 3 -o %o %u")
|
||||
|
||||
source=(
|
||||
"https://softwareupdate-prod.broadcom.com/cds/vmw-desktop/ws/${pkgver}/${_buildver}/linux/core/VMware-Workstation-${_pkgver/_/-}.${CARCH}.bundle.tar"
|
||||
"https://softwareupdate-prod.broadcom.com/cds/vmw-desktop/ws/${_legacy_ver}/${_legacy_buildver}/linux/packages/vmware-tools-linux-${_legacy_tools_version/_/-}.${CARCH}.component.tar"
|
||||
"https://softwareupdate-prod.broadcom.com/cds/vmw-desktop/ws/${_legacy_ver}/${_legacy_buildver}/linux/packages/vmware-tools-linuxPreGlibc25-${_legacy_tools_version/_/-}.${CARCH}.component.tar"
|
||||
"https://softwareupdate-prod.broadcom.com/cds/vmw-desktop/ws/${_legacy_ver}/${_legacy_buildver}/linux/packages/vmware-tools-netware-${_legacy_tools_version/_/-}.${CARCH}.component.tar"
|
||||
"https://softwareupdate-prod.broadcom.com/cds/vmw-desktop/ws/${_legacy_ver}/${_legacy_buildver}/linux/packages/vmware-tools-solaris-${_legacy_tools_version/_/-}.${CARCH}.component.tar"
|
||||
"vmware-tools-windows-${_tools_version/_/-}-${pkgver}.${CARCH}.component.tar::https://softwareupdate-prod.broadcom.com/cds/vmw-desktop/ws/${pkgver}/${_buildver}/linux/packages/vmware-tools-windows-${_tools_version/_/-}.${CARCH}.component.tar"
|
||||
"vmware-tools-windows-x86-${_tools_version/_/-}-${pkgver}.${CARCH}.component.tar::https://softwareupdate-prod.broadcom.com/cds/vmw-desktop/ws/${pkgver}/${_buildver}/linux/packages/vmware-tools-windows-x86-${_tools_version/_/-}.${CARCH}.component.tar"
|
||||
"https://softwareupdate-prod.broadcom.com/cds/vmw-desktop/ws/${_legacy_ver}/${_legacy_buildver}/linux/packages/vmware-tools-winPre2k-${_legacy_tools_version/_/-}.${CARCH}.component.tar"
|
||||
"https://softwareupdate-prod.broadcom.com/cds/vmw-desktop/ws/${_legacy_ver}/${_legacy_buildver}/linux/packages/vmware-tools-winPreVista-${_legacy_tools_version/_/-}.${CARCH}.component.tar"
|
||||
|
||||
"winVistaSP1.iso::https://packages-prod.broadcom.com/tools/frozen/windows/WindowsToolsVista/SP1/windows.iso"
|
||||
"winVistaSP2.iso::https://packages-prod.broadcom.com/tools/frozen/windows/WindowsToolsVista/SP2/windows.iso"
|
||||
|
||||
'vmware-bootstrap'
|
||||
'vmware-vix-bootstrap'
|
||||
'config'
|
||||
'configure-initscript.sh'
|
||||
'vmware-environment.sh'
|
||||
|
||||
'vmware-networks-configuration.service'
|
||||
'vmware-networks.service'
|
||||
'vmware-usbarbitrator.service'
|
||||
'vmware-networks.path'
|
||||
'vmware-usbarbitrator.path'
|
||||
|
||||
'dkms.conf.in'
|
||||
'Makefile'
|
||||
'vmmon.patch'
|
||||
'vmnet.patch'
|
||||
'linux6_15.patch'
|
||||
)
|
||||
sha256sums=('4f3b643068bbd6e4c864e1b434cfef080faa18382b988d012dc4738094a73e74'
|
||||
'd862be0d12796134b40e5ffc7534a5e6161b8898355fe32ca8f705a3806cbfe4'
|
||||
'd79f79f17e5f37399046d16be3967e0cff3c9474e2cb6ea3f2c3ebea3ff68cea'
|
||||
'4643fff3ed4f8af5a56a1c4c2084fa7327d78e58ee9b0687b98390a4b4a1ac14'
|
||||
'196c842f758b813afb202b0db2d09d457fccafac212ca41ef3277dfe9ceaf9ec'
|
||||
'81b63fd7f3a7f9f7b24cddb8712a592b4b3c9f269338a8897c55146c9766a18b'
|
||||
'5078060e520cf1491d1585d9b85a311bfcde1da080fc527512840d44040eb137'
|
||||
'd4e9884f5f11cef4e261023d895eba5b57a8a80623bff0de8b3f1c47154b2a11'
|
||||
'20abd21da43ac31741f8bb26db1ae7d8f4ef4c5082c9a2cc3ae5da494f1b9529'
|
||||
'3b8f9d6e43f5d1dff0576cb93d008c14e0434d7233872f6c63988513d2bda5d1'
|
||||
'8f1cc3181055891b98672f715e0ca7bbe4018960eae945d7a4b9f640c44c3d79'
|
||||
'12e7b16abf8d7e858532edabb8868919c678063c566a6535855b194aac72d55e'
|
||||
'da1698bf4e73ae466c1c7fc93891eba4b9c4581856649635e6532275dbfea141'
|
||||
'ac81b0470feebba36482fbb2a9f641fef98924711bf761c0e6fdec67178194de'
|
||||
'48d203450db426e8780f3696a2cf85ee08db004e93f8aca50a9aa24129b1e839'
|
||||
'b94959a11b28e51b541321be0588190eb10825e9ff55cbd16eb01483a839a69f'
|
||||
'9b4fbe0ba83f761a2eb9ecd05d48428f8b0a5b3abd8404ccbd928408e682f02b'
|
||||
'c0a5aea785db06921fb350d36d5e0fd9a14f5eee0c835686ec6fea1af8c92245'
|
||||
'd7a9fbf39a0345ae2f14f7f389f30b1110f605d187e0c241e99bbb18993c250d'
|
||||
'16a73931894a65d43da489ff25d07647c0ecddf60d443b103bceca63504910fe'
|
||||
'fe1b1be8297f4170406f97dd1f8b385d911faf45afe19cbc0c26b8092b3ddf8d'
|
||||
'7ba8cbdb1981a9a714b4068e651cc7a20ab358dddf6cab68519d9f324ea800b3'
|
||||
'273d4357599a3e54259c78cc49054fef8ecfd2c2eda35cbcde3a53a62777a5ac'
|
||||
'32ae0ba7836c2212b819e3e7ec3f96667c1ac6d5083003eab1e794f0c032f640'
|
||||
'74453f184ff57390ea0696144f0fc767cc875635595c964d5d5e7924a01c82d8'
|
||||
'2411268a37a2aac03ea1e8b38e2da3fc31a232161f92cad824d98d9873b2586d')
|
||||
options=(!strip emptydirs !debug)
|
||||
|
||||
if [ -z "$_remove_vmware_keymaps_dependency" ]; then
|
||||
depends+=(
|
||||
vmware-keymaps
|
||||
)
|
||||
fi
|
||||
|
||||
|
||||
_isoimages=(linux linuxPreGlibc25 netware solaris windows windows-x86 winPre2k winPreVista)
|
||||
|
||||
if [ -n "$_enable_macOS_guests" ]; then
|
||||
|
||||
_vmware_fusion_ver=13.5.2
|
||||
_vmware_fusion_buildver=23775688
|
||||
_vmware_fusion_ver_full=${_vmware_fusion_ver}_${_vmware_fusion_buildver}
|
||||
# List of VMware Fusion versions: https://softwareupdate-prod.broadcom.com/cds/vmw-desktop/fusion/index.html
|
||||
|
||||
makedepends+=(
|
||||
python
|
||||
7zip
|
||||
uefitool
|
||||
)
|
||||
|
||||
source+=(
|
||||
"https://packages-prod.broadcom.com/tools/frozen/darwin/darwin.iso"
|
||||
"https://packages-prod.broadcom.com/tools/frozen/darwin/darwinPre15.iso"
|
||||
"unlocker.py"
|
||||
"efi-patches.txt"
|
||||
)
|
||||
|
||||
sha256sums+=(
|
||||
'e0c96286f376b30e2c2362bd991709f0f6bc6ebd911be4056a58da8698c49236'
|
||||
'ef33fc5d152fd9db27cac0b1f21160226dfa5e5b7a501ffa25818682f3b4aaa0'
|
||||
'8a61e03d0edbbf60c1c84a43aa87a6e950f82d2c71b968888f019345c2f684f3'
|
||||
'392c1effcdec516000e9f8ffc97f2586524d8953d3e7d6f2c5f93f2acd809d91'
|
||||
)
|
||||
|
||||
_fusion_isoimages=(darwin darwinPre15)
|
||||
fi
|
||||
|
||||
|
||||
_create_database_file() {
|
||||
# Create a database which contains the list of guest tools (necessary to avoid that vmware try to download them)
|
||||
local database_filename="$pkgdir/etc/vmware-installer/database"
|
||||
echo -n "" > "$database_filename"
|
||||
|
||||
sqlite3 "$database_filename" "CREATE TABLE settings(key VARCHAR PRIMARY KEY, value VARCHAR NOT NULL, component_name VARCHAR NOT NULL);"
|
||||
sqlite3 "$database_filename" "INSERT INTO settings(key,value,component_name) VALUES('db.schemaVersion','2','vmware-installer');"
|
||||
sqlite3 "$database_filename" "CREATE TABLE components(id INTEGER PRIMARY KEY, name VARCHAR NOT NULL, version VARCHAR NOT NULL, buildNumber INTEGER NOT NULL, component_core_id INTEGER NOT NULL, longName VARCHAR NOT NULL, description VARCHAR, type INTEGER NOT NULL);"
|
||||
|
||||
for isoimage in ${_isoimages[@]}
|
||||
do
|
||||
local version=$(cat "$srcdir/extracted/vmware-tools-$isoimage/manifest.xml" | grep -oPm1 "(?<=<version>)[^<]+")
|
||||
sqlite3 "$database_filename" "INSERT INTO components(name,version,buildNumber,component_core_id,longName,description,type) VALUES('vmware-tools-$isoimage','$version',${_pkgver#*_},1,'$isoimage','$isoimage',1);"
|
||||
done
|
||||
|
||||
if [ -n "$_enable_macOS_guests" ]; then
|
||||
for isoimage in ${_fusion_isoimages[@]}
|
||||
do
|
||||
sqlite3 "$database_filename" "INSERT INTO components(name,version,buildNumber,component_core_id,longName,description,type) VALUES('vmware-tools-$isoimage','1',${_vmware_fusion_ver_full#*_},1,'$isoimage','$isoimage',1);"
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
prepare() {
|
||||
extracted_dir="$srcdir/extracted"
|
||||
[[ -d "$extracted_dir" ]] && rm -r "$extracted_dir"
|
||||
|
||||
bash \
|
||||
"$(readlink -f "$srcdir/VMware-Workstation-${_pkgver/_/-}.${CARCH}.bundle")" \
|
||||
--install-component "vmware-tools-linux-${_legacy_tools_version/_/-}.${CARCH}.component" \
|
||||
--install-component "vmware-tools-linuxPreGlibc25-${_legacy_tools_version/_/-}.${CARCH}.component" \
|
||||
--install-component "vmware-tools-netware-${_legacy_tools_version/_/-}.${CARCH}.component" \
|
||||
--install-component "vmware-tools-solaris-${_legacy_tools_version/_/-}.${CARCH}.component" \
|
||||
--install-component "vmware-tools-windows-${_tools_version/_/-}.${CARCH}.component" \
|
||||
--install-component "vmware-tools-windows-x86-${_tools_version/_/-}.${CARCH}.component" \
|
||||
--install-component "vmware-tools-winPre2k-${_legacy_tools_version/_/-}.${CARCH}.component" \
|
||||
--install-component "vmware-tools-winPreVista-${_legacy_tools_version/_/-}.${CARCH}.component" \
|
||||
--extract "$extracted_dir"
|
||||
|
||||
if [ -n "$_enable_macOS_guests" ]; then
|
||||
sed -i -e "s|/usr/lib/vmware/|${pkgdir}/usr/lib/vmware/|" "$srcdir/unlocker.py"
|
||||
fi
|
||||
}
|
||||
|
||||
package() {
|
||||
local vmware_installer_version=$(cat "$srcdir/extracted/vmware-installer/manifest.xml" | grep -oPm1 "(?<=<version>)[^<]+")
|
||||
|
||||
# Make directories and copy files.
|
||||
|
||||
mkdir -p \
|
||||
"$pkgdir/etc"/{pam.d,modprobe.d,vmware} \
|
||||
"$pkgdir/usr"/{share,bin} \
|
||||
"$pkgdir/usr/include/vmware-vix" \
|
||||
"$pkgdir/usr/lib"/{vmware/setup,vmware-vix,vmware-ovftool,vmware-installer/"$vmware_installer_version",modules-load.d} \
|
||||
"$pkgdir/usr/share"/{doc/vmware-vix,licenses/"$pkgname"} \
|
||||
"$pkgdir/var/lib/vmware/Shared VMs"
|
||||
|
||||
cd "$srcdir/extracted"
|
||||
|
||||
cp -r \
|
||||
vmware-workstation/share/* \
|
||||
vmware-workstation/man \
|
||||
vmware-network-editor-ui/share/* \
|
||||
vmware-player-app/share/* \
|
||||
"$pkgdir/usr/share"
|
||||
|
||||
cp -r \
|
||||
vmware-workstation/bin/* \
|
||||
vmware-vmx/{,s}bin/* \
|
||||
vmware-vix-core/bin/* \
|
||||
vmware-vprobe/bin/* \
|
||||
vmware-player-app/bin/* \
|
||||
"$pkgdir/usr/bin"
|
||||
|
||||
cp -r \
|
||||
vmware-workstation/lib/* \
|
||||
vmware-player-app/lib/* \
|
||||
vmware-vmx/{lib/*,roms} \
|
||||
vmware-vprobe/lib/* \
|
||||
vmware-usbarbitrator/bin \
|
||||
vmware-network-editor/lib \
|
||||
"$pkgdir/usr/lib/vmware"
|
||||
|
||||
cp -r \
|
||||
vmware-player-setup/vmware-config \
|
||||
"$pkgdir/usr/lib/vmware/setup"
|
||||
|
||||
cp -r \
|
||||
vmware-vix-lib-Workstation1700/lib/Workstation-17.0.0 \
|
||||
vmware-vix-core/{lib/*,vixwrapper-config.txt} \
|
||||
"$pkgdir/usr/lib/vmware-vix"
|
||||
|
||||
cp -r \
|
||||
vmware-vix-core/doc/* \
|
||||
"$pkgdir/usr/share/doc/vmware-vix"
|
||||
|
||||
cp -r \
|
||||
vmware-ovftool/* \
|
||||
"$pkgdir/usr/lib/vmware-ovftool"
|
||||
|
||||
cp -r \
|
||||
vmware-installer/{python,sopython,vmis,vmis-launcher,vmware-installer,vmware-installer.py} \
|
||||
"$pkgdir/usr/lib/vmware-installer/$vmware_installer_version"
|
||||
|
||||
cp -r \
|
||||
vmware-vix-core/include/* \
|
||||
"$pkgdir/usr/include/vmware-vix"
|
||||
|
||||
for isoimage in ${_isoimages[@]}
|
||||
do
|
||||
install -Dm 644 "vmware-tools-$isoimage/$isoimage.iso" "$pkgdir/usr/lib/vmware/isoimages/$isoimage.iso"
|
||||
done
|
||||
|
||||
# Add Windows Vista SP1 and SP2 ISO images
|
||||
install -Dm 644 "$srcdir/winVistaSP1.iso" "$pkgdir/usr/lib/vmware/isoimages/winVistaSP1.iso"
|
||||
install -Dm 644 "$srcdir/winVistaSP2.iso" "$pkgdir/usr/lib/vmware/isoimages/winVistaSP2.iso"
|
||||
|
||||
install -Dm 644 "vmware-workstation/doc/EULA" "$pkgdir/usr/share/doc/vmware-workstation/EULA"
|
||||
ln -s "/usr/share/doc/vmware-workstation/EULA" "$pkgdir/usr/share/licenses/$pkgname/VMware Workstation - EULA.txt"
|
||||
ln -s "/usr/lib/vmware-ovftool/vmware.eula" "$pkgdir/usr/share/licenses/$pkgname/VMware OVF Tool - EULA.txt"
|
||||
install -Dm 644 "vmware-workstation/doc"/open_source_licenses.txt "$pkgdir/usr/share/licenses/$pkgname/VMware Workstation open source license.txt"
|
||||
install -Dm 644 "vmware-workstation/doc"/ovftool_open_source_licenses.txt "$pkgdir/usr/share/licenses/$pkgname/VMware OVF Tool open source license.txt"
|
||||
install -Dm 644 "vmware-vix-core"/open_source_licenses.txt "$pkgdir/usr/share/licenses/$pkgname/VMware VIX open source license.txt"
|
||||
rm "$pkgdir/usr/lib/vmware-ovftool"/{vmware-eula.rtf,open_source_licenses.txt,manifest.xml}
|
||||
|
||||
install -d -m 755 "$pkgdir/usr/lib/vmware-installer/$vmware_installer_version"/{lib/lib,artwork}
|
||||
install -Dm 755 "$srcdir/configure-initscript.sh" "$pkgdir/usr/lib/vmware-installer/$vmware_installer_version/bin/configure-initscript.sh"
|
||||
|
||||
install -Dm 644 "vmware-vmx/etc/modprobe.d/modprobe-vmware-fuse.conf" "$pkgdir/etc/modprobe.d/vmware-fuse.conf"
|
||||
|
||||
install -Dm 644 vmware-vmx/extra/modules.xml "$pkgdir"/usr/lib/vmware/modules/modules.xml
|
||||
install -Dm 644 vmware-installer/bootstrap "$pkgdir"/etc/vmware-installer/bootstrap
|
||||
install -Dm 644 "$srcdir"/vmware-vix-bootstrap "$pkgdir"/etc/vmware-vix/bootstrap
|
||||
install -Dm 644 "$srcdir"/vmware-bootstrap "$pkgdir"/etc/vmware/bootstrap
|
||||
install -Dm 644 "$srcdir"/config "$pkgdir"/etc/vmware/config
|
||||
|
||||
if [ -z "$_remove_vmware_keymaps_dependency" ]; then
|
||||
rm -r "$pkgdir/usr/lib/vmware/xkeymap" # these files are provided by vmware-keymaps package
|
||||
fi
|
||||
|
||||
echo -e "vmw_vmci\nvmmon" > "$pkgdir/usr/lib/modules-load.d/vmware.conf"
|
||||
|
||||
for service_file in \
|
||||
vmware-networks-configuration.service \
|
||||
vmware-networks.service \
|
||||
vmware-usbarbitrator.service \
|
||||
vmware-networks.path \
|
||||
vmware-usbarbitrator.path
|
||||
do
|
||||
install -Dm 644 \
|
||||
"$srcdir/$service_file" \
|
||||
"$pkgdir/usr/lib/systemd/system/$service_file"
|
||||
done
|
||||
|
||||
|
||||
# Apply permissions where necessary.
|
||||
|
||||
chmod +x \
|
||||
"$pkgdir/usr/bin"/* \
|
||||
"$pkgdir/usr/lib/vmware/bin"/* \
|
||||
"$pkgdir/usr/lib/vmware/setup"/* \
|
||||
"$pkgdir/usr/lib/vmware/lib"/libvmware-gksu.so/gksu-run-helper \
|
||||
"$pkgdir/usr/lib/vmware-ovftool"/{ovftool,ovftool.bin} \
|
||||
"$pkgdir/usr/lib/vmware-installer/$vmware_installer_version"/{vmware-installer,vmis-launcher} \
|
||||
"$pkgdir/usr/lib/vmware-vix/setup"/*
|
||||
|
||||
chmod +s \
|
||||
"$pkgdir/usr/bin"/vmware-authd \
|
||||
"$pkgdir/usr/lib/vmware/bin"/{vmware-vmx,vmware-vmx-debug,vmware-vmx-stats}
|
||||
|
||||
|
||||
# Add symlinks the installer would create.
|
||||
|
||||
for link in \
|
||||
licenseTool \
|
||||
vmplayer \
|
||||
vmware \
|
||||
vmware-app-control \
|
||||
vmware-enter-serial \
|
||||
vmware-fuseUI \
|
||||
vmware-gksu \
|
||||
vmware-modconfig \
|
||||
vmware-modconfig-console \
|
||||
vmware-mount \
|
||||
vmware-netcfg \
|
||||
vmware-setup-helper \
|
||||
vmware-tray \
|
||||
vmware-vmblock-fuse \
|
||||
vmware-vprobe \
|
||||
vmware-zenity
|
||||
do
|
||||
ln -s /usr/lib/vmware/bin/appLoader "$pkgdir/usr/lib/vmware/bin/$link"
|
||||
done
|
||||
|
||||
for link in \
|
||||
vmrest
|
||||
do
|
||||
ln -s /usr/lib/vmware/bin/appLoader "$pkgdir/usr/bin/$link"
|
||||
done
|
||||
|
||||
for link in \
|
||||
vmware-fuseUI \
|
||||
vmware-mount \
|
||||
vmware-netcfg \
|
||||
vmware-usbarbitrator
|
||||
do
|
||||
ln -s /usr/lib/vmware/bin/$link "$pkgdir/usr/bin/$link"
|
||||
done
|
||||
|
||||
ln -s /usr/lib/vmware/icu "$pkgdir/etc/vmware/icu"
|
||||
ln -s /usr/lib/vmware-ovftool/ovftool "$pkgdir/usr/bin/ovftool"
|
||||
ln -s /usr/lib/vmware-vix/libvixAllProducts.so "$pkgdir/usr/lib/libvixAllProducts.so"
|
||||
|
||||
|
||||
# Replace placeholder "variables" with real paths.
|
||||
|
||||
for file in \
|
||||
gtk-3.0/gdk-pixbuf.loaders
|
||||
do
|
||||
sed -i 's,@@LIBCONF_DIR@@,/usr/lib/vmware/libconf,g' "$pkgdir/usr/lib/vmware/libconf/etc/$file"
|
||||
done
|
||||
|
||||
sed -i 's,@@BINARY@@,/usr/bin/vmware,' "$pkgdir/usr/share/applications/vmware-workstation.desktop"
|
||||
sed -i 's,@@BINARY@@,/usr/bin/vmplayer,' "$pkgdir/usr/share/applications/vmware-player.desktop"
|
||||
sed -i 's,@@BINARY@@,/usr/bin/vmware-netcfg,' "$pkgdir/usr/share/applications/vmware-netcfg.desktop"
|
||||
|
||||
sed \
|
||||
-e "s/@@VERSION@@/$vmware_installer_version/" \
|
||||
-e "s,@@VMWARE_INSTALLER@@,/usr/lib/vmware-installer/$vmware_installer_version," \
|
||||
-i "$pkgdir/etc/vmware-installer/bootstrap"
|
||||
|
||||
|
||||
# Patch up the VMware kernel sources and configure DKMS.
|
||||
|
||||
dkms_dir="$pkgdir/usr/src/$pkgname-$_pkgver"
|
||||
|
||||
install -Dm 644 "$srcdir/Makefile" "$dkms_dir/Makefile"
|
||||
install -Dm 644 "$srcdir/dkms.conf.in" "$dkms_dir/dkms.conf"
|
||||
|
||||
sed \
|
||||
-e "s/@PKGNAME@/$pkgname/g" \
|
||||
-e "s/@PKGVER@/$_pkgver/g" \
|
||||
-i "$dkms_dir/dkms.conf"
|
||||
|
||||
for module in vmmon vmnet; do
|
||||
tar -xf "vmware-vmx/lib/modules/source/$module.tar" -C "$dkms_dir"
|
||||
msg "Patching $module module for DKMS"
|
||||
patch -p2 --read-only=ignore --directory="$dkms_dir/$module-only" < "$srcdir/$module.patch"
|
||||
done
|
||||
patch -p1 --read-only=ignore --directory="$dkms_dir/" < "$srcdir/linux6_15.patch"
|
||||
|
||||
rm -r "$pkgdir/usr/lib/vmware/modules/source"
|
||||
|
||||
if [ -n "$_enable_macOS_guests" ]; then
|
||||
msg "Patching VMware to enable macOS guest support"
|
||||
python3 "$srcdir/unlocker.py" > /dev/null
|
||||
|
||||
for isoimage in ${_fusion_isoimages[@]}
|
||||
do
|
||||
install -Dm 644 "$srcdir/$isoimage.iso" "$pkgdir/usr/lib/vmware/isoimages/$isoimage.iso"
|
||||
done
|
||||
|
||||
msg "Patching EFI firmwares to disable macOS server checking"
|
||||
_efi_arch=("32" "64" "20-32" "20-64")
|
||||
for arch in ${_efi_arch[@]}
|
||||
do
|
||||
uefipatch "$pkgdir/usr/lib/vmware/roms/EFI${arch}.ROM" "$srcdir/efi-patches.txt" -o "$pkgdir/usr/lib/vmware/roms/EFI${arch}.ROM" > /dev/null
|
||||
done
|
||||
fi
|
||||
|
||||
_create_database_file
|
||||
|
||||
# Define some environment variables for VMware and remove the tests about kernel modules
|
||||
install -Dm 644 "$srcdir/vmware-environment.sh" "$pkgdir/etc/conf.d/vmware"
|
||||
for program in vmware vmplayer vmware-tray; do
|
||||
sed -e '/export PRODUCT_NAME/asource /etc/conf.d/vmware' \
|
||||
-e 's/if "$BINDIR"\/vmware-modconfig --appname=.*/if true ||/' \
|
||||
-i "$pkgdir/usr/bin/$program"
|
||||
done
|
||||
|
||||
# Add StartupWMClass attribute to desktop files
|
||||
sed -i '/^StartupNotify=.*/a StartupWMClass=vmware' "$pkgdir/usr/share/applications/vmware-workstation.desktop"
|
||||
sed -i '/^StartupNotify=.*/a StartupWMClass=vmplayer' "$pkgdir/usr/share/applications/vmware-player.desktop"
|
||||
sed -i '/^StartupNotify=.*/a StartupWMClass=vmware-netcfg' "$pkgdir/usr/share/applications/vmware-netcfg.desktop"
|
||||
}
|
||||
21
config
Normal file
21
config
Normal file
@@ -0,0 +1,21 @@
|
||||
.encoding = "UTF-8"
|
||||
product.name = "VMware Player"
|
||||
product.version = "17.0.0"
|
||||
product.buildNumber = "20800274"
|
||||
workstation.product.version = "17.0.0"
|
||||
player.product.version = "17.0.0"
|
||||
vix.config.version = "1"
|
||||
bindir = "/usr/bin"
|
||||
libdir = "/usr/lib/vmware"
|
||||
vix.libdir = "/usr/lib/vmware-vix"
|
||||
initscriptdir = "/usr/lib/systemd/scripts"
|
||||
vmware.fullpath = "/usr/bin/vmware"
|
||||
authd.fullpath = "/usr/bin/vmware-authd"
|
||||
gksu.rootMethod = "su"
|
||||
NETWORKING = "yes"
|
||||
installerDefaults.autoSoftwareUpdateEnabled = "no"
|
||||
installerDefaults.dataCollectionEnabled = "no"
|
||||
installerDefaults.componentDownloadEnabled = "no"
|
||||
installerDefaults.transferVersion = "1"
|
||||
acceptOVFEULA = "yes"
|
||||
acceptEULA = "yes"
|
||||
91
configure-initscript.sh
Executable file
91
configure-initscript.sh
Executable file
@@ -0,0 +1,91 @@
|
||||
#!/bin/bash
|
||||
|
||||
action="$1" # add, remove, or status
|
||||
serviceName="$2"
|
||||
startLevel="$3"
|
||||
stopLevel="$4"
|
||||
|
||||
# Notes:
|
||||
# This package does not need a vmware service to make VMware usable, so this script says that vmware service is always started.
|
||||
# vmware-workstation-server service is named vmware-hostd in this package.
|
||||
|
||||
#echo $serviceName && exit # DEBUG
|
||||
|
||||
addService() {
|
||||
if [ "$serviceName" != "vmware" ]; then
|
||||
systemctl start $serviceName.service
|
||||
systemctl enable $serviceName.service
|
||||
fi
|
||||
}
|
||||
|
||||
removeService() {
|
||||
if [ "$serviceName" != "vmware" ]; then
|
||||
systemctl stop $serviceName.service
|
||||
systemctl disable $serviceName.service
|
||||
fi
|
||||
}
|
||||
|
||||
# Check to see whether a program is set to start on boot.
|
||||
checkService() {
|
||||
if [ "$serviceName" = "vmware" ]; then
|
||||
retval=0
|
||||
else
|
||||
systemctl is-active $serviceName.service > /dev/null
|
||||
retval=$?
|
||||
fi
|
||||
|
||||
if [ "$retval" = "0" ]; then
|
||||
echo 'on'
|
||||
exit 5
|
||||
else
|
||||
echo 'off'
|
||||
exit 6
|
||||
fi
|
||||
}
|
||||
|
||||
usage() {
|
||||
echo "Syntax for this script is as follows:"
|
||||
echo ""
|
||||
echo " $0 <action> <serviceName>"
|
||||
echo ""
|
||||
echo " action - add or remove"
|
||||
echo " serviceName - The name of the service"
|
||||
echo ""
|
||||
echo ""
|
||||
echo " $0 status <serviceName>"
|
||||
echo " serviceName - The name of the service"
|
||||
echo ""
|
||||
}
|
||||
|
||||
|
||||
|
||||
case $action in
|
||||
add)
|
||||
# Don't allow any empty arguments for add
|
||||
if [ "$1" = "" ] || [ "$2" = "" ] || [ "$3" = "" ] || [ "$4" = "" ]; then
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
addService
|
||||
;;
|
||||
remove)
|
||||
# Don't allow any empty arguments for remove
|
||||
if [ "$1" = "" ] || [ "$2" = "" ] || [ "$3" = "" ] || [ "$4" = "" ]; then
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
removeService
|
||||
;;
|
||||
status)
|
||||
# We only need the serviceName to check status
|
||||
if [ "$1" = "" ] || [ "$2" = "" ]; then
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
checkService
|
||||
;;
|
||||
*)
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
15
dkms.conf.in
Normal file
15
dkms.conf.in
Normal file
@@ -0,0 +1,15 @@
|
||||
# Linux DKMS config script for the VMware guest kernel modules
|
||||
|
||||
PACKAGE_NAME="@PKGNAME@"
|
||||
PACKAGE_VERSION="@PKGVER@"
|
||||
MAKE="make KVERSION=$kernelver SRCDIR=/usr/src/$PACKAGE_NAME-$PACKAGE_VERSION"
|
||||
CLEAN=true
|
||||
AUTOINSTALL="YES"
|
||||
|
||||
BUILT_MODULE_NAME[0]="vmmon"
|
||||
BUILT_MODULE_LOCATION[0]='vmmon-only'
|
||||
DEST_MODULE_LOCATION[0]="/kernel/drivers/misc"
|
||||
|
||||
BUILT_MODULE_NAME[1]="vmnet"
|
||||
BUILT_MODULE_LOCATION[1]='vmnet-only'
|
||||
DEST_MODULE_LOCATION[1]="/kernel/drivers/net"
|
||||
25
efi-patches.txt
Normal file
25
efi-patches.txt
Normal file
@@ -0,0 +1,25 @@
|
||||
# Patch string format
|
||||
# FileGuid SectionType PatchType:FindPatternOrOffset:ReplacePattern
|
||||
# Please ensure that the latest symbol in patch string is space
|
||||
|
||||
# Possible section types:
|
||||
# PE32 image 10
|
||||
# Position-independent code 11
|
||||
# TE Image 12
|
||||
# DXE Dependency 13
|
||||
# Version information 14
|
||||
# User interface string 15
|
||||
# 16-bit code 16
|
||||
# Guided freeform 18
|
||||
# Raw data 19
|
||||
# PEI Dependency 1B
|
||||
# SMM Dependency 1C
|
||||
# Please do not try another section types, it can make the resulting image broken
|
||||
|
||||
# Possible patch types:
|
||||
# P - pattern-based, first parameter is a pattern to find, second - a pattern to replace
|
||||
# O - offset-based, first parameter is hexadecimal offset, second - a pattern to replace
|
||||
# Patterns can have . as "any possible value" symbol
|
||||
|
||||
# VMware remove macOS Server check ServerVersion.plist -> SystemVersion.plist
|
||||
961578FE-B6B7-44C3-AF35-6BC705CD3B3F 10 P:530065007200760065007200560065007200730069006F006E002E0070006C00690073007400:530079007300740065006D00560065007200730069006F006E002E0070006C00690073007400
|
||||
32
linux6_15.patch
Normal file
32
linux6_15.patch
Normal file
@@ -0,0 +1,32 @@
|
||||
--- a/vmmon-only/linux/driver.c
|
||||
+++ b/vmmon-only/linux/driver.c
|
||||
@@ -346,7 +346,7 @@
|
||||
|
||||
Log("Module %s: unloaded\n", vmmon_miscdev.name);
|
||||
|
||||
- del_timer_sync(&tscTimer);
|
||||
+ timer_delete_sync(&tscTimer);
|
||||
|
||||
Vmx86_CleanupHVIOBitmap();
|
||||
Task_Terminate();
|
||||
--- a/vmmon-only/linux/hostif.c
|
||||
+++ b/vmmon-only/linux/hostif.c
|
||||
@@ -1995,7 +1995,7 @@
|
||||
void
|
||||
HostIF_CleanupUptime(void)
|
||||
{
|
||||
- del_timer_sync(&uptimeState.timer);
|
||||
+ timer_delete_sync(&uptimeState.timer);
|
||||
}
|
||||
|
||||
|
||||
--- a/vmmon-only/Makefile.kernel
|
||||
+++ b/vmmon-only/Makefile.kernel
|
||||
@@ -21,7 +21,7 @@
|
||||
CC_OPTS += -DVMMON -DVMCORE
|
||||
|
||||
INCLUDE := -I$(SRCROOT)/include -I$(SRCROOT)/include/x86 -I$(SRCROOT)/common -I$(SRCROOT)/linux
|
||||
-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE)
|
||||
+ccflags-y := $(CC_OPTS) $(INCLUDE)
|
||||
|
||||
obj-m += $(DRIVER).o
|
||||
387
unlocker.py
Normal file
387
unlocker.py
Normal file
@@ -0,0 +1,387 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
vSMC Header Structure
|
||||
Offset Length Struct Type Description
|
||||
----------------------------------------
|
||||
0x00/00 0x08/08 Q ptr Offset to key table
|
||||
0x08/08 0x04/4 I int Number of private keys
|
||||
0x0C/12 0x04/4 I int Number of public keys
|
||||
|
||||
vSMC Key Data Structure
|
||||
Offset Length Struct Type Description
|
||||
----------------------------------------
|
||||
0x00/00 0x04/04 4s int Key name (byte reversed e.g. #KEY is YEK#)
|
||||
0x04/04 0x01/01 B byte Length of returned data
|
||||
0x05/05 0x04/04 4s int Data type (byte reversed e.g. ui32 is 23iu)
|
||||
0x09/09 0x01/01 B byte Flag R/W
|
||||
0x0A/10 0x06/06 6x byte Padding
|
||||
0x10/16 0x08/08 Q ptr Internal VMware routine
|
||||
0x18/24 0x30/48 48B byte Data
|
||||
"""
|
||||
|
||||
import codecs
|
||||
import os
|
||||
import re
|
||||
import struct
|
||||
import sys
|
||||
|
||||
if sys.version_info < (3, 6):
|
||||
sys.stderr.write('You need Python 3.6 or later\n')
|
||||
sys.exit(1)
|
||||
|
||||
# Setup imports depending on whether IronPython or CPython
|
||||
if sys.platform in ('cli', 'win32'):
|
||||
# noinspection PyUnresolvedReferences
|
||||
from winreg import *
|
||||
|
||||
|
||||
def bytetohex(data):
|
||||
return ''.join('{:02X} '.format(c) for c in data)
|
||||
|
||||
|
||||
def joinpath(folder, filename):
|
||||
return os.path.join(folder, filename)
|
||||
|
||||
|
||||
def printkey(i, offset, smc_key, smc_data):
|
||||
print(str(i + 1).zfill(3)
|
||||
+ ' ' + hex(offset)
|
||||
+ ' ' + smc_key[0][::-1].decode('UTF-8')
|
||||
+ ' ' + str(smc_key[1]).zfill(2)
|
||||
+ ' ' + smc_key[2][::-1].replace(b'\x00', b' ').decode('UTF-8')
|
||||
+ ' ' + '{0:#0{1}x}'.format(smc_key[3], 4)
|
||||
+ ' ' + hex(smc_key[4])
|
||||
+ ' ' + bytetohex(smc_data))
|
||||
|
||||
|
||||
def set_bit(value, bit):
|
||||
return value | (1 << bit)
|
||||
|
||||
|
||||
def clear_bit(value, bit):
|
||||
return value & ~(1 << bit)
|
||||
|
||||
|
||||
def test_bit(value, bit):
|
||||
return value & bit
|
||||
|
||||
|
||||
E_CLASS64 = 2
|
||||
E_SHT_RELA = 4
|
||||
|
||||
|
||||
# noinspection PyUnusedLocal
|
||||
def patchelf(f, oldoffset, newoffset):
|
||||
f.seek(0)
|
||||
magic = f.read(4)
|
||||
if not magic == b'\x7fELF':
|
||||
raise Exception('Magic number does not match')
|
||||
|
||||
ei_class = struct.unpack('=B', f.read(1))[0]
|
||||
if ei_class != E_CLASS64:
|
||||
raise Exception('Not 64bit elf header: ' + ei_class)
|
||||
|
||||
f.seek(40)
|
||||
e_shoff = struct.unpack('=Q', f.read(8))[0]
|
||||
f.seek(58)
|
||||
e_shentsize = struct.unpack('=H', f.read(2))[0]
|
||||
e_shnum = struct.unpack('=H', f.read(2))[0]
|
||||
e_shstrndx = struct.unpack('=H', f.read(2))[0]
|
||||
|
||||
print('e_shoff: 0x{:x} e_shentsize: 0x{:x} e_shnum:0x{:x} e_shstrndx:0x{:x}'.format(e_shoff, e_shentsize,
|
||||
e_shnum, e_shstrndx))
|
||||
|
||||
for i in range(0, e_shnum):
|
||||
f.seek(e_shoff + i * e_shentsize)
|
||||
e_sh = struct.unpack('=LLQQQQLLQQ', f.read(e_shentsize))
|
||||
e_sh_name = e_sh[0]
|
||||
e_sh_type = e_sh[1]
|
||||
e_sh_offset = e_sh[4]
|
||||
e_sh_size = e_sh[5]
|
||||
e_sh_entsize = e_sh[9]
|
||||
if e_sh_type == E_SHT_RELA:
|
||||
e_sh_nument = int(e_sh_size / e_sh_entsize)
|
||||
print('RELA at 0x{:x} with {:d} entries'.format(e_sh_offset, e_sh_nument))
|
||||
for j in range(0, e_sh_nument):
|
||||
f.seek(e_sh_offset + e_sh_entsize * j)
|
||||
rela = struct.unpack('=QQq', f.read(e_sh_entsize))
|
||||
r_offset = rela[0]
|
||||
r_info = rela[1]
|
||||
r_addend = rela[2]
|
||||
if r_addend == oldoffset:
|
||||
r_addend = newoffset
|
||||
f.seek(e_sh_offset + e_sh_entsize * j)
|
||||
f.write(struct.pack('=QQq', r_offset, r_info, r_addend))
|
||||
print('Relocation modified at: ' + hex(e_sh_offset + e_sh_entsize * j))
|
||||
|
||||
|
||||
def patchkeys(f, key):
|
||||
# Setup struct pack string
|
||||
key_pack = '=4sB4sB6xQ'
|
||||
smc_old_memptr = 0
|
||||
smc_new_memptr = 0
|
||||
|
||||
# Do Until OSK1 read
|
||||
i = 0
|
||||
while True:
|
||||
|
||||
# Read key into struct str and data byte str
|
||||
offset = key + (i * 72)
|
||||
f.seek(offset)
|
||||
smc_key = struct.unpack(key_pack, f.read(24))
|
||||
smc_data = f.read(smc_key[1])
|
||||
|
||||
# Reset pointer to beginning of key entry
|
||||
f.seek(offset)
|
||||
|
||||
if smc_key[0] == b'SKL+':
|
||||
# Use the +LKS data routine for OSK0/1
|
||||
smc_new_memptr = smc_key[4]
|
||||
print('+LKS Key: ')
|
||||
printkey(i, offset, smc_key, smc_data)
|
||||
|
||||
elif smc_key[0] == b'0KSO':
|
||||
# Write new data routine pointer from +LKS
|
||||
print('OSK0 Key Before:')
|
||||
printkey(i, offset, smc_key, smc_data)
|
||||
smc_old_memptr = smc_key[4]
|
||||
f.seek(offset)
|
||||
f.write(struct.pack(key_pack, smc_key[0], smc_key[1], smc_key[2], smc_key[3], smc_new_memptr))
|
||||
f.flush()
|
||||
|
||||
# Write new data for key
|
||||
f.seek(offset + 24)
|
||||
smc_new_data = codecs.encode('bheuneqjbexolgurfrjbeqfthneqrqcy', 'rot_13')
|
||||
f.write(smc_new_data.encode('UTF-8'))
|
||||
f.flush()
|
||||
|
||||
# Re-read and print key
|
||||
f.seek(offset)
|
||||
smc_key = struct.unpack(key_pack, f.read(24))
|
||||
smc_data = f.read(smc_key[1])
|
||||
print('OSK0 Key After:')
|
||||
printkey(i, offset, smc_key, smc_data)
|
||||
|
||||
elif smc_key[0] == b'1KSO':
|
||||
# Write new data routine pointer from +LKS
|
||||
print('OSK1 Key Before:')
|
||||
printkey(i, offset, smc_key, smc_data)
|
||||
smc_old_memptr = smc_key[4]
|
||||
f.seek(offset)
|
||||
f.write(struct.pack(key_pack, smc_key[0], smc_key[1], smc_key[2], smc_key[3], smc_new_memptr))
|
||||
f.flush()
|
||||
|
||||
# Write new data for key
|
||||
f.seek(offset + 24)
|
||||
smc_new_data = codecs.encode('rnfrqbagfgrny(p)NccyrPbzchgreVap', 'rot_13')
|
||||
f.write(smc_new_data.encode('UTF-8'))
|
||||
f.flush()
|
||||
|
||||
# Re-read and print key
|
||||
f.seek(offset)
|
||||
smc_key = struct.unpack(key_pack, f.read(24))
|
||||
smc_data = f.read(smc_key[1])
|
||||
print('OSK1 Key After:')
|
||||
printkey(i, offset, smc_key, smc_data)
|
||||
|
||||
# Finished so get out of loop
|
||||
break
|
||||
|
||||
# elif smc_key[0] == b'WPPK':
|
||||
# # Set the old SMC password as an addtional marker that vmx has been patched
|
||||
# # This has no functional value except for checking status
|
||||
# print('KPPW Key Before:')
|
||||
# printkey(i, offset, smc_key, smc_data)
|
||||
# f.seek(offset + 24)
|
||||
# f.write('SpecialisRevelio'.encode('UTF-8'))
|
||||
#
|
||||
# # Re-read and print key
|
||||
# f.seek(offset)
|
||||
# smc_key = struct.unpack(key_pack, f.read(24))
|
||||
# smc_data = f.read(smc_key[1])
|
||||
# print('KPPW Key After:')
|
||||
# printkey(i, offset, smc_key, smc_data)
|
||||
|
||||
else:
|
||||
pass
|
||||
|
||||
i += 1
|
||||
return smc_old_memptr, smc_new_memptr
|
||||
|
||||
|
||||
def patchsmc(name, sharedobj):
|
||||
with open(name, 'r+b') as f:
|
||||
|
||||
smc_old_memptr = 0
|
||||
smc_new_memptr = 0
|
||||
|
||||
# Read file into string variable
|
||||
vmx = f.read()
|
||||
|
||||
print('File: ' + name + '\n')
|
||||
|
||||
# Setup hex string for vSMC headers
|
||||
# These are the private and public key counts
|
||||
smc_header_v0 = b'\xF2\x00\x00\x00\xF0\x00\x00\x00'
|
||||
smc_header_v1 = b'\xB4\x01\x00\x00\xB0\x01\x00\x00'
|
||||
|
||||
# Setup hex string for #KEY key
|
||||
key_key = b'\x59\x45\x4B\x23\x04\x32\x33\x69\x75'
|
||||
|
||||
# Setup hex string for $Adr key
|
||||
adr_key = b'\x72\x64\x41\x24\x04\x32\x33\x69\x75'
|
||||
|
||||
# Find the vSMC headers
|
||||
smc_header_v0_offset = vmx.find(smc_header_v0) - 8
|
||||
smc_header_v1_offset = vmx.find(smc_header_v1) - 8
|
||||
|
||||
# Find '#KEY' keys
|
||||
smc_key0 = vmx.find(key_key)
|
||||
smc_key1 = vmx.rfind(key_key)
|
||||
|
||||
# Find '$Adr' key table
|
||||
smc_adr = vmx.find(adr_key)
|
||||
|
||||
# Print vSMC0 tables and keys
|
||||
print('appleSMCTableV0 (smc.version = "0")')
|
||||
print('appleSMCTableV0 Address : ' + hex(smc_header_v0_offset))
|
||||
print('appleSMCTableV0 Private Key #: 0xF2/242')
|
||||
print('appleSMCTableV0 Public Key #: 0xF0/240')
|
||||
|
||||
if (smc_adr - smc_key0) != 72:
|
||||
print('appleSMCTableV0 Table : ' + hex(smc_key0))
|
||||
smc_old_memptr, smc_new_memptr = patchkeys(f, smc_key0)
|
||||
elif (smc_adr - smc_key1) != 72:
|
||||
print('appleSMCTableV0 Table : ' + hex(smc_key1))
|
||||
smc_old_memptr, smc_new_memptr = patchkeys(f, smc_key1)
|
||||
|
||||
print()
|
||||
|
||||
# Print vSMC1 tables and keys
|
||||
print('appleSMCTableV1 (smc.version = "1")')
|
||||
print('appleSMCTableV1 Address : ' + hex(smc_header_v1_offset))
|
||||
print('appleSMCTableV1 Private Key #: 0x01B4/436')
|
||||
print('appleSMCTableV1 Public Key #: 0x01B0/432')
|
||||
|
||||
if (smc_adr - smc_key0) == 72:
|
||||
print('appleSMCTableV1 Table : ' + hex(smc_key0))
|
||||
smc_old_memptr, smc_new_memptr = patchkeys(f, smc_key0)
|
||||
elif (smc_adr - smc_key1) == 72:
|
||||
print('appleSMCTableV1 Table : ' + hex(smc_key1))
|
||||
smc_old_memptr, smc_new_memptr = patchkeys(f, smc_key1)
|
||||
|
||||
print()
|
||||
|
||||
# Find matching RELA record in .rela.dyn in ESXi ELF files
|
||||
# This is temporary code until proper ELF parsing written
|
||||
if sharedobj:
|
||||
print('Modifying RELA records from: ' + hex(smc_old_memptr) + ' to ' + hex(smc_new_memptr))
|
||||
patchelf(f, smc_old_memptr, smc_new_memptr)
|
||||
|
||||
# Tidy up
|
||||
f.flush()
|
||||
f.close()
|
||||
|
||||
|
||||
def patchbase(name):
|
||||
# Patch file
|
||||
print('GOS Patching: ' + name)
|
||||
f = open(name, 'r+b')
|
||||
|
||||
# Entry to search for in GOS table
|
||||
# Should work for Workstation 12-15...
|
||||
darwin = re.compile(
|
||||
b'\x10\x00\x00\x00[\x10|\x20]\x00\x00\x00[\x01|\x02]\x00\x00\x00\x00\x00\x00\x00'
|
||||
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
|
||||
|
||||
# Read file into string variable
|
||||
base = f.read()
|
||||
|
||||
# Loop through each entry and set top bit
|
||||
# 0xBE --> 0xBF (WKS 12/13)
|
||||
# 0x3E --> 0x3F (WKS 14+)
|
||||
for m in darwin.finditer(base):
|
||||
offset = m.start()
|
||||
f.seek(offset + 32)
|
||||
flag = ord(f.read(1))
|
||||
flag = set_bit(flag, 0)
|
||||
# flag = chr(flag)
|
||||
f.seek(offset + 32)
|
||||
f.write(bytes([flag]))
|
||||
print('GOS Patched flag @: ' + hex(offset))
|
||||
|
||||
# Tidy up
|
||||
f.flush()
|
||||
f.close()
|
||||
print('GOS Patched: ' + name)
|
||||
|
||||
|
||||
def patchvmkctl(name):
|
||||
# Patch file
|
||||
print('smcPresent Patching: ' + name)
|
||||
f = open(name, 'r+b')
|
||||
|
||||
# Read file into string variable
|
||||
vmkctl = f.read()
|
||||
applesmc = vmkctl.find(b'applesmc')
|
||||
f.seek(applesmc)
|
||||
f.write(b'vmkernel')
|
||||
|
||||
# Tidy up
|
||||
f.flush()
|
||||
f.close()
|
||||
print('smcPresent Patched: ' + name)
|
||||
|
||||
|
||||
# noinspection PyUnresolvedReferences
|
||||
def main():
|
||||
# Work around absent Platform module on VMkernel
|
||||
if os.name == 'nt' or os.name == 'cli':
|
||||
osname = 'windows'
|
||||
else:
|
||||
osname = os.uname()[0].lower()
|
||||
|
||||
# vmwarebase = ''
|
||||
vmx_so = False
|
||||
|
||||
# Setup default paths
|
||||
if osname == 'linux':
|
||||
# TODO: Dynamically find Linux installation
|
||||
# Path the install is stored in /etc/vmware/config
|
||||
# libdir = "/usr/lib/vmware"
|
||||
vmx_path = '/usr/lib/vmware/bin/'
|
||||
vmx = joinpath(vmx_path, 'vmware-vmx')
|
||||
vmx_debug = joinpath(vmx_path, 'vmware-vmx-debug')
|
||||
vmx_stats = joinpath(vmx_path, 'vmware-vmx-stats')
|
||||
vmx_so = True
|
||||
if os.path.isfile('/usr/lib/vmware/lib/libvmwarebase.so/libvmwarebase.so'):
|
||||
vmwarebase = '/usr/lib/vmware/lib/libvmwarebase.so/libvmwarebase.so'
|
||||
else:
|
||||
vmwarebase = '/usr/lib/vmware/lib/libvmwarebase.so.0/libvmwarebase.so.0'
|
||||
|
||||
elif osname == 'windows':
|
||||
reg = ConnectRegistry(None, HKEY_LOCAL_MACHINE)
|
||||
key = OpenKey(reg, r'SOFTWARE\Wow6432Node\VMware, Inc.\VMware Workstation')
|
||||
vmwarebase_path = QueryValueEx(key, 'InstallPath')[0]
|
||||
vmx_path = QueryValueEx(key, 'InstallPath64')[0]
|
||||
vmx = joinpath(vmx_path, 'vmware-vmx.exe')
|
||||
vmx_debug = joinpath(vmx_path, 'vmware-vmx-debug.exe')
|
||||
vmx_stats = joinpath(vmx_path, 'vmware-vmx-stats.exe')
|
||||
vmwarebase = joinpath(vmwarebase_path, 'vmwarebase.dll')
|
||||
|
||||
else:
|
||||
print('Unknown Operating System: ' + osname)
|
||||
return
|
||||
|
||||
# Patch the vmx executables skipping stats version for Player
|
||||
patchsmc(vmx, vmx_so)
|
||||
patchsmc(vmx_debug, vmx_so)
|
||||
if os.path.isfile(vmx_stats):
|
||||
patchsmc(vmx_stats, vmx_so)
|
||||
|
||||
# Patch vmwarebase for Workstation and Player
|
||||
patchbase(vmwarebase)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
26
vmmon.patch
Normal file
26
vmmon.patch
Normal file
@@ -0,0 +1,26 @@
|
||||
--- a/vmmon/Makefile
|
||||
+++ b/vmmon/Makefile
|
||||
@@ -43,7 +43,11 @@
|
||||
endif
|
||||
|
||||
|
||||
+ifdef KVERSION
|
||||
+VM_UNAME = $(KVERSION)
|
||||
+else
|
||||
VM_UNAME = $(shell uname -r)
|
||||
+endif
|
||||
|
||||
# Header directory for the running kernel
|
||||
ifdef LINUXINCLUDE
|
||||
Fix from https://communities.vmware.com/t5/VMware-Workstation-Pro/Workstation-17-5-0-vmware-clk-spinning-on-CPU-when-Linux-VMs-are/m-p/2996282
|
||||
--- a/vmmon-only/linux/hostif.c
|
||||
+++ b/vmmon-only/linux/hostif.c
|
||||
@@ -3351,7 +3351,7 @@
|
||||
* threads running in the monitor on all physical CPUs.
|
||||
*/
|
||||
|
||||
- if (rate > MIN_RATE) {
|
||||
+ if (false) {
|
||||
if (!linuxState.fastClockThread) {
|
||||
struct task_struct *rtcTask;
|
||||
|
||||
71
vmnet.patch
Normal file
71
vmnet.patch
Normal file
@@ -0,0 +1,71 @@
|
||||
--- a/vmnet/Makefile
|
||||
+++ b/vmnet/Makefile
|
||||
@@ -43,7 +43,11 @@
|
||||
endif
|
||||
|
||||
|
||||
+ifdef KVERSION
|
||||
+VM_UNAME = $(KVERSION)
|
||||
+else
|
||||
VM_UNAME = $(shell uname -r)
|
||||
+endif
|
||||
|
||||
# Header directory for the running kernel
|
||||
ifdef LINUXINCLUDE
|
||||
--- a/vmnet/driver.c
|
||||
+++ b/vmnet/driver.c
|
||||
@@ -268,7 +268,7 @@
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
- * init_module --
|
||||
+ * LinuxDriverInit --
|
||||
*
|
||||
* linux module entry point. Called by /sbin/insmod command.
|
||||
* Initializes module and Registers this driver for a
|
||||
@@ -285,7 +285,7 @@
|
||||
*/
|
||||
|
||||
int
|
||||
-init_module(void)
|
||||
+LinuxDriverInit(void)
|
||||
{
|
||||
int retval;
|
||||
|
||||
@@ -347,7 +347,7 @@
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
- * cleanup_module --
|
||||
+ * LinuxDriverExit --
|
||||
*
|
||||
* Called by /sbin/rmmod. Unregisters this driver for a
|
||||
* vnet major #, and deinitializes the modules. The 64-bit
|
||||
@@ -364,7 +364,7 @@
|
||||
*/
|
||||
|
||||
void
|
||||
-cleanup_module(void)
|
||||
+LinuxDriverExit(void)
|
||||
{
|
||||
unregister_chrdev(VNET_MAJOR_NUMBER, "vmnet");
|
||||
VNetProtoUnregister();
|
||||
@@ -1659,3 +1659,5 @@
|
||||
* by default (i.e., neither mkinitrd nor modprobe will accept it).
|
||||
*/
|
||||
MODULE_INFO(supported, "external");
|
||||
+module_init(LinuxDriverInit);
|
||||
+module_exit(LinuxDriverExit);
|
||||
--- a/vmnet/userif.c
|
||||
+++ b/vmnet/userif.c
|
||||
Fixing VMWare Player on Linux when using DHCP addresses: https://www.nikhef.nl/~janjust/vmnet/
|
||||
@@ -1030,6 +1030,9 @@
|
||||
userIf = (VNetUserIF *)port->jack.private;
|
||||
hubJack = port->jack.peer;
|
||||
|
||||
+ /* never send link down events */
|
||||
+ if (!linkUp) return 0;
|
||||
+
|
||||
if (port->jack.state == FALSE || hubJack == NULL) {
|
||||
return -EINVAL;
|
||||
}
|
||||
11
vmware-bootstrap
Normal file
11
vmware-bootstrap
Normal file
@@ -0,0 +1,11 @@
|
||||
PREFIX="/usr"
|
||||
BINDIR="/usr/bin"
|
||||
SBINDIR="/usr/sbin"
|
||||
LIBDIR="/usr/lib"
|
||||
DATADIR="/usr/share"
|
||||
SYSCONFDIR="/etc"
|
||||
DOCDIR="/usr/share/doc"
|
||||
MANDIR="/usr/share/man"
|
||||
INCLUDEDIR="/usr/include"
|
||||
INITDIR=""
|
||||
INITSCRIPTDIR="/usr/lib/systemd/scripts"
|
||||
2
vmware-environment.sh
Normal file
2
vmware-environment.sh
Normal file
@@ -0,0 +1,2 @@
|
||||
# Uncomment the line below if you have a problem of incompatible libraries
|
||||
#export VMWARE_USE_SHIPPED_LIBS=yes
|
||||
9
vmware-networks-configuration.service
Normal file
9
vmware-networks-configuration.service
Normal file
@@ -0,0 +1,9 @@
|
||||
[Unit]
|
||||
Description=VMware Networks Configuration Generation
|
||||
ConditionPathExists=!/etc/vmware/networking
|
||||
|
||||
[Service]
|
||||
UMask=0077
|
||||
ExecStart=/usr/bin/vmware-networks --postinstall vmware-player,0,1
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
8
vmware-networks.path
Normal file
8
vmware-networks.path
Normal file
@@ -0,0 +1,8 @@
|
||||
[Unit]
|
||||
Description=Monitor to Load-On-Demand the VMware Networks service
|
||||
|
||||
[Path]
|
||||
PathExistsGlob=/var/run/vmware/*/*
|
||||
|
||||
[Install]
|
||||
WantedBy=paths.target
|
||||
13
vmware-networks.service
Normal file
13
vmware-networks.service
Normal file
@@ -0,0 +1,13 @@
|
||||
[Unit]
|
||||
Description=VMware Networks
|
||||
Wants=vmware-networks-configuration.service
|
||||
After=vmware-networks-configuration.service
|
||||
|
||||
[Service]
|
||||
Type=forking
|
||||
ExecStartPre=-/sbin/modprobe vmnet
|
||||
ExecStart=/usr/bin/vmware-networks --start
|
||||
ExecStop=/usr/bin/vmware-networks --stop
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
8
vmware-usbarbitrator.path
Normal file
8
vmware-usbarbitrator.path
Normal file
@@ -0,0 +1,8 @@
|
||||
[Unit]
|
||||
Description=Monitor to Load-On-Demand the VMware USB Arbitrator
|
||||
|
||||
[Path]
|
||||
PathExistsGlob=/var/run/vmware/*/*
|
||||
|
||||
[Install]
|
||||
WantedBy=paths.target
|
||||
8
vmware-usbarbitrator.service
Normal file
8
vmware-usbarbitrator.service
Normal file
@@ -0,0 +1,8 @@
|
||||
[Unit]
|
||||
Description=VMware USB Arbitrator
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/lib/vmware/bin/vmware-usbarbitrator -f
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
2
vmware-vix-bootstrap
Normal file
2
vmware-vix-bootstrap
Normal file
@@ -0,0 +1,2 @@
|
||||
BINDIR="/usr/bin"
|
||||
|
||||
29
vmware-workstation.install
Normal file
29
vmware-workstation.install
Normal file
@@ -0,0 +1,29 @@
|
||||
post_install() {
|
||||
cat << EOF
|
||||
|
||||
==> Before using VMware, you need to reboot or load vmw_vmci and vmmon kernel modules (in a terminal on root: modprobe -a vmw_vmci vmmon)
|
||||
==> You may also need to enable some of the following services:
|
||||
- vmware-networks: to have network access inside VMs
|
||||
- vmware-usbarbitrator: to connect USB devices inside VMs
|
||||
These services can be activated during boot by enabling .service units or only when a VM is started by enabling .path units.
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
post_upgrade() {
|
||||
if (( $(vercmp "$2" "16.1.2-2") < 0 )); then
|
||||
cat << EOF
|
||||
|
||||
Now VMware services can be activated only when a VM is started by enabling .path units instead of .service units.
|
||||
|
||||
EOF
|
||||
fi
|
||||
}
|
||||
|
||||
post_remove() {
|
||||
cat << EOF
|
||||
|
||||
==> To completely clean VMware installation, you may have to manually delete /etc/vmware, /etc/vmware-installer and /usr/lib/vmware-installer directories if they still exist.
|
||||
|
||||
EOF
|
||||
}
|
||||
Reference in New Issue
Block a user