원문 보기: https://dawoum.duckdns.org/wiki/VMware
이전 과정에서 라이선스 키를 구입해야 했지만, 2024년 5월경, 17 버전부터 개인 사용자에게 키를 묻지 않습니다.
- https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion 여기서 Download를 누르면
- https://support.broadcom.com/group/ecx/downloads 여기서 기입을 해야 합니다
- 그런-다음 다운로드 링크가 열립니다
Installation
- sudo bash ./VMware-Workstation-17.6.3-24583834.x86_64.bundle
Uninstall
- sudo vmware-installer -u vmware-workstation
Debian packaging
위와 같은 설치 방법은 시스템에 어떤 파일이 설치되는지 확인하기가 귀찮을 수 있어서, 데비안 패키지를 만들어 둘 필요가 있습니다. 이때, 아치 패키지를 참조하는 것이 가장 좋습니다.
여기서 필요한 것은 위에서 제공된 이름의 bundle 파일과 아치에서 제공하는 소스 파일 중에서 tar 파일을 제외한 14개의 파일을 같은 디렉토리 둡니다.
그런-다음 아래 스크립트, vmware-workstation-17.install를 만듭니다:
#!/bin/bash
pkgname=vmware-workstation
pkgver=17.6.3
_buildver=24583834
_pkgver=${pkgver}_${_buildver}
srcdir=$(pwd)
pkgdir=$srcdir/vmware-workstation_17.6.3-1_amd64
CARCH=x86_64
_isoimages=(linux linuxPreGlibc25 netware solaris windows winPre2k winPreVista)
_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);"
}
prepare() {
extracted_dir="$srcdir/extracted"
[[ -d "$extracted_dir" ]] && rm -r "$extracted_dir"
bash \
"$(readlink -f "$srcdir/VMware-Workstation-${_pkgver/_/-}.${CARCH}.bundle")" \
--extract "$extracted_dir"
}
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"
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
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"
echo "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"
_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"
}
prepare
package
mkdir -p "$pkgdir"/DEBIAN
이제 스크립트를 실행하고, 데비안 패키지를 만드는 과정을 진행할 수 있습니다:
- bash vmware-workstation-17.install
- nvim vmware-workstation_17.6.3-1_amd64/DEBIAN/control
- dpkg-deb --build --root-owner-group vmware-workstation_17.6.3-1_amd64
- sudo dpkg -i vmware-workstation_17.6.3-1_amd64.deb
그런-다음 네트워크 설정을 먼저 진행하십시오:
- vmware-netcfg
처음에는 Bridged로 되어 있지만, 추가 설정이 필요할 수 있으므로, NAT로 옮기고, MTU에는 1500을 넣습니다.
이제, 서비스를 시작합니다:
- sudo systemctl enable --now vmware-networks.path
- sudo systemctl enable --now vmware-usbarbitrator.path
- sudo systemctl enable --now vmware-networks.service
- sudo systemctl enable --now vmware-usbarbitrator.service
만약 서비스가 기동하지 않을 때에는 커널 모듈의 문제이므로, 아래를 참조해서 커널 컴파일을 수행하고 (배포판 커널을 사용하고 있다면 필요없습니다), 그런-다음 vmmon, vmnet을 컴파일하고, 로드해야 합니다.
Kernel module
VMware Workstation 실행을 위해 CONFIG_FUSE_FS 및 CONFIG_VMWARE_VMCI를 활성화해야 합니다:
[*] Enable loadable module support --->
File systems --->
<*> FUSE (Filesystem in Userspace) support
Devices drivers --->
Misc devices --->
<*> VMware VMCI Driver
호스트-게스트/게스트-게스트 통신을 위해 VMware VMCI 소켓이 필요하며, CONFIG_VMWARE_VMCI_VSOCKETS도 활성화해야 합니다.
[*] Networking support --->
Networking options --->
<*> Virtual Socket protocol
<*> VMware VMCI transport for Virtual Sockets
Vmmon and vmnet module compile
데비안 패키지로 만들면, /usr/src/vmware-workstation-17.6.3_24583834/에 소스 파일이 존재합니다.
간혹은 어떤 이유에서든지 vmware 모듈이 gcc version과 맞지 않다면서 vmware를 실행하지 못하는 경우가 생깁니다.
이때, 버전별로 gcc를 설치해서 문제를 해결할 수 있습니다.
한편, 커널을 Clang으로 컴파일했다면, 커널 컴파일에서 사용한 것과 동일한 방법으로 모듈을 컴파일할 수 있습니다 (괄호 안)
다음과 같이 수동으로 모듈을 컴파일합니다:
- cd /usr/lib/vmware/modules/source
- sudo tar xf vmmon.tar
- sudo tar xf vmnet.tar
- cd ../vmmon-only
- sudo make (sudo make -j20 CC=clang LD=ld.lld LLVM=1 LLVM_IAS=1)
- cd ../vmnet-only
- sudo make (sudo make -j20 CC=clang LD=ld.lld LLVM=1 LLVM_IAS=1)
모듈을 설치하고, vmware를 재시작합니다.
- cd /usr/lib/vmware/modules/source
- sudo mkdir /lib/modules/`uname -r`/misc
- sudo cp vmmon.o /lib/modules/`uname -r`/misc/vmmon.ko
- sudo cp vmnet.o /lib/modules/`uname -r`/misc/vmnet.ko
- sudo depmod -a