Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- ###############################################################################
- ## Contact Information:
- ## Robert Graham <robertgraham1906@gmail.com>
- ###############################################################################
- ### VMware ESXi 5.0.0u2 Build Environment Setup Script
- ### https://my.vmware.com/web/vmware/details?productId=229&downloadGroup=VSPHERE50U2_OSS
- ###############################################################################
- VMWARE_FOLDER=$HOME/vmware-esxi-5.0
- BUILD_FOLDER=$PWD
- # Verify Root
- if [ "$(id -u)" -ne "0" ]
- then
- echo "ERROR: This should be run as root"
- exit 1
- fi
- if [ -z "$1" ] || [ -n "$2" ]
- then
- echo "ERROR: incorrect input params"
- echo "$(basename $0) <path_to_vmkernel_source_tarball>"
- exit 1
- fi
- VMWARE_FILE="$1"
- if [ ! -f $VMWARE_FILE ]
- then
- echo "ERROR: Missing $VMWARE_FILE"
- exit 1
- fi
- # Download required packages
- echo "Checking for required packages ..."
- # Check Distro Type
- if [ -f /etc/debian_version ]
- then
- OS=deb
- echo "Querying for required packages ..."
- dpkg -l build-essential rpm2cpio ncurses-dev flex bison
- if [ $? -ne 0 ]
- then
- echo "ERROR: missing one or more required packages."
- echo "Required: build-essential rpm2cpio ncurses-dev flex bison"
- exit
- fi
- elif [ -f /etc/redhat-release ]
- then
- OS=rpm
- echo "Installing required packages ..."
- if [ ! -n "$(yum list installed | grep 'rpm\.')" ] \
- || [ ! -n "$(yum list installed | grep 'ncurses-devel\.')" ] \
- || [ ! -n "$(yum list installed | grep 'flex\.')" ] \
- || [ ! -n "$(yum list installed | grep 'bison\.')" ] \
- || [ ! -n "$(yum list installed | grep 'kernel-devel\.')" ] \
- || [ ! -n "$(yum list installed | grep 'rpm-build\.')" ]
- then
- echo "ERROR: missing one or more required packages."
- echo "Required: rpm ncurses-devel flex bison kernel-devel rpm-build"
- exit 1
- fi
- else
- echo "ERROR: Unable to determine distro type [deb or rpm]"
- exit 1
- fi
- # Delete vmware esxi folder
- if [ -d $VMWARE_FOLDER ]
- then
- rm -rf $VMWARE_FOLDER
- fi
- # Build/Install Texinfo 4.9
- echo "Downloading and installing Texinfo 4.9 (Required) ..."
- mkdir -p $VMWARE_FOLDER/texinfo
- cd $VMWARE_FOLDER/texinfo
- wget http://ftp.gnu.org/gnu/texinfo/texinfo-4.9.tar.gz > /dev/null
- tar zxvf texinfo-4.9.tar.gz > /dev/null || \
- { echo "ERROR: texinfo-4.9.tar.gz does not exist" ; exit 1 ; }
- cd texinfo-4.9
- ./configure
- make > /dev/null
- make install
- cd ../
- # Create output folders
- mkdir -p $VMWARE_FOLDER/vsphere
- mkdir -p $VMWARE_FOLDER/toolchain
- cd $VMWARE_FOLDER/vsphere
- # Extract VMware ESXI source code
- echo "Extracting VMware ESXi Source Code ..."
- tar -zxvf $VMWARE_FILE > /dev/null || \
- { echo "ERROR: VMware open source file does not exist" ; exit 1 ; }
- # Update glibc 2.3.2-95
- echo "Building glibc 2.3.2-95 ..."
- cd vmkdrivers-gpl || \
- { echo "ERROR: folder does not exist" ; exit 1 ; }
- cd glibc-2.3.2-95.44 || \
- { echo "ERROR: folder does not exist" ; exit 1 ; }
- grep -rl "TROOT=/build/toolchain" . \
- | xargs sed -i "s@TROOT=/build/toolchain@TROOT=$VMWARE_FOLDER/toolchain@g"
- bash BUILD.txt > /dev/null
- if [ $? -ne 0 ]
- then
- echo "ERROR: $PWD/BUILD.txt failed"
- exit 1
- fi
- # Refresh the Environment, as makeinfo and glibc were built manually
- echo "Refreshing environment by running commands in new shell"
- exec su - $USER << EOF
- cd $VMWARE_FOLDER/vsphere/vmkdrivers-gpl
- # Build binutils-2.17.50.0.15-modcall
- echo "Building binutils-2.17.50.0.15-modcall ..."
- cd binutils-2.17.50.0.15-modcall || \
- { echo "ERROR: folder does not exist" ; exit 1 ; }
- grep -rl "TROOT=/build/toolchain" . \
- | xargs sed -i "s@TROOT=/build/toolchain@TROOT=$VMWARE_FOLDER/toolchain@g"
- export CFLAGS="-w"
- bash BUILD.txt > /dev/null
- if [ $? -ne 0 ]
- then
- echo "ERROR: $PWD/BUILD.txt failed"
- exit 1
- fi
- cd ../
- # Build GCC 4.1.2-9
- echo "Building GCC 4.1.2-9 ..."
- cd gcc-4.1.2-9 || { echo "ERROR: folder does not exist" ; exit 1 ; }
- grep -rl "TROOT=/build/toolchain" . \
- | xargs sed -i "s@TROOT=/build/toolchain@TROOT=$VMWARE_FOLDER/toolchain@g"
- export CFLAGS=""
- bash BUILD.txt > /dev/null
- if [ $? -ne 0 ]
- then
- echo "ERROR: $PWD/BUILD.txt failed"
- exit 1
- fi
- cd ../
- # Build ESXi 5.0 Drivers (OPTIONAL)
- echo "Building ESXi 5.0 Drivers ..."
- tar zxvf vmkdrivers-gpl.tgz || \
- { echo "ERROR: vmkdrivers-gpl.tgz file dne\n" ; exit 1 ; }
- grep -rl "CC=/build/toolchain" . \
- | xargs sed -i "s@CC=/build/toolchain@CC=$VMWARE_FOLDER/toolchain@g"
- grep -rl "LD=/build/toolchain" . \
- | xargs sed -i "s@LD=/build/toolchain@LD=$VMWARE_FOLDER/toolchain@g"
- ./build-vmkdrivers.sh
- if [ $? -ne 0 ]
- then
- echo "ERROR: $PWD/build-vmkdrivers.sh failed"
- exit 1
- fi
- echo "VMware ESXi 5.0 kernel source output to $VMWARE_FOLDER"
- EOF
- if [ $? -ne 0 ]
- then
- exit 1
- else
- exit 0
- fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement