#!/bin/bash
#
# Install/Upgrade GA on Guest
#
if [ "$UID" -eq 0 ]
then echo "This script should NOT be run as root."
exit 1
fi
#
# Source config file
if [ ! -f ~/.vbconfig ]; then
echo "Config File ~/.vbconfig not found!"
echo "Run: set-folders to create .vbconfig"
exit 1
fi
. ~/.vbconfig
#
# Guest Additions fallback Snapshot name
GASS=gass
#
# Sata Controller Name
SATAC="SATAController"
# Sata Controller Port
SATAP="0"
# Sata Controller Device
SATAD="0"
# Check if extension pack has been installed
VB_EXT_PACK_COUNT=`VBoxManage list extpacks | head -1 | cut -d":" -f2`
if [ $VB_EXT_PACK_COUNT -eq 0 ]
then echo "Please install Extension Pack before proceeding"
exit 1
fi
#
VB_VM_NAME=$1
if [[ $VB_VM_NAME == "" ]]; then
echo "Install/Upgrade Guest Additions (on Guest
Choose the VirtualMachine from the list below:
"
${VB_BIN_LOC}/050-list-vm.bash
read -p "Enter VM Name: " VB_VM_NAME
fi
#
VM_EXISTS=`$VB_BIN_LOC/110-vm-exists.bash "${VB_VM_NAME}"`
if [ $VM_EXISTS -ne 1 ]; then
echo "Invalid VM Name: $VB_VM_NAME"
exit 1
fi
#
echo "
Full list of $SATAC :"
VBoxManage showvminfo "${VB_VM_NAME}" | grep "$SATAC"
echo "
Choose a Controller/Port/Device that is not in use.
Avoid knocking off an existing device.
It is possible you may need to increase # of ports.
Enter the SATA Controller details for CD/DVD Device:
"
read -e -p "Sata Controller : " -i "$SATAC" SATAC
read -e -p "Sata Port # : " -i "$SATAP" SATAP
read -e -p "Sata Device # : " -i "$SATAD" SATAD
#
# May need to update this to the correct ISO
VB_VM_GUESTADD_ISO="VBoxGuestAdditions_4.3.20.iso"
VB_VM_GUESTADD_ISO="MirantisOpenStack-5.1.1.iso"
#
VB_VM_GUESTADD_ISO_LOC="${VB_DVD_LOC}/${VB_VM_GUESTADD_ISO}"
if [ ! -f $VB_VM_GUESTADD_ISO_LOC ]; then
echo
echo "Guest Addition ISO not found at: $VB_VM_GUESTADD_ISO_LOC"
echo "Update variable VB_VM_GUESTADD_ISO and/or download Guest additions"
echo "List of downloaded Guest Additions ..."
ls -1 $VB_DVD_LOC/VBoxGuestAdditions*
echo
exit 1
fi
#
SATACPD="$SATAC (${SATAP}, ${SATAD})"
SATACPD1="$SATAC[ ]*(${SATAP},[ ]*${SATAD}):"
INUSE=`VBoxManage showvminfo "${VB_VM_NAME}" | grep -c "$SATACPD1"`
if [ $INUSE -gt 0 ]; then
echo "SATA: $SATACPD is already in use"
echo
read -e -p "Override (y/n) : " -i "n" SATAOV
if [[ $SATAOV == "y" || $SATAOV == "Y" ]]; then
echo "Overriding ..."
else
exit 1
fi
fi
echo "Attaching media ${VB_VM_GUESTADD_ISO} on ${VB_VM_NAME}
"
read -p "Press [Enter] key to continue or [Ctrl-C] to break ..."
#
VM_RUNNING=`VBoxManage showvminfo ${VB_VM_NAME}|\
grep State|grep -c "running"`
if [ $VM_RUNNING -eq 1 ]; then
echo "
VM $VB_VM_NAME is running ...
Please powerdown VM before proceeding.
Exiting ...
"
exit 1
fi
#
#echo "Taking safety snapshot before installing/upgrading GA ..."
#VBoxManage snapshot "${VB_VM_NAME}" take $GASS
#
echo "Attaching Guest Additions Media ..."
VBoxManage storageattach ${VB_VM_NAME} \
--storagectl "${SATAC}" --port $SATAP --device $SATAD \
--type dvddrive --medium $VB_VM_GUESTADD_ISO_LOC
#
echo "
VM VRDE Port details (if any):"
VBoxManage showvminfo ${VB_VM_NAME}|grep "VRDE property: TCP/Ports"
echo "
Powering on VM ..."
VBoxManage startvm "${VB_VM_NAME}" --type headless
echo "Pausing for VM to fully power on ..."
echo "Proceed once VM is powered-on and you have logged into VM"
#echo "Note: If unaware of Guest IP, wait until full power-on and continue."
#read -p "Press [Enter] key to continue or [Ctrl-C] to break ..."
#echo "
#Guest IP (in case you did not already know it):"
#VBoxManage guestcontrol "${VB_VM_NAME}" exec --image /sbin/ifconfig \
# --username $VB_VM_GUEST_USER --password $VB_VM_GUEST_PASS \
# --wait-stdout | grep "inet addr"
echo
read -p "Press [Enter] key to continue or [Ctrl-C] to break ..."
#
echo "
Proceed to install Guest Additions:
Run the following commands first (optional) on Guest (as root) and
to upgrade OS and install DKMS."
echo "
aptitude update
aptitude upgrade
#aptitude dist-upgrade # May be required sometimes
reboot # if required
aptitude -y install dkms
#
#Waiting to complete upgrades and dkms install on guest
"
read -p "Press [Enter] key to continue or [Ctrl-C] to break ..."
echo
#
echo "Install (Linux) Guest additions with these steps as root:"
echo "mount /dev/cdrom /mnt
cd /mnt
ls -l
sh ./VBoxLinuxAdditions.run
cd
umount /mnt"
echo
echo "Note: You can safely ignore the below error"
echo "-- Could not find the X.Org or XFree86 Window System, skipping. --"
echo
echo "Waiting to complete Guest Additions Install"
read -p "Press [Enter] key to continue or [Ctrl-C] to break ..."
echo
echo "Please shutdown VM"
read -p "Press [Enter] key to continue or [Ctrl-C] to break ..."
echo "Waiting for complete shutdown"
echo "Sleeping 30 seconds ...
Depending on your system it make take longer to shutdown your VM"
sleep 30
read -p "Press [Enter] key to continue or [Ctrl-C] to break ..."
echo
#
echo "Removing Guest Additions Media ..."
VBoxManage storageattach ${VB_VM_NAME} \
--storagectl "${SATAC}" --port $SATAP --device $SATAD \
--type dvddrive --medium none
#
echo "Powering on VM ..."
VBoxManage startvm "${VB_VM_NAME}" --type headless
echo "
Once VM is powered on optionally verify Guest Additions install.
Run the following two commands to verify (root not required):
1. lsmod | grep -i vboxguest
Should return vboxguest ...
2. modinfo vboxguest
Should return detailed info including GA version
"
#
echo "Done"
exit