markdown 在Mac OS系统启动时运行VMware Fusion无头

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown 在Mac OS系统启动时运行VMware Fusion无头相关的知识,希望对你有一定的参考价值。

#/bin/bash -e

export PATH="/usr/bin:/bin:/usr/sbin:/sbin:/Library/Application Support/VMware Fusion"

VMNAME="$1"
VMX="/Virtual Machines/${VMNAME}.vmwarevm/${VMNAME}.vmx"
if [ ! -f "$VMX" ]
then
	echo "$VMX" not found >&2
	exit 1
fi

function wait_for_host()
{

	local WAIT=180

	while ! [ -e /var/run/vmnet-bridge-vmnet.pid -o -e /var/run/vmnet-bridge-vmnet0.pid ]; do
		local WAIT=$((WAIT - 1))
		if [ $WAIT -le 0 ]
		then
			echo Timeout waiting for VMware drivers.
			exit 1
		fi
		sleep 1
	done

	while ! who | awk '{print $2}' | grep -q ^console$
	do
		local WAIT=$((WAIT - 1))
		if [ $WAIT -le 0 ]
		then
			echo Timeout waiting for console login.
			exit 1
		fi
		sleep 1
	done

}

function is_running()
{
	local VMX="$1"
	ps -eco pid=,command= | awk '{if ($2=="vmware-vmx") print $1}' | while read PID
	do
		if ps -o args= $PID | tr ' ' '\n' | grep -qFx "$VMX"
		then
			return 42 #found
		fi
	done
	[ "$?" == "42" ]
}

wait_for_host

if is_running "$VMX"
then
	echo "$1" already running. Attaching to existing.
else
	vmrun start "$VMX" nogui
fi

trap 'vmrun stop "$VMX" soft' SIGKILL SIGTERM SIGHUP SIGINT

while is_running "$VMX"
do
	sleep 5
done
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.jasoncodes.vms.template</string>
<key>ProgramArguments</key>
<array>
<string>/Virtual Machines/bin/vmdaemon</string>
<string>template</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ExitTimeOut</key>
<integer>300</integer>
</dict>
</plist>
# Run VMware Fusion headless at Mac OS system startup.

I heard you like headless VMs on your Mac so I wrote this script for your `launchd`s.

## Assumptions

* Tested on Mac OS X 10.6.4 with VMware Fusion 2.0.5 and 3.1.1.
* A interactive user automatically logs into the system at startup. I had some issues trying to get this running without an interactive user logged in. I automatically log in for Airfoil Speakers anyway.
* Your virtual machines live in `/Virtual Machines`

## Method

1. Place the `vmdaemon` script into `/Virtual Machines` and make it executable (`sudo chmod 755 vmdaemon`) and owned by root (`sudo chown root:wheel vmdaemon`).
2. Copy the template plist into `/Virtual Machines`. The plist should also be `chmod 644` and `chown root:wheel`.
1. For each VM you want to run headless, copy the `template` property list file and change the filename, label and 2nd program argument to match your VM name.
1. Symlink the plist into `/Library/LaunchDaemons`
1. Run `launchctl load -w $PLIST` to start the VM.
1. Use `launchctl unload -w $PLIST` to initiate a graceful shutdown of the VM. By default it will wait up to 5 minutes for the VM to shutdown. This can be configured in `ExitTimeOut` in the plist

## Forks and Feedback

If you try this out with your own setup, I'd like to hear how things go. Patches via gist forks are welcome.

 - Jason Weathered (@jasoncodes)

以上是关于markdown 在Mac OS系统启动时运行VMware Fusion无头的主要内容,如果未能解决你的问题,请参考以下文章

VM虚拟机安装MAC OS

vmware怎么安装mac os

markdown 如何创建将在Linux上运行的OS X El Capitan VM

VM升级后网络不能用Mac OS出现五国语言的解决方法

markdown 如何在Mac OS终端中运行JavaScript!

如何在Mac OS X上面指定Eclipse启动时用指定的某一版本JDK