diff options
author | Jean-Marc Lenoir | 2020-09-18 22:44:35 +0200 |
---|---|---|
committer | Jean-Marc Lenoir | 2020-09-18 22:44:35 +0200 |
commit | e8ae6b7bb3fb15afba4cbedd04533624d7caf2c4 (patch) | |
tree | 1871c4119631fc3280984ec3cf3322007b438a11 | |
download | aur-e8ae6b7bb3fb15afba4cbedd04533624d7caf2c4.tar.gz |
Initial commit.
-rw-r--r-- | .SRCINFO | 87 | ||||
-rw-r--r-- | Makefile | 21 | ||||
-rw-r--r-- | PKGBUILD | 481 | ||||
-rw-r--r-- | config | 26 | ||||
-rw-r--r-- | config.xml | 845 | ||||
-rwxr-xr-x | configure-initscript.sh | 97 | ||||
-rw-r--r-- | datastores.xml | 16 | ||||
-rw-r--r-- | dkms.conf.in | 15 | ||||
-rw-r--r-- | efi-unlocker-patch-1.0.0.txt | 25 | ||||
-rw-r--r-- | environments.xml | 62 | ||||
-rw-r--r-- | pam.d-vmware-authd | 5 | ||||
-rw-r--r-- | proxy.xml | 50 | ||||
-rw-r--r-- | vmAutoStart.xml | 9 | ||||
-rw-r--r-- | vmmon.patch | 99 | ||||
-rw-r--r-- | vmnet.patch | 22 | ||||
-rw-r--r-- | vmware-authd.service | 9 | ||||
-rw-r--r-- | vmware-bootstrap | 11 | ||||
-rw-r--r-- | vmware-environment.sh | 2 | ||||
-rw-r--r-- | vmware-hostd-certificates.service | 11 | ||||
-rw-r--r-- | vmware-hostd.service | 11 | ||||
-rw-r--r-- | vmware-networks-configuration.service | 9 | ||||
-rw-r--r-- | vmware-networks.service | 13 | ||||
-rw-r--r-- | vmware-usbarbitrator.service | 8 | ||||
-rw-r--r-- | vmware-vix-bootstrap | 2 | ||||
-rw-r--r-- | vmware-workstation.install | 19 |
25 files changed, 1955 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..fc24986c18c1 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,87 @@ +pkgbase = vmware-workstation15 + pkgdesc = The industry standard for running multiple operating systems as virtual machines on a single Linux PC. + pkgver = 15.5.6 + pkgrel = 1 + url = https://www.vmware.com/products/workstation-for-linux.html + install = vmware-workstation.install + arch = x86_64 + license = custom + makedepends = sqlite + depends = dkms + depends = fuse2 + depends = gtkmm3 + depends = libcanberra + depends = libaio + depends = pcsclite + depends = hicolor-icon-theme + depends = gtk3 + depends = gcr + depends = vmware-keymaps + optdepends = linux-headers: build modules against Arch kernel + provides = vmware-workstation=15.5.6 + provides = vmware-ovftool + conflicts = vmware-workstation + conflicts = vmware-modules-dkms + conflicts = vmware-ovftool + conflicts = vmware-patch + conflicts = vmware-systemd-services + options = !strip + options = emptydirs + backup = etc/vmware/config + backup = etc/vmware/hostd/authorization.xml + backup = etc/vmware/hostd/config.xml + backup = etc/vmware/hostd/datastores.xml + backup = etc/vmware/hostd/dispatcher.xml + backup = etc/vmware/hostd/proxy.xml + backup = etc/vmware/hostd/tagExtractor.xml + backup = etc/vmware/netmap.conf + backup = etc/vmware/ssl/hostd.ssl.config + backup = etc/pam.d/vmware-authd + backup = etc/conf.d/vmware + source = https://download3.vmware.com/software/wkst/file/VMware-Workstation-Full-15.5.6-16341506.x86_64.bundle + source = vmware-bootstrap + source = vmware-vix-bootstrap + source = config + source = pam.d-vmware-authd + source = configure-initscript.sh + source = vmware-environment.sh + source = config.xml + source = datastores.xml + source = environments.xml + source = proxy.xml + source = vmAutoStart.xml + source = vmware-hostd-certificates.service + source = vmware-hostd.service + source = vmware-authd.service + source = vmware-networks-configuration.service + source = vmware-networks.service + source = vmware-usbarbitrator.service + source = dkms.conf.in + source = Makefile + source = vmmon.patch + source = vmnet.patch + sha256sums = a62d89bfb29aefd0e3d4d60f31b3734aa7ba3adc48cbc612cfc032593d3c7593 + sha256sums = 12e7b16abf8d7e858532edabb8868919c678063c566a6535855b194aac72d55e + sha256sums = da1698bf4e73ae466c1c7fc93891eba4b9c4581856649635e6532275dbfea141 + sha256sums = 7c7d8789fa524b74155fc8b43d41eeff1d8a17ec89d51065d246e83b5f58e8fc + sha256sums = d50aa0a3fe94025178965d988e18d41eb60aa1ce2b28ee6e3ca15edeabfa2ca7 + sha256sums = 8e4d08668a66be79a900521792b39c16a026cc90659241edee80b64e701bfbcd + sha256sums = b94959a11b28e51b541321be0588190eb10825e9ff55cbd16eb01483a839a69f + sha256sums = a28b0c14407a2f2bb33aba0e28a535431a0ccf5f5734f5112607c2bdd18d08ec + sha256sums = 434cd4aa440d36b75ee20e0b588aaad874bb0d796173990bc4046667c66f5099 + sha256sums = 92337a4c0a2439863293a8f5e39c37c821d69abb70013805b672e135a73acda1 + sha256sums = 3c802523606184a5e8ebbe931d9c6c70d83ff8c6833b9f48aa264f0bd5a18a88 + sha256sums = ad522a8cbc6103134ce5e677a01b503cd21875cbceb37bd13fd870ebd9ad0e6d + sha256sums = f9440479f3ae5ad0a39bba3150276627878bf83d6879444fb327c53a1dbb5a4d + sha256sums = 42594b60085d0bbef01ab07b9f8b0d18640001107ce61cc0ddf02d0ab415140f + sha256sums = e4c2e97acf07c52de570dd4333d67acfb593db719937a563c6075ab773dcce33 + sha256sums = 9b4fbe0ba83f761a2eb9ecd05d48428f8b0a5b3abd8404ccbd928408e682f02b + sha256sums = c0a5aea785db06921fb350d36d5e0fd9a14f5eee0c835686ec6fea1af8c92245 + sha256sums = d7a9fbf39a0345ae2f14f7f389f30b1110f605d187e0c241e99bbb18993c250d + sha256sums = 10562d11d50edab9abc2b29c8948714edcb9b084f99b3766d07ddd21259e372e + sha256sums = 273d4357599a3e54259c78cc49054fef8ecfd2c2eda35cbcde3a53a62777a5ac + sha256sums = 3a3470f565c9697ea83ebe6170c43240727535aafcb7c828e1c034c3cdbe3882 + sha256sums = b0673f47bd1da097b92c3f73e4ad1e01f12b7506103abac532c0b4e0ca0a0fd7 + +pkgname = vmware-workstation15 + diff --git a/Makefile b/Makefile new file mode 100644 index 000000000000..f025addbd4b1 --- /dev/null +++ b/Makefile @@ -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) diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..5657603b6137 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,481 @@ +# Maintainer: Jean-Marc Lenoir <archlinux "at" jihemel "dot" 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-workstation15 +pkgver=15.5.6 +_buildver=16341506 +_pkgver=${pkgver}_${_buildver} +pkgrel=1 +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-workstation + vmware-modules-dkms + vmware-ovftool + vmware-patch + vmware-systemd-services +) +provides=( + vmware-workstation=$pkgver + vmware-ovftool +) +depends=( + dkms + fuse2 + gtkmm3 + libcanberra + libaio + pcsclite + hicolor-icon-theme + # 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/vmware/hostd/authorization.xml' + 'etc/vmware/hostd/config.xml' + 'etc/vmware/hostd/datastores.xml' + 'etc/vmware/hostd/dispatcher.xml' + 'etc/vmware/hostd/proxy.xml' + 'etc/vmware/hostd/tagExtractor.xml' + 'etc/vmware/netmap.conf' + 'etc/vmware/ssl/hostd.ssl.config' + 'etc/pam.d/vmware-authd' + 'etc/conf.d/vmware' +) +source=( + "https://download3.vmware.com/software/wkst/file/VMware-Workstation-Full-${_pkgver/_/-}.${CARCH}.bundle" + + 'vmware-bootstrap' + 'vmware-vix-bootstrap' + 'config' + 'pam.d-vmware-authd' + 'configure-initscript.sh' + 'vmware-environment.sh' + + 'config.xml' + 'datastores.xml' + 'environments.xml' + 'proxy.xml' + 'vmAutoStart.xml' + + 'vmware-hostd-certificates.service' + 'vmware-hostd.service' + 'vmware-authd.service' + 'vmware-networks-configuration.service' + 'vmware-networks.service' + 'vmware-usbarbitrator.service' + + 'dkms.conf.in' + 'Makefile' + 'vmmon.patch' + 'vmnet.patch' +) +sha256sums=( + 'a62d89bfb29aefd0e3d4d60f31b3734aa7ba3adc48cbc612cfc032593d3c7593' + + '12e7b16abf8d7e858532edabb8868919c678063c566a6535855b194aac72d55e' + 'da1698bf4e73ae466c1c7fc93891eba4b9c4581856649635e6532275dbfea141' + '7c7d8789fa524b74155fc8b43d41eeff1d8a17ec89d51065d246e83b5f58e8fc' + 'd50aa0a3fe94025178965d988e18d41eb60aa1ce2b28ee6e3ca15edeabfa2ca7' + '8e4d08668a66be79a900521792b39c16a026cc90659241edee80b64e701bfbcd' + 'b94959a11b28e51b541321be0588190eb10825e9ff55cbd16eb01483a839a69f' + + 'a28b0c14407a2f2bb33aba0e28a535431a0ccf5f5734f5112607c2bdd18d08ec' + '434cd4aa440d36b75ee20e0b588aaad874bb0d796173990bc4046667c66f5099' + '92337a4c0a2439863293a8f5e39c37c821d69abb70013805b672e135a73acda1' + '3c802523606184a5e8ebbe931d9c6c70d83ff8c6833b9f48aa264f0bd5a18a88' + 'ad522a8cbc6103134ce5e677a01b503cd21875cbceb37bd13fd870ebd9ad0e6d' + + 'f9440479f3ae5ad0a39bba3150276627878bf83d6879444fb327c53a1dbb5a4d' + '42594b60085d0bbef01ab07b9f8b0d18640001107ce61cc0ddf02d0ab415140f' + 'e4c2e97acf07c52de570dd4333d67acfb593db719937a563c6075ab773dcce33' + '9b4fbe0ba83f761a2eb9ecd05d48428f8b0a5b3abd8404ccbd928408e682f02b' + 'c0a5aea785db06921fb350d36d5e0fd9a14f5eee0c835686ec6fea1af8c92245' + 'd7a9fbf39a0345ae2f14f7f389f30b1110f605d187e0c241e99bbb18993c250d' + + '10562d11d50edab9abc2b29c8948714edcb9b084f99b3766d07ddd21259e372e' + '273d4357599a3e54259c78cc49054fef8ecfd2c2eda35cbcde3a53a62777a5ac' + '3a3470f565c9697ea83ebe6170c43240727535aafcb7c828e1c034c3cdbe3882' + 'b0673f47bd1da097b92c3f73e4ad1e01f12b7506103abac532c0b4e0ca0a0fd7' +) +options=(!strip emptydirs) + +if [ -z "$_remove_vmware_keymaps_dependency" ]; then +depends+=( + vmware-keymaps +) +fi + + +_isoimages=(linux linuxPreGlibc25 netware solaris windows winPre2k winPreVista) +_isovirtualprinterimages=(Linux Windows) + +if [ -n "$_enable_macOS_guests" ]; then + +_vmware_fusion_ver=11.5.6_16696540 +# List of VMware Fusion versions: https://softwareupdate.vmware.com/cds/vmw-desktop/fusion/ + +_unlocker_ver=3.0.3 +_efi_unlocker_ver=1.0.0 + +makedepends+=( + python + unzip + uefitool-git +) + +source+=( + "VMware-Fusion-${_vmware_fusion_ver/_/-}.zip.tar::https://softwareupdate.vmware.com/cds/vmw-desktop/fusion/${_vmware_fusion_ver/_//}/core/com.vmware.fusion.zip.tar" + "unlocker-${_unlocker_ver}.py::https://raw.githubusercontent.com/paolo-projects/unlocker/${_unlocker_ver}/unlocker.py" + "efi-unlocker-patch-${_efi_unlocker_ver}.txt" +) +sha256sums+=( + '8205f598be56ebbe5ddf23e2484ff067fd4a0a8543cd5408c390ea6bb1ae0364' + '1c27547dcf6fb2f436c96ee62ae8c7f5cfd14b40d8bbd35dc385e247c4fb7e0f' + '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#*_}\",1,\"$isoimage\",\"$isoimage\",1);" + done +fi +} + +prepare() { + extracted_dir="$srcdir/extracted" + [[ -d "$extracted_dir" ]] && rm -r "$extracted_dir" + + bash \ + "$(readlink -f "$srcdir/VMware-Workstation-Full-${_pkgver/_/-}.${CARCH}.bundle")" \ + --extract "$extracted_dir" + +if [ -n "$_enable_macOS_guests" ]; then + unzip -q com.vmware.fusion.zip + for isoimage in ${_fusion_isoimages[@]} + do + install -Dm 644 "$srcdir/payload/VMware Fusion.app/Contents/Library/isoimages/$isoimage.iso" "$srcdir/fusion-isoimages/$isoimage.iso" + done + rm -rf __MACOSX payload manifest.plist preflight postflight + + sed -i -e "s|/usr/lib/vmware/|${pkgdir}/usr/lib/vmware/|" "$srcdir/unlocker-${_unlocker_ver}.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"/{cups,pam.d,modprobe.d,thnuclnt,vmware} \ + "$pkgdir/usr"/{share,bin} \ + "$pkgdir/usr/include/vmware-vix" \ + "$pkgdir/usr/lib"/{vmware/{setup,lib/libvmware-vim-cmd.so},vmware-vix,vmware-ovftool,vmware-installer/"$vmware_installer_version",cups/filter,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-workstation-server/{vmware-hostd,vmware-vim-cmd,vmware-wssc-adminTool} \ + vmware-player-app/bin/* \ + "$pkgdir/usr/bin" + + cp -r \ + vmware-workstation/lib/* \ + vmware-player-app/lib/* \ + vmware-vmx/{lib/*,roms} \ + vmware-vprobe/lib/* \ + vmware-workstation-server/{bin,lib,hostd} \ + vmware-usbarbitrator/bin \ + vmware-network-editor/lib \ + "$pkgdir/usr/lib/vmware" + + cp -r \ + vmware-player-setup/vmware-config \ + "$pkgdir/usr/lib/vmware/setup" + + cp -rL \ + vmware-workstation-server/config/etc/vmware/* \ + vmware-workstation-server/etc/vmware/* \ + "$pkgdir/etc/vmware" + + cp -r \ + vmware-vix-lib-Workstation1500/lib/Workstation-15.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-player-app/etc/cups/* \ + "$pkgdir/etc/cups" + cp -r \ + vmware-player-app/extras/.thnumod \ + "$pkgdir/etc/thnuclnt" + cp -r \ + vmware-player-app/extras/thnucups \ + "$pkgdir/usr/lib/cups/filter" + + 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 + + for isoimage in ${_isovirtualprinterimages[@]} + do + install -Dm 644 "vmware-virtual-printer/VirtualPrinter-$isoimage.iso" "$pkgdir/usr/lib/vmware/isoimages/VirtualPrinter-$isoimage.iso" + done + + 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 + + for hostd_file in config datastores environments proxy vmAutoStart; do + install -Dm 644 "$srcdir/$hostd_file.xml" "$pkgdir/etc/vmware/hostd/$hostd_file.xml" + done + + install -Dm 644 "$srcdir/pam.d-vmware-authd" "$pkgdir/etc/pam.d/vmware-authd" + + echo -e "vmw_vmci\nvmmon" > "$pkgdir/usr/lib/modules-load.d/vmware.conf" + + for service_file in \ + vmware-hostd-certificates.service \ + vmware-hostd.service \ + vmware-authd.service \ + vmware-networks-configuration.service \ + vmware-networks.service \ + vmware-usbarbitrator.service + 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/cups/filter"/* \ + "$pkgdir/usr/lib/vmware-vix/setup"/* \ + "$pkgdir/etc/thnuclnt/.thnumod" + + chmod -R 600 "$pkgdir/etc/vmware/ssl" + 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-hostd \ + vmware-modconfig \ + vmware-modconfig-console \ + vmware-mount \ + vmware-netcfg \ + vmware-setup-helper \ + vmware-tray \ + vmware-vim-cmd \ + vmware-vmblock-fuse \ + vmware-vprobe \ + vmware-wssc-adminTool \ + 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/lib/diskLibWrapper.so/diskLibWrapper.so "$pkgdir/usr/lib/diskLibWrapper.so" + ln -s /usr/lib/vmware/lib/libvmware-hostd.so/libvmware-hostd.so "$pkgdir/usr/lib/vmware/lib/libvmware-vim-cmd.so/libvmware-vim-cmd.so" + 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 -i 's,@@AUTHD_PORT@@,902,' "$pkgdir/usr/lib/vmware/hostd/docroot/client/clients.xml" + + 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 # vmblock vmci vsock + 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 + + rm -r "$pkgdir/usr/lib/vmware/modules/source" + +if [ -n "$_enable_macOS_guests" ]; then + msg "Patching VMware to enable macOS guest support" + python "$srcdir/unlocker-${_unlocker_ver}.py" > /dev/null + + for isoimage in ${_fusion_isoimages[@]} + do + install -Dm 644 "$srcdir/fusion-isoimages/$isoimage.iso" "$pkgdir/usr/lib/vmware/isoimages/$isoimage.iso" + done + + msg "Patching EFI firmwares to disable macOS server checking" + _efi_arch=(32 64) + for arch in ${_efi_arch[@]} + do + uefipatch "$pkgdir/usr/lib/vmware/roms/EFI${arch}.ROM" "$srcdir/efi-unlocker-patch-${_efi_unlocker_ver}.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" +} diff --git a/config b/config new file mode 100644 index 000000000000..12cfc20b4947 --- /dev/null +++ b/config @@ -0,0 +1,26 @@ +.encoding = "UTF-8" +product.name = "VMware Player" +product.version = "15.5.6" +product.buildNumber = "16341506" +workstation.product.version = "15.5.6" +player.product.version = "15.5.6" +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" +VMBLOCK_CONFED = "no" +VMCI_CONFED = "no" +VSOCK_CONFED = "no" +installerDefaults.autoSoftwareUpdateEnabled = "no" +installerDefaults.dataCollectionEnabled = "no" +installerDefaults.componentDownloadEnabled = "no" +installerDefaults.transferVersion = "1" +acceptOVFEULA = "yes" +acceptEULA = "yes" +authd.client.port = "902" +authd.proxy.nfc = "vmware-hostd:ha-nfc" diff --git a/config.xml b/config.xml new file mode 100644 index 000000000000..76b60c753e8a --- /dev/null +++ b/config.xml @@ -0,0 +1,845 @@ +<!-- VMware Host Agent configuration file --> + +<config> + <!-- current working directory --> + <workingDir>./</workingDir> + + <!-- location to examine for configuration files that are needed --> + <defaultConfigPath> /etc/vmware/ </defaultConfigPath> + + <!-- location for docroot, plugins, libraries, etc. --> + <defaultInstallPath> /usr/lib/vmware </defaultInstallPath> + + <!-- stdout for hostd process --> + <!-- <stdoutFile>/var/log/vmware/hostd-stdout.txt</stdoutFile> --> + + <!-- stderr for hostd process --> + <!-- <stderrFile>/var/log/vmware/hostd-stderr.txt</stderrFile> --> + + <!-- Memory death point for hostd --> + <!-- <hostdStopMemInMB> 250 </hostdStopMemInMB> --> + <!-- <hostdStopMemInPercent> 80 </hostdStopMemInPercent> --> + + <!-- Memory watermark for hostd --> + <!-- <hostdWarnMemInMB> 180 </hostdWarnMemInMB> --> + <!-- <hostdWarnMemInPercent> 60 </hostdWarnMemInPercent> --> + + <!-- hostd min num of fds --> + <!-- Override by vmacore/threadPool/MaxFdsPerThread --> + <!-- hostdMinFds> 2048 </hostdMinFds --> + + <!-- hostd absolute max num of fds --> + <!-- hostdMaxFds> 4096 </hostdMaxFds --> + + <!-- hostd mmap threshold in kilo bytes --> + <hostdMmapThreshold> 32 </hostdMmapThreshold> + + <!-- Mode in which hostd runs: defines product type --> + <hostdMode> ws </hostdMode> + + <!-- True if hostd is running in simulator mode --> + <mockup> + <enabled> false </enabled> + <!-- Bump the count if hostd runs out of memory in simulator mode when + you create more VMs --> + <supportedVMs> 128 </supportedVMs> + </mockup> + + <!-- Frequency of memory checker --> + <!-- <memoryCheckerTimeInSecs> 30 </memoryCheckerTimeInSecs> --> + + <log> + <!-- controls where rolling log files are stored + If directory is changed from default, may also want to + pass '-l some-dir' to hostd program at startup. + --> + + <directory>/var/log/vmware/</directory> + + <!-- name of log file --> + <name>hostd</name> + + <!-- If true, redirect stderr to stdout. stdout inherits from + parent process. Log() (limited to default log level (see below)) + will then be written to stdout. If false, stderr and stdout + are redirected to /dev/null on linux. On win32 this option is + not used. + At runtime, see vimsh internalsvc/redirect_stdout|err + --> + <outputToConsole>true</outputToConsole> + + <!-- If true, logs to syslog --> + <outputToSyslog>false</outputToSyslog> + + <!-- If true, log to files on disk --> + <!-- <outputToFiles>true</outputToFiles> --> + + <!-- syslog configuration. Only used if outputToSyslog is true. --> + <syslog> + <!-- syslog identifier to use when logging --> + <ident>Hostd</ident> + + <!-- syslog facility to use when logging --> + <facility>local4</facility> + + <!-- The section header contents are placed in this file at startup. + When vmsyslogd rotates the hostd log file, it logs the content of this + file to syslog. This is being done so that we don't lose context on log + rotations. + IMPORTANT: Value needs to match that in onrotate entry in + vmsyslog.d/hostd.conf + --> + <logHeaderFile>/var/run/vmware/hostdLogHeader.txt</logHeaderFile> + + </syslog> + + <!-- default size(in bytes) of each log file before rolling over to next --> + <!-- <maxFileSize>10485760</maxFileSize> --> + + <!-- default number of log files to rotate amongst --> + <!-- <maxFileNum>10</maxFileNum> --> + + <!-- default log level --> + <level>verbose</level> + + <!-- if false disable logging to memory buffer --> + <!-- <outputToMemory>true</outputToMemory> --> + + <!-- default memory log level --> + <!-- <memoryLevel>verbose</memoryLevel> --> + + <!-- memory log buffer size in KB --> + <!-- <memoryLogSizeK>64</memoryLogSizeK> --> + </log> + + <!-- Log level configuration (Rules are applied in order) + <level id = "0"> + <logName> App </logName> + <logLevel> info </logLevel> + <memoryLevel>verbose</memoryLevel> + <prefix> true </prefix> + </level> + <level id = "1"> + <logName> BaseLibs </logName> + <logLevel> quiet </logLevel> + <memoryLevel>verbose</memoryLevel> + <prefix> false </prefix> + </level> + <level id = "2"> + <logName> Vmsvc </logName> + <logLevel> info </logLevel> + <memoryLevel>verbose</memoryLevel> + <prefix> true </prefix> + </level> + <level id = "3"> + <logName> /vmfs/volumes/foo/foo.vmx </logName> + <logLevel> trivia </logLevel> + <memoryLevel>verbose</memoryLevel> + <prefix> false </prefix> + </level> + <level id = "Vigor"> + <logName> Vigor </logName> + <logLevel> info </logLevel> + <memoryLevel>verbose</memoryLevel> + <prefix> true </prefix> + </level> + --> + <level id = "4"> + <logName> SoapAdapter.HTTPService </logName> + <logLevel> info </logLevel> + <prefix> false </prefix> + </level> + + <level id="TCP"> + <logName>TCP</logName> + <logLevel>error</logLevel> + <prefix>false</prefix> + </level> + + <!-- + <level id="IO"> + <logName>IO</logName> + <logLevel>error</logLevel> + <prefix>false</prefix> + </level> + --> + + <!-- + Logger for the data passed through the proxy + Uncomment the following block to enable it. + + WARNING: this data may contain sensitive informatino, such as + passwords, session IDs, etc. + --> + <!-- + <level id="ProxyReqData"> + <logName>Proxy Req Data</logName> + <logLevel>trivia</logLevel> + <prefix>true</prefix> + </level> + --> + + <!-- Remove the following node to disable SSL --> + <ssl> + <!-- The server private key file --> + <privateKey>/etc/vmware/ssl/rui.key</privateKey> + + <!-- The server side certificate file --> + <certificate>/etc/vmware/ssl/rui.crt</certificate> + + <!-- The SSL version to use --> + <!-- <sslVersion>all</sslVersion> --> + </ssl> + + <!-- Directory on the Console OS accessible to the DatastoreBrowser --> + <browsableConsoleDir>/vmimages</browsableConsoleDir> + + <!-- Location of vm inventory file on legacy host --> + <!-- <legacyVmInventory>/etc/vmware/vm-list</legacyVmInventory> --> + + <!-- VMOMI configuration --> + <vmomi> + <!-- MOB configuration --> + <mob> + <!-- Max size of POST requests in KB --> + <!-- <maxPostRequestSizeKB>1024</maxPostRequestSizeKB> --> + </mob> + <!-- VMOMI validator configuration --> + <validation> + <!-- The validation is enabled by default --> + <!-- <enabled>true</enabled> --> + </validation> + </vmomi> + + <vmacore> + <pluginBaseDir>./</pluginBaseDir> + <!-- default thread pool configuration for Posix impl --> + <threadPool> + <IoMin>2</IoMin> + <IoMax>32</IoMax> + <TaskMin>2</TaskMin> + <TaskMax>12</TaskMax> + <MaxFdsPerThread> 2048 </MaxFdsPerThread> + <NumKeepAlive>8</NumKeepAlive> + <ThreadCheckTimeSecs>600</ThreadCheckTimeSecs> + <ThreadStackSizeKb>256</ThreadStackSizeKb> + <threadNamePrefix>hostd</threadNamePrefix> + <!-- <threadCountWarningThreshold>2</threadCountWarningThreshold> --> + + <!-- Use fair work queues thread pool. --> + <!-- <fairThreadPool>true</fairThreadPool> --> + + <!-- defaults to 14, Max number of threads used for FWQ items --> + <!-- <maxThreads>14</maxThreads> --> + + <!-- defaults to 5, Initial number of threads used for FWQ items --> + <!-- <minThreads>5</minThreads> --> + + <!-- defaults to 2, number of IO threads used by the FWQ thread pool --> + <!-- These threads perform the asynchronous IO and provide timer services. + Generally small number should be enough as no blocking operations + are executed within IO threads. + A CPU intensive operation performed in these threads is SSL handling, + so on multi-CPU machine with high volume of SSL traffic it may be + beneficial increasing this number. + --> + <!-- <ioThreads>2</ioThreads> --> + + <!-- defaults to 3, Ratio between the number of concurrent items in a + priority and threads reserved for higher priority queues. + One thread is reserver for every N concurrent items. --> + <!-- <reservationRatio>3</reservationRatio> --> + + </threadPool> + <ssl> + <doVersionCheck> false </doVersionCheck> + <libraryPath>/usr/lib/vmware</libraryPath> + <!-- allowed SSL/TLS protocol versions --> + <!-- <protocols>tls1.0,tls1.1,tls1.2</protocols> --> + + <!-- timeouts for the SSL handshake. the default is 20 sec. --> + <!-- <handshakeTimeoutMs>60000</handshakeTimeoutMs> --> + </ssl> + + <http> + <!-- timeouts for HTTP connections. the defaults are infinite. --> + <!-- <readTimeoutMs>60000</readTimeoutMs> --> + <!-- <writeTimeoutMs>60000</writeTimeoutMs> --> + + <!-- Num of max proxy connections --> + <!-- PR 604415: Temporary lower the connections limit to 128 --> + <maxConnections> 128 </maxConnections> + </http> + + <!-- enable plugin loading --> + <loadPlugins> true </loadPlugins> + + <!-- enable/disable the dynamic loading of plugins --> + <loadDynamicPlugins> false </loadDynamicPlugins> + + <!-- Enable/disable the stack tracer --> + <!-- <useStackTracer>false</useStackTracer> --> + + <xml> + <doc> + <!-- maximum size of each XML message. --> + <maxChars>104857600</maxChars> + <!-- maximum nodes in of each XML message. --> + <maxNodes>524288</maxNodes> + <!-- maximum node depth of each XML message. --> + <maxDepth>1000</maxDepth> + </doc> + </xml> + </vmacore> + + <dispatcher> + <!-- turns dispatcher on/off --> + <!-- <enabled>true</enabled> --> + + <!-- Enables debugging output --> + <!-- <debug>false</debug> --> + + <!-- Debug flags --> + <!-- <flags>0</flags> --> + + <!-- The file containing dispatcher policies --> + <dispatcherConfig>/etc/vmware/hostd/dispatcher.xml</dispatcherConfig> + + <!-- The file containing tag extraction rules --> + <tagExtractorConfig>/etc/vmware/hostd/tagExtractor.xml</tagExtractorConfig> + </dispatcher> + + <plugins> + <vimsvc> + <path>libvimsvc.so</path> + + <!-- default administrator principal --> + <!-- <defaultPrincipal>root</defaultPrincipal> --> + + <!-- default file used to persist ACL data --> + <!-- <authorization>/etc/vmware/hostd/authorization.xml</authorization> --> + + <!-- default file used to supply required privileges for dynamic methods --> + <!-- <dynMethodPrivConfig>/etc/vmware/hostd/dynMethodPriv.xml</dynMethodPrivConfig> --> + + <!-- default setting for where vmware-hostd-ticket directory is created --> + <!-- <localTicketParentDir>/var/run</localTicketParentDir> --> + + <!-- default setting for life time of a local ticket --> + <!-- <localTicketLifeSecs>10</localTicketLifeSecs> --> + + <!-- default setting for maximum number of times a ticket can be used --> + <!-- <localTicketMaxUse>1</localTicketMaxUse> --> + + <!-- time to retain tasks after they complete --> + <!-- <taskRetentionInMins> 10 </taskRetentionInMins> --> + + <!-- cleanup interval time between task reaping --> + <!-- <taskCleanupIntervalInMins> 1 </taskCleanupIntervalInMins> --> + + <!-- maximum number of events to store --> + <!-- <maxEvents>1000</maxEvents> --> + + <!-- development build default setting for license mockup --> + <licenseMockup>false</licenseMockup> + + <!-- Disable i18nFilter --> + <!-- <i18nFilterDisabled> false </i18nFilterDisabled> --> + <!-- cloning of objects by i18nFilter --> + <!-- <i18nCloneDisabled> true </i18nCloneDisabled> --> + <license> + <!-- location of the read-write flexlm configuration file --> + <!-- <config> /etc/vmware/license.cfg </config> --> + </license> + + <!-- VC API lockdown mode (MN) - true to enable handling it --> + <apiLockdown>true</apiLockdown> + + <requires>hostsvc solo</requires> + + </vimsvc> + <hostsvc> + <path>libhostsvc.so</path> + + <vflash> + <defaultVFlashModule>vfc</defaultVFlashModule> + <vffsUuid>0</vffsUuid> + <refreshVffsInterval>30</refreshVffsInterval> + </vflash> + + <datastore> + <!-- default datastore inventory--> + <!-- <inventory>/etc/vmware/hostd/datastores.xml</inventory> --> + + <!-- default datastore refresh interval in minutes --> + <!-- use 0 to disable the auto refresh --> + <!-- <refreshInterval>0</refreshInterval> --> + + <!-- default refresh interval for datastore-freespace when provisioning virtual disks --> + <!-- <refreshVdiskInterval>30</refreshVdiskInterval> --> + </datastore> + + <mockup> + <!-- turns mockup impl on/off --> + <enabled>false</enabled> + + <!-- default filepath for host info --> + <filepath>/etc/vmware/hostd/mockup-host-config.xml</filepath> + </mockup> + <vmResources>/etc/vmware/hostd/vmResources.xml</vmResources> + + <!-- default location of the hostsvc config file --> + <!-- <config>/etc/vmware/hostd/hostsvc.xml</config> --> + + <!-- default location of the resource pool config file --> + <!-- <pools>/etc/vmware/hostd/pools.xml</pools> --> + + <!-- default location of the host service list --> + <services>/etc/vmware/service/</services> + + <storage> + <!-- storage data synchronization policy--> + + <!-- policy: invalidate on configuration change (default) --> + <!-- <syncpolicy>invalid_change</syncpolicy> --> + + <!-- policy: always fetch data when queried --> + <!-- <syncpolicy>fetch_always</syncpolicy> --> + + <!-- policy: fetch data on configuration change --> + <!-- <syncpolicy>fetch_change</syncpolicy> --> + + <!-- default storage inventory refetch interval, after getting multiple Path-state change events, in seconds --> + <refetchStorageInterval>120</refetchStorageInterval> + </storage> + + <rsrc> + <!-- Refresh interval (in seconds) for root resource pool capacity --> + <!-- <refreshInterval>60</refreshInterval> --> + </rsrc> + + <!-- Controls to enable/disable expressions in the datastore filter --> + <!-- <datastoresystem> --> + <!-- <diskfilter> --> + <!-- <NoUsbDisks>true</NoUsbDisks> --> + <!-- <UsedAsVmRdm>true</UsedAsVmRdm> --> + <!-- </diskfilter> --> + <!-- </datastoresystem> --> + + <!-- Controls to enable/disable expressions in the SCSI LUN filter --> + <!-- <scsilunfilter> --> + <!-- <NoUsbDisks>true</NoUsbDisks> --> + <!-- </scsilunfilter> --> + + <!-- Controls to enable/disable expressions in the RDM filter --> + <!-- <rdmfilter> --> + <!-- <RdmCapable>true</RdmCapable> --> + <!-- </rdmfilter> --> + <!-- <maxVms> 512 </maxVms> --> + <NetmapFile> /etc/vmware/netmap.conf </NetmapFile> + + + <!-- Storage I/O Resource Manager settings --> + <storageiorm> + <enabled>false</enabled> + <congestionThreshold.min>5</congestionThreshold.min> + <congestionThreshold.max>100</congestionThreshold.max> + <congestionThreshold.default>30</congestionThreshold.default> + </storageiorm> + </hostsvc> + <vmsvc> + <path>libvmsvc.so</path> + <mockup> + <enabled>false</enabled> + </mockup> + <enableMockup>false</enableMockup> + + <!-- <maxSnapshotDepth> 32 </maxSnapshotDepth> --> + + <!-- Configuration options for quiesced snapshots --> + <quiescedSnap> + <!-- Seconds that quiesce requests will queue before continuing. --> + <!-- <serializeTimeout> 120 </serializeTimeout> --> + </quiescedSnap> + + <!-- The maximum number of virtual disks allowed on this host --> + <!-- <maxDisksPerVirtualMachine> 120 </maxDisksPerVirtualMachine> --> + + <!-- The timer interval for task updates in microseconds --> + <!-- <taskTimerInterval> 1000000 </taskTimerInterval> --> + + <!-- Default user context to use to perform VM operations --> + <!-- <datastorePrincipal>root</datastorePrincipal> --> + + <!-- Virtual machine VMotion parameters --> + <vmotion> + <!-- Timeout for VMotion prepare operation (milliseconds) --> + <!-- <prepareTimeout> 30000 </prepareTimeout> --> + + <!-- Timeout for VMotion source initiate operation (milliseconds) --> + <!-- <srcInitiateTimeout> 30000 </srcInitiateTimeout> --> + + <!-- Timeout for VMotion destination ID population (milliseconds) --> + <!-- <dstIdTimeout> 120000 </dstIdTimeout> --> + </vmotion> + <!-- <defaultPowerOffType> soft </defaultPowerOffType> --> + <!-- <defaultSuspendType> hard </defaultSuspendType> --> + <!-- <defaultResetType> hard </defaultResetType> --> + <!-- <validateVMId> false </validateVMId> --> + <!-- <heartbeatCheckTimeInSecs> 30 </heartbeatCheckTimeInSecs> --> + <!-- <heartbeatRedAlert> 0.40 </heartbeatRedAlert> --> + <!-- <heartbeatYellowAlert> 0.80 </heartbeatYellowAlert> --> + + <!-- Setting to enable/disable activation of change tracking --> + <!-- when upgrading a virtual machine's HW version to HW7 or newer --> + <!-- or when adding a new disk to a HW7 or newer VM. --> + <!-- <useChangeTracking> true </useChangeTracking> --> + + <requires>vimsvc</requires> + </vmsvc> + <vcsvc> + <path>libvcsvc.so</path> + <mockup> + <enabled>false</enabled> + </mockup> + <!-- VMotion parameters --> + <vmotion> + <!-- Location of the VMotion journal; either an absolute --> + <!-- path or relative to the default log path --> + <!-- <journalDir> journal </journalDir> --> + + <!-- Source-side VMotion timeout (milliseconds) --> + <!-- <srcBeginTimeout> 240000 </srcBeginTimeout> --> + + <!-- Destination-side VMotion timeout (milliseconds) --> + <!-- <dstBeginTimeout> 60000 </dstBeginTimeout> --> + </vmotion> + + <!-- AgentManager parameters --> + <agentMgr> + <!-- Timeout (in seconds) for the upgrade command --> + <!-- <timeout> 360 </timeout> --> + + <!-- Name of the upgrade directory (relative to a provided tmpdir) --> + <!-- <upgradeDir> ha-agentmgr </upgradeDir> --> + + <!-- upgradeCerts is a path to a file containing accepted signer certificates --> + <!-- <upgradeCerts>/usr/share/certs/vmware.cert</upgradeCerts> --> + + <!-- Path to shell --> + <!-- <shellPath>/bin/sh</shellPath> --> + + </agentMgr> + + <requires>hostsvc</requires> + + </vcsvc> + <solo> + <path>libsolo.so</path> + <mockup> + <enabled>false</enabled> + </mockup> + + <!-- The file containing the list of environment description files --> + <environments>/etc/vmware/hostd/environments.xml</environments> + + <!-- The file containing the virtual machine inventory --> + <vmInventory>/etc/vmware/hostd/vmInventory.xml</vmInventory> + + <!-- The file containing the AutoStart settings --> + <!-- <vmAutoStart>/etc/vmware/hostd/vmAutoStart.xml</vmAutoStart> --> + + <!-- The file containing the resource pool and VM resource settings --> + <!-- <resources>/etc/vmware/hostd/resources.xml</resources> --> + + <!-- The file containing the provisoning policies --> + <provisioningPolicy>/etc/vmware/hostd/env/provisioningPolicy.xml</provisioningPolicy> + + <!-- The file containing the hardware info mockup --> + <hwInfo>/etc/vmware/hostd/hwInfo.xml</hwInfo> + + <!-- Controls to enable/disable expressions in the RDM filter --> + <!-- <rdmfilter> --> + <!-- Only show disks that are attached to shared storage. --> + <!-- <HbaIsShared>true</HbaIsShared> --> + + <!-- Only show disks that are not an extent of a VMFS volume. --> + <!-- <UsedByVmfs>true</UsedByVmfs> --> + + <!-- Only show disks that are not already used as an RDM target. --> + <!-- <UsedAsVmRdm>true</UsedAsVmRdm> --> + <!-- </rdmfilter> --> + + <!-- Disable Resource Pool Initialization --> + <!-- <disableResourcePoolInit> false </disableResourcePoolInit> --> + + <!-- Soap port. Also turns on proxy forwarding to a TCP port --> + <soapPort> 8307 </soapPort> + + <!-- Secure Soap port for accecpting SSL tunneling from proxy --> + <!-- If disabled, SSL tunneling is done over a named pipe. --> + <!-- <secureSoapPort> 8306 </secureSoapPort> --> + + <!-- Whether to enable secure Soap adapter --> + <enableSecureSoap> false </enableSecureSoap> + + <!-- 64 bit support --> + <!-- <support64bit> true </support64bit> --> + + <!-- Enable Vmomi tracing --> + <!-- <traceVmomi> true </traceVmomi> --> + + <!-- The log level at which to output vmomi tracing --> + <traceAt> verbose </traceAt> + + <!-- Whether to only trace faults in the return --> + <!-- <traceFaultsOnly> true </traceFaultsOnly> --> + + <!-- Cause segv --> + <!-- <causeSegv> false </causeSegv> --> + + <!-- Cause exception --> + <!-- <causeException> false </causeException> --> + + <loglevels> + <module> + <name> disklib </name> + <level> 0 </level> + </module> + <!-- <module> --> + <!-- <name> baz </name> --> + <!-- <level> 2 </level> --> + <!-- <extension> bar </extension> --> + <!-- </module> --> + </loglevels> + + <!-- web server settings --> + <webServer> + + <docRoot> /usr/lib/vmware/hostd/docroot/</docRoot> + <cgiBinPath> /usr/lib/vmware/hostd/cgi-bin/</cgiBinPath> + </webServer> + + <!-- Enable managed object browser --> + <!-- <enableMob>true</enableMob> --> + + <!-- periodic keep alive logging --> + <!-- <runTimerTest> false </runTimerTest> --> + <!-- <runTimerIntervalInSecs> 3 </runTimerIntervalInSecs> --> + + <dynamo> + <enabled> false </enabled> + + <manager id="0"> + <enabled> true </enabled> + <moId>ha-dynamic-type-manager-python</moId> + <type>soap-stdio</type> + <soap-stdio> + <command>/usr/bin/sh</command> + <arg id="0">-l</arg> + <arg id="1">-c</arg> + <arg id="2">/usr/bin/python -m PyVmomiServer -g --loglevel info -s PyVmomiServer</arg> + </soap-stdio> + </manager> + + <manager id="1"> + <enabled> false </enabled> + <moId>ha-dynamic-type-manager-vapi</moId> + <type>soap-http</type> + <soap-http> + <port>8088</port> + <command>/usr/bin/sh</command> + <arg id="0">-l</arg> + <arg id="1">-c</arg> + <arg id="2">/sbin/vapid -s vapid</arg> + </soap-http> + </manager> + + <manager id="2"> + <enabled> true </enabled> + <moId>ha-dynamic-type-manager-local-cli</moId> + <type>vmware-cli</type> + <vmware-cli> + <path>/usr/lib/vmware/esxcli</path> + </vmware-cli> + </manager> + </dynamo> + + <!-- Managed method executer --> + <!-- <mme> --> + <!-- <enabled> true </enabled> --> + <!-- </mme> --> + + <requires>hostsvc</requires> + </solo> + + <!-- Reverse HTTP Proxy service --> + <proxysvc> + <path>libproxysvc.so</path> + + <!-- default location of the proxy config file for hosted products--> + <config>/etc/vmware/hostd/proxy.xml</config> + <!-- default location of proxy config file for ESX--> + <endpoints>/etc/vmware/rhttpproxy/endpoints.conf</endpoints> + <requires>hostsvc</requires> + + </proxysvc> + + <statssvc> + <path>libstatssvc.so</path> + <enabled>false</enabled> + <mockup> + <!-- turns mockup impl on/off --> + <enabled>false</enabled> + </mockup> + + <!-- Directory to store stats related files in --> + <!-- <depotDir> /var/lib/vmware/hostd/stats/ </depotDir> --> + + <!-- Name of the StatsDepot --> + <!-- <depotName> hostAgentStats </depotName> --> + + <!-- Max number of stats to purge in one shot --> + <!-- <maxStatsPurged> 1000 </maxStatsPurged> --> + + <!-- Real time stats collection interval --> + <!-- <collectionInterval> 20 </collectionInterval> --> + + <!-- Enable historical stats collection --> + <!-- <historicalStatsEnabled> true </historicalStatsEnabled> --> + <!-- Enable collection of virtual disk stats --> + <!-- <collectVdiskStats> true </collectVdiskStats> --> + <!-- Enable collection of Host Datastore stats --> + <!-- <collectHostDsStats> true </collectHostDsStats> --> + <!-- Enable collection of Storage Path and Adapter stats --> + <!-- <collectPathAdapterStats> true </collectPathAdapterStats> --> + <!-- Enable collection of VM Datastore stats --> + <!-- <collectVmDsStats>true </collectVmDsStats> --> + <!-- Enable collection of VFlash Module stats --> + <!-- <collectVFlashModuleStats> true </collectVFlashModuleStats> --> + <!-- Enable collection of VSAN DOM stats --> + <!-- <collectVSanDomStats> false </collectVSanDomStats> --> + + </statssvc> + + <partitionsvc> + <path>libpartitionsvc.so</path> + <enabled>false</enabled> + </partitionsvc> + + <internalsvc> + <path>libinternalsvc.so</path> + <requires>hostsvc</requires> + </internalsvc> + + <!-- The nfc service --> + <nfcsvc> + <path>libnfcsvc.so</path> + <enabled>true</enabled> + <mockup> + <enabled>false</enabled> + </mockup> + </nfcsvc> + + <snmpsvc> + <enabled>false</enabled> + <path>libsnmpsvc.so</path> + </snmpsvc> + + <blklistsvc> + <path>libblklistsvc.so</path> + <enabled>false</enabled> + <!-- <leaseTimeoutSecs> 150 </leaseTimeoutSecs> --> + <!-- <wblEnabled> true </wblEnabled> --> + </blklistsvc> + + <cimsvc> + <path>libcimsvc.so</path> + <enabled>false</enabled> + <maxSelEntries>40</maxSelEntries> + <pollTime>90</pollTime> + </cimsvc> + + <directorysvc> + <path>libdirectorysvc.so</path> + <enabled>false</enabled> + <mockup> + <enabled>false</enabled> + </mockup> + </directorysvc> + + <vdisksvc> + <path>libvdisksvc.so</path> + <enabled>false</enabled> + <mockup> + <enabled>false</enabled> + </mockup> + </vdisksvc> + + <vslmsvc> + <path>libvslmsvc.so</path> + <enabled>false</enabled> + <mockup> + <enabled>false</enabled> + </mockup> + </vslmsvc> + + <httpnfcsvc> + <path>libhttpnfcsvc.so</path> + <enabled>false</enabled> + <mockup> + <enabled>false</enabled> + </mockup> + <requires>proxysvc</requires> + </httpnfcsvc> + + <ovfmgrsvc> + <path>libovfmgrsvc.so</path> + <enabled>true</enabled> + </ovfmgrsvc> + + <dynsvc> + <path>libdynsvc.so</path> + <enabled>false</enabled> + <dynamic>true</dynamic> + </dynsvc> + + <guestsvc> + <path>libguestsvc.so</path> + <enabled>false</enabled> + </guestsvc> + + <hbrsvc> + <path>libhbrsvc.so</path> + <enabled>false</enabled> + <mockup> + <!-- Mock HBR is on if running in the the simulator --> + <enabled>false</enabled> + </mockup> + <requires>vmsvc</requires> + </hbrsvc> + + <cbrcsvc> + <path>libcbrcsvc.so</path> + <enabled>false</enabled> + </cbrcsvc> + + <hostspecsvc> + <path>libhostspecsvc.so</path> + <enabled>false</enabled> + </hostspecsvc> + + + </plugins> + + <!--Locale preferences--> + <!--DefaultLocale - this is the preferred default locale --> + <!--InstallPath - this is the location of the locale files--> + <!-- + <locale> + <DefaultLocale>en_US</DefaultLocale> + <InstallPath>./locale/</InstallPath> + </locale> + --> + +</config> diff --git a/configure-initscript.sh b/configure-initscript.sh new file mode 100755 index 000000000000..95d9e9cc5bb8 --- /dev/null +++ b/configure-initscript.sh @@ -0,0 +1,97 @@ +#!/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. + +case "$serviceName" in + vmware-workstation-server) + serviceName="vmware-hostd" + ;; +esac + +#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 diff --git a/datastores.xml b/datastores.xml new file mode 100644 index 000000000000..a457a95241fc --- /dev/null +++ b/datastores.xml @@ -0,0 +1,16 @@ +<ConfigRoot> + <LocalDatastores> + <_length>1</_length> + <_type>hostd.host.LocalDatastoreEntry[]</_type> + <e id="0"> + <_type>hostd.host.LocalDatastoreEntry</_type> + <id>1</id> + <name>standard</name> + <path>/var/lib/vmware/Shared VMs</path> + </e> + </LocalDatastores> + <NasVolumes> + <_length>0</_length> + <_type>hostd.host.NasDatastoreEntry[]</_type> + </NasVolumes> +</ConfigRoot>
\ No newline at end of file diff --git a/dkms.conf.in b/dkms.conf.in new file mode 100644 index 000000000000..5c7adc58ecde --- /dev/null +++ b/dkms.conf.in @@ -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="make clean" +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" diff --git a/efi-unlocker-patch-1.0.0.txt b/efi-unlocker-patch-1.0.0.txt new file mode 100644 index 000000000000..6451d1db0315 --- /dev/null +++ b/efi-unlocker-patch-1.0.0.txt @@ -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 diff --git a/environments.xml b/environments.xml new file mode 100644 index 000000000000..e044a450f3a8 --- /dev/null +++ b/environments.xml @@ -0,0 +1,62 @@ +<Environment> + <Cfg id="0"> + <Descriptor>env/ws-hw3.xml</Descriptor> + <Options>env/vmconfigoption-ws-hw3.xml</Options> + </Cfg> + <Cfg id="1"> + <Descriptor>env/ws-hw4.xml</Descriptor> + <Options>env/vmconfigoption-ws-hw4.xml</Options> + </Cfg> + <Cfg id="2"> + <Descriptor>env/ws-hw6.xml</Descriptor> + <Options>env/vmconfigoption-ws-hw6.xml</Options> + </Cfg> + <Cfg id="3"> + <Descriptor>env/ws-hw7.xml</Descriptor> + <Options>env/vmconfigoption-ws-hw7.xml</Options> + </Cfg> + <Cfg id="4"> + <Descriptor>env/ws-hw8.xml</Descriptor> + <Options>env/vmconfigoption-ws-hw8.xml</Options> + </Cfg> + <Cfg id="5"> + <Descriptor>env/ws-hw9.xml</Descriptor> + <Options>env/vmconfigoption-ws-hw9.xml</Options> + </Cfg> + <Cfg id="6"> + <Descriptor>env/ws-hw10.xml</Descriptor> + <Options>env/vmconfigoption-ws-hw10.xml</Options> + </Cfg> + <Cfg id="7"> + <Descriptor>env/ws-hw11.xml</Descriptor> + <Options>env/vmconfigoption-ws-hw11.xml</Options> + </Cfg> + <Cfg id="8"> + <Descriptor>env/ws-hw12.xml</Descriptor> + <Options>env/vmconfigoption-ws-hw12.xml</Options> + </Cfg> + <Cfg id="9"> + <Descriptor>env/ws-hw13.xml</Descriptor> + <Options>env/vmconfigoption-ws-hw13.xml</Options> + </Cfg> + <Cfg id="10"> + <Descriptor>env/ws-hw14.xml</Descriptor> + <Options>env/vmconfigoption-ws-hw14.xml</Options> + </Cfg> + <Cfg id="11"> + <Descriptor>env/ws-hw15.xml</Descriptor> + <Options>env/vmconfigoption-ws-hw15.xml</Options> + </Cfg> + <Cfg id="12"> + <Descriptor>env/ws-hw16.xml</Descriptor> + <Options>env/vmconfigoption-ws-hw16.xml</Options> + </Cfg> + <Cfg id="13"> + <Descriptor>env/ws-hw17.xml</Descriptor> + <Options>env/vmconfigoption-ws-hw17.xml</Options> + </Cfg> + <Cfg id="14"> + <Descriptor>env/ws-hw18.xml</Descriptor> + <Options>env/vmconfigoption-ws-hw18.xml</Options> + </Cfg> +</Environment> diff --git a/pam.d-vmware-authd b/pam.d-vmware-authd new file mode 100644 index 000000000000..44391264ebf9 --- /dev/null +++ b/pam.d-vmware-authd @@ -0,0 +1,5 @@ +#%PAM-1.0 +auth required pam_unix.so +account required pam_unix.so +password required pam_permit.so +session required pam_unix.so diff --git a/proxy.xml b/proxy.xml new file mode 100644 index 000000000000..d9ab5039838c --- /dev/null +++ b/proxy.xml @@ -0,0 +1,50 @@ +<ConfigRoot> + <httpPort>-1</httpPort> + <httpsPort>443</httpsPort> + <EndpointList> + <_length>7</_length> + <_type>vim.ProxyService.EndpointSpec[]</_type> + <e id="0"> + <_type>vim.ProxyService.NamedPipeServiceSpec</_type> + <accessMode>httpAndHttps</accessMode> + <pipeName>/var/run/vmware/proxy-webserver</pipeName> + <serverNamespace>/</serverNamespace> + </e> + <e id="1"> + <_type>vim.ProxyService.LocalServiceSpec</_type> + <accessMode>httpsWithRedirect</accessMode> + <port>8307</port> + <serverNamespace>/sdk</serverNamespace> + </e> + <e id="2"> + <_type>vim.ProxyService.LocalServiceSpec</_type> + <accessMode>httpsWithRedirect</accessMode> + <port>8308</port> + <serverNamespace>/ui</serverNamespace> + </e> + <e id="3"> + <_type>vim.ProxyService.NamedPipeServiceSpec</_type> + <accessMode>httpsOnly</accessMode> + <pipeName>/var/run/vmware/proxy-vpxa</pipeName> + <serverNamespace>/vpxa</serverNamespace> + </e> + <e id="4"> + <_type>vim.ProxyService.NamedPipeServiceSpec</_type> + <accessMode>httpsWithRedirect</accessMode> + <pipeName>/var/run/vmware/proxy-mob</pipeName> + <serverNamespace>/mob</serverNamespace> + </e> + <e id="5"> + <_type>vim.ProxyService.LocalServiceSpec</_type> + <accessMode>httpAndHttps</accessMode> + <port>12001</port> + <serverNamespace>/ha-nfc</serverNamespace> + </e> + <e id="6"> + <_type>vim.ProxyService.LocalServiceSpec</_type> + <accessMode>httpAndHttps</accessMode> + <port>12000</port> + <serverNamespace>/nfc</serverNamespace> + </e> + </EndpointList> +</ConfigRoot> diff --git a/vmAutoStart.xml b/vmAutoStart.xml new file mode 100644 index 000000000000..422da117572b --- /dev/null +++ b/vmAutoStart.xml @@ -0,0 +1,9 @@ +<ConfigRoot> + <SystemDefaults> + <_type>vim.host.AutoStartManager.SystemDefaults</_type> + <startDelay>120</startDelay> + <stopAction>PowerOff</stopAction> + <stopDelay>120</stopDelay> + <waitForHeartbeat>false</waitForHeartbeat> + </SystemDefaults> +</ConfigRoot>
\ No newline at end of file diff --git a/vmmon.patch b/vmmon.patch new file mode 100644 index 000000000000..eb8ce8ed830c --- /dev/null +++ b/vmmon.patch @@ -0,0 +1,99 @@ +--- a/vmmon/Makefile ++++ b/vmmon/Makefile +@@ -43,7 +43,11 @@ INCLUDE += -I$(SRCROOT)/shared + endif + + ++ifdef KVERSION ++VM_UNAME = $(KVERSION) ++else + VM_UNAME = $(shell uname -r) ++endif + + # Header directory for the running kernel + ifdef LINUXINCLUDE +@@ -137,7 +137,6 @@ + endif + + # Add Spectre options when available +-CC_OPTS += $(call vm_check_gcc,-mindirect-branch=thunk -mindirect-branch-register,) + + include $(SRCROOT)/Makefile.kernel + +--- a/vmmon/linux/hostif.c ++++ b/vmmon/linux/hostif.c +@@ -47,6 +47,8 @@ + #include <asm/asm.h> + #include <asm/io.h> + #include <asm/page.h> ++#include <asm/tlbflush.h> ++#include <asm/irq_vectors.h> + #include <asm/uaccess.h> + #include <linux/capability.h> + #include <linux/kthread.h> +@@ -634,7 +635,24 @@ HostIF_FastClockUnlock(int callerID) // IN + static void * + MapCrossPage(struct page *p) // IN: + { ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) + return vmap(&p, 1, VM_MAP, VM_PAGE_KERNEL_EXEC); ++#else ++ /* Starting with 5.8, vmap() always sets the NX bit, but the cross ++ * page needs to be executable. */ ++ pte_t *ptes[1]; ++ struct vm_struct *area = alloc_vm_area(1UL << PAGE_SHIFT, ptes); ++ if (area == NULL) ++ return NULL; ++ ++ set_pte(ptes[0], mk_pte(p, VM_PAGE_KERNEL_EXEC)); ++ ++ preempt_disable(); ++ __flush_tlb_all(); ++ preempt_enable(); ++ ++ return area->addr; ++#endif + } + + +@@ -1739,7 +1758,10 @@ HostIF_EstimateLockedPageLimit(const VMDriver* vm, // IN + lockedPages += global_page_state(NR_PAGETABLE); + #endif + /* NR_SLAB_* moved from zone to node in 4.13. */ +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0) ++ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0) ++ lockedPages += global_node_page_state_pages(NR_SLAB_UNRECLAIMABLE_B); ++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0) + lockedPages += global_node_page_state(NR_SLAB_UNRECLAIMABLE); + #else + lockedPages += global_page_state(NR_SLAB_UNRECLAIMABLE); +@@ -2590,9 +2612,11 @@ HostIF_SemaphoreWait(VMDriver *vm, // IN: + * the code to happily deal with a pipe or an eventfd. We only care about + * reading no bytes (EAGAIN - non blocking fd) or sizeof(uint64). + */ +- +- res = file->f_op->read(file, (char *) &value, sizeof value, &file->f_pos); +- ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) ++ res = kernel_read(file, file->f_pos, (char *)&value, sizeof value); ++#else ++ res = kernel_read(file, &value, sizeof value, &file->f_pos); ++#endif + if (res == sizeof value) { + res = MX_WAITNORMAL; + } else { +@@ -2707,8 +2731,11 @@ HostIF_SemaphoreSignal(uint64 *args) // IN: + * pipes. The data written is formatted to make an eventfd happy should + * it be present. + */ +- +- res = file->f_op->write(file, (char *) &value, sizeof value, &file->f_pos); ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) ++ res = kernel_write(file, (char *)&value, sizeof value, file->f_pos); ++#else ++ res = kernel_write(file, &value, sizeof value, &file->f_pos); ++#endif + + if (res == sizeof value) { + res = MX_WAITNORMAL; diff --git a/vmnet.patch b/vmnet.patch new file mode 100644 index 000000000000..b5a50b53fb2c --- /dev/null +++ b/vmnet.patch @@ -0,0 +1,22 @@ +--- a/vmnet/Makefile ++++ b/vmnet/Makefile +@@ -43,7 +43,11 @@ INCLUDE += -I$(SRCROOT)/shared + endif + + ++ifdef KVERSION ++VM_UNAME = $(KVERSION) ++else + VM_UNAME = $(shell uname -r) ++endif + + # Header directory for the running kernel + ifdef LINUXINCLUDE +@@ -137,7 +137,6 @@ + endif + + # Add Spectre options when available +-CC_OPTS += $(call vm_check_gcc,-mindirect-branch=thunk -mindirect-branch-register,) + + include $(SRCROOT)/Makefile.kernel + diff --git a/vmware-authd.service b/vmware-authd.service new file mode 100644 index 000000000000..53d3fbf8314d --- /dev/null +++ b/vmware-authd.service @@ -0,0 +1,9 @@ +[Unit] +Description=VMware Authentication Daemon + +[Service] +Type=forking +ExecStart=/usr/bin/vmware-authdlauncher + +[Install] +WantedBy=multi-user.target diff --git a/vmware-bootstrap b/vmware-bootstrap new file mode 100644 index 000000000000..981b82191cca --- /dev/null +++ b/vmware-bootstrap @@ -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" diff --git a/vmware-environment.sh b/vmware-environment.sh new file mode 100644 index 000000000000..b4bee50db4df --- /dev/null +++ b/vmware-environment.sh @@ -0,0 +1,2 @@ +# Uncomment the line below if you have a problem of incompatible libraries +#export VMWARE_USE_SHIPPED_LIBS=yes diff --git a/vmware-hostd-certificates.service b/vmware-hostd-certificates.service new file mode 100644 index 000000000000..8891ebe775ef --- /dev/null +++ b/vmware-hostd-certificates.service @@ -0,0 +1,11 @@ +[Unit] +Description=VMware Host Daemon Certificates Generation +ConditionPathExists=|!/etc/vmware/ssl/rui.key +ConditionPathExists=|!/etc/vmware/ssl/rui.crt + +[Service] +UMask=0077 +Environment=LD_LIBRARY_PATH=/usr/lib/vmware/lib/libssl.so.1.0.1:/usr/lib/vmware/lib/libcrypto.so.1.0.1 +ExecStart=/usr/lib/vmware/bin/openssl req -x509 -days 365 -newkey rsa:2048 -sha256 -keyout /etc/vmware/ssl/rui.key -out /etc/vmware/ssl/rui.crt -config /etc/vmware/ssl/hostd.ssl.config +Type=oneshot +RemainAfterExit=yes diff --git a/vmware-hostd.service b/vmware-hostd.service new file mode 100644 index 000000000000..2462d94e33ae --- /dev/null +++ b/vmware-hostd.service @@ -0,0 +1,11 @@ +[Unit] +Description=VMware Host Daemon +Wants=vmware-hostd-certificates.service vmware-authd.service +After=vmware-hostd-certificates.service vmware-authd.service + +[Service] +ExecStartPre=/usr/bin/mkdir -p /var/run/vmware +ExecStart=/usr/bin/vmware-hostd -a /etc/vmware/hostd/config.xml + +[Install] +WantedBy=multi-user.target diff --git a/vmware-networks-configuration.service b/vmware-networks-configuration.service new file mode 100644 index 000000000000..0d86867f955e --- /dev/null +++ b/vmware-networks-configuration.service @@ -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 diff --git a/vmware-networks.service b/vmware-networks.service new file mode 100644 index 000000000000..7d520a28a88d --- /dev/null +++ b/vmware-networks.service @@ -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 diff --git a/vmware-usbarbitrator.service b/vmware-usbarbitrator.service new file mode 100644 index 000000000000..fd1d9cac8034 --- /dev/null +++ b/vmware-usbarbitrator.service @@ -0,0 +1,8 @@ +[Unit] +Description=VMware USB Arbitrator + +[Service] +ExecStart=/usr/lib/vmware/bin/vmware-usbarbitrator -f + +[Install] +WantedBy=multi-user.target diff --git a/vmware-vix-bootstrap b/vmware-vix-bootstrap new file mode 100644 index 000000000000..425074de832d --- /dev/null +++ b/vmware-vix-bootstrap @@ -0,0 +1,2 @@ +BINDIR="/usr/bin" + diff --git a/vmware-workstation.install b/vmware-workstation.install new file mode 100644 index 000000000000..36f5a3505e48 --- /dev/null +++ b/vmware-workstation.install @@ -0,0 +1,19 @@ +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 these services: +- vmware-networks.service: to have network access inside VMs +- vmware-usbarbitrator.service: to connect USB devices inside VMs +- vmware-hostd.service: to share VMs on the network + +EOF +} + +post_remove() { + cat << EOF + +==> To remove VMware settings, delete /etc/vmware and /etc/vmware-installer directories. + +EOF +} |