22# Description: This script is used to install hyper cli and hyperd
33# Usage:
44# install from remote
5- # wget -qO- https://hyper.sh/install-xen | bash
6- # curl -sSL https://hyper.sh/install-xen | bash
5+ # wget -qO- https://hyper.sh/install | bash
6+ # curl -sSL https://hyper.sh/install | bash
77# install from local
88# ./bootstrap.sh
99BASE_DIR=$( cd " $( dirname " $0 " ) " ; pwd) ; cd ${BASE_DIR}
10- DEV_MODE=" " ; SLEEP_SEC=10; SUPPORT_XEN=" -xen" ;
11- if [ $# -eq 1 -a " $1 " == " --dev" ]; then
12- DEV_MODE=" -dev" ; SLEEP_SEC=3; echo " [test mode]"
13- fi
10+ SLEEP_SEC=10
1411set -e
1512# ######### Variable ##########
1613CURRENT_USER=" $( id -un 2> /dev/null || true) "
1714BOOTSTRAP_DIR=" /tmp/hyper-bootstrap-${CURRENT_USER} "
1815# ######### Parameter ##########
19- S3_URL=" http://hyper-install${DEV_MODE} .s3.amazonaws.com"
20- PKG_FILE=" hyper-latest${DEV_MODE} .tgz"
16+ S3_URL=" http://hyper-install.s3.amazonaws.com"
17+ PKG_FILE=" hyper-latest.tgz"
2118UNTAR_DIR=" hyper-pkg"
2219SUPPORT_EMAIL=" support@hyper.sh"
2320# ######### Constant ##########
24- SUPPORT_DISTRO=(debian ubuntu fedora centos)
21+ SUPPORT_DISTRO=(debian ubuntu fedora centos linuxmint)
22+ LINUX_MINT_CODE=(rafaela rebecca qiana)
2523UBUNTU_CODE=(trusty utopic vivid)
2624DEBIAN_CODE=(jessie wheezy)
2725CENTOS_VER=(6 7)
@@ -37,8 +35,9 @@ RESET=`tput sgr0`
3735# Error Message
3836ERR_ROOT_PRIVILEGE_REQUIRED=(10 " This install script need root privilege, please retry use 'sudo' or root user!" )
3937ERR_NOT_SUPPORT_PLATFORM=(20 " Sorry, Hyper only support x86_64 platform!" )
40- ERR_NOT_SUPPORT_DISTRO=(21 " Sorry, Hyper only support ubuntu/debian/fedora/centos now!" )
38+ ERR_NOT_SUPPORT_DISTRO=(21 " Sorry, Hyper only support ubuntu/debian/fedora/centos/linuxmint(17.x) now!" )
4139ERR_NOT_SUPPORT_DISTRO_VERSION=(22)
40+ ERR_NO_HYPERVISOR=(39 " You should have either Xen 4.5+ or Qemu 2.0+ installed to run hyper" )
4241ERR_QEMU_NOT_INSTALL=(40 " Please install Qemu 2.0+ first!" )
4342ERR_QEMU_LOW_VERSION=(41 " Need Qemu version 2.0 at least!" )
4443ERR_XEN_NOT_INSTALL=(50 " Please install xen 4.5+ first!" )
@@ -100,11 +99,7 @@ check_deps() {
10099 show_message info " Check dependency "
101100 check_deps_platform
102101 check_deps_distro
103- if [ " ${SUPPORT_XEN} " == " " ]; then
104- check_deps_qemu
105- else
106- check_deps_xen
107- fi
102+ check_deps_qemu || check_deps_xen || exit ${${ERR_NO_HYPERVISOR[0]} }
108103 check_deps_initsystem
109104 show_message done " Done"
110105}
@@ -148,6 +143,15 @@ check_deps_distro() {
148143 esac
149144 fi
150145 case " ${LSB_DISTRO} " in
146+ linuxmint)
147+ if [ " ${LSB_DISTRO} " == " linuxmint" ]
148+ then SUPPORT_CODE_LIST=" ${LINUX_MINT_CODE[@]} " ;
149+ fi
150+ if (echo " ${SUPPORT_CODE_LIST} " | grep -v -w " ${LSB_CODE} " & > /dev/null); then
151+ show_message error " Hyper support ${LSB_DISTRO} ( ${SUPPORT_CODE_LIST} ), but current is ${LSB_CODE} (${LSB_VER} )"
152+ exit ${ERR_NOT_SUPPORT_DISTRO_VERSION[0]}
153+ fi
154+ ;;
151155 ubuntu|debian)
152156 if [ " ${LSB_DISTRO} " == " ubuntu" ]
153157 then SUPPORT_CODE_LIST=" ${UBUNTU_CODE[@]} " ;
@@ -181,8 +185,8 @@ check_deps_xen() {
181185 set +e
182186 ${BASH_C} " which xl" > /dev/null 2>&1
183187 if [ $? -ne 0 ]; then
184- show_message error " ${ERR_XEN_NOT_INSTALL[1]} "
185- exit ${ERR_XEN_NOT_INSTALL[0]}
188+ show_message info " ${ERR_XEN_NOT_INSTALL[1]} "
189+ return ${ERR_XEN_NOT_INSTALL[0]}
186190 else
187191 ${BASH_C} " xl info" > /dev/null 2>&1
188192 if [ $? -eq 0 ]; then
@@ -191,30 +195,32 @@ check_deps_xen() {
191195 XEN_VERSION=$( ${BASH_C} " xl info" | grep xen_version | awk ' {print $3}' )
192196 show_message debug " xen(${XEN_VERSION} ) found"
193197 if [[ $XEN_MAJOR -ge 4 ]] && [[ $XEN_MINOR -ge 5 ]]; then
194- PKG_FILE=" hyper${SUPPORT_XEN} -latest${DEV_MODE} .tgz"
195- UNTAR_DIR=" hyper-pkg${SUPPORT_XEN} "
198+ PKG_FILE=" hyper-latest.tgz"
199+ UNTAR_DIR=" hyper-pkg"
196200 else
197- show_message error " ${ERR_XEN_VER_LOW[1]} "
198- exit ${ERR_XEN_VER_LOW[0]}
201+ show_message info " ${ERR_XEN_VER_LOW[1]} "
202+ return ${ERR_XEN_VER_LOW[0]}
199203 fi
200204 else
201- show_message error " ${ERR_XEN_GET_VER_FAILED[1]} "
202- exit ${ERR_XEN_GET_VER_FAILED[0]}
205+ show_message info " ${ERR_XEN_GET_VER_FAILED[1]} "
206+ return ${ERR_XEN_GET_VER_FAILED[0]}
203207 fi
204208 fi
205209 set -e
210+ return 0
206211}
207212check_deps_qemu () { # QEMU 2.0+ should be installed
208213 if (command_exist qemu-system-x86_64); then
209214 local QEMU_VER=$( qemu-system-x86_64 --version | awk ' {print $4}' | cut -d" ," -f1)
210215 read QMAJOR QMINOR QFIX < <( echo ${QEMU_VER} | awk -F' .' ' {print $1,$2,$3 }' )
211216 if [ ${QMAJOR} -lt 2 ] ; then
212- show_message error " ${ERR_QEMU_LOW_VERSION[1]} \n" && exit ${ERR_QEMU_LOW_VERSION[0]}
217+ show_message info " ${ERR_QEMU_LOW_VERSION[1]} \n" && return ${ERR_QEMU_LOW_VERSION[0]}
213218 fi
214219 else
215- show_message error " ${ERR_QEMU_NOT_INSTALL[1]} \n" && exit ${ERR_QEMU_NOT_INSTALL[0]}
220+ show_message info " ${ERR_QEMU_NOT_INSTALL[1]} \n" && return ${ERR_QEMU_NOT_INSTALL[0]}
216221 fi
217222 echo -n " ."
223+ return 0
218224}
219225check_deps_initsystem () {
220226 if [ " ${LSB_DISTRO} " == " ubuntu" -a " ${LSB_CODE} " == " utopic" ]; then
@@ -229,11 +235,11 @@ check_deps_initsystem() {
229235fetch_hyper_package () {
230236 show_message info " Fetch checksum and package...\n"
231237 set +e
232- ${BASH_C} " ping -c 3 -W 2 hyper-install${DEV_MODE} .s3.amazonaws.com >/dev/null 2>&1"
238+ ${BASH_C} " ping -c 3 -W 2 hyper-install.s3.amazonaws.com >/dev/null 2>&1"
233239 if [ $? -ne 0 ]; then
234- S3_URL=" http://mirror-hyper-install${DEV_MODE} .s3.amazonaws.com"
240+ S3_URL=" http://mirror-hyper-install.s3.amazonaws.com"
235241 else
236- S3_URL=" http://hyper-install${DEV_MODE} .s3.amazonaws.com"
242+ S3_URL=" http://hyper-install.s3.amazonaws.com"
237243 fi
238244 local SRC_URL=" ${S3_URL} /${PKG_FILE} "
239245 local TGT_FILE=" ${BOOTSTRAP_DIR} /${PKG_FILE} "
@@ -242,7 +248,7 @@ fetch_hyper_package() {
242248 show_message debug " ${SRC_URL} => ${TGT_FILE} "
243249 mkdir -p ${BOOTSTRAP_DIR} && cd ${BOOTSTRAP_DIR}
244250 if [ -s ${TGT_FILE} ]; then
245- if [ " ${USE_WGET} " == " true" -a " ${DEV_MODE} " == " " ]; then
251+ if [ " ${USE_WGET} " == " true" ]; then
246252 ${CURL_C} ${SRC_URL} .md5 2>&1 | grep --line-buffered " %" | sed -u -e " s,\.,,g" | awk ' {printf("\b\b\b\b%4s", $2)}'
247253 else
248254 ${CURL_C} ${TGT_FILE} .md5 ${SRC_URL} .md5
@@ -264,7 +270,7 @@ fetch_hyper_package() {
264270 fi
265271 if [ ! -f ${TGT_FILE} ]; then
266272 \r m -rf ${TGT_FILE} .md5 > /dev/null 2>&1
267- if [ " ${USE_WGET} " == " true" -a " ${DEV_MODE} " == " " ]; then
273+ if [ " ${USE_WGET} " == " true" ]; then
268274 ${CURL_C} ${SRC_URL} .md5 2>&1 | grep --line-buffered " %" | sed -u -e " s,\.,,g" | awk ' {printf("\b\b\b\b%4s", $2)}'
269275 ${CURL_C} ${SRC_URL} 2>&1 | grep --line-buffered " %" | sed -u -e " s,\.,,g" | awk ' {printf("\b\b\b\b%4s", $2)}'
270276 else
@@ -293,7 +299,7 @@ install_hyper() {
293299 show_message info " Installing "
294300 set +e
295301 cd ${BOOTSTRAP_DIR}
296- ${BASH_C} " ./install.sh --disable-qboot " 1> /dev/null
302+ ${BASH_C} " ./install.sh" 1> /dev/null
297303 if [ $? -ne 0 ]; then
298304 show_message error " ${ERR_EXEC_INSTALL_FAILED[1]} " && exit " ${ERR_EXEC_INSTALL_FAILED[0]} "
299305 fi
@@ -317,8 +323,9 @@ install_hyperd_service() {
317323 local SRC_INIT_FILE=" "
318324 local TGT_INIT_FILE=" "
319325 if [ " ${INIT_SYSTEM} " == " sysvinit" ]; then
320- if [ " ${LSB_DISTRO} " == " debian" -a " ${LSB_CODE} " == " wheezy" ];
321- then
326+ if [ " ${LSB_DISTRO} " == " debian" -a " ${LSB_CODE} " == " wheezy" ] ; then
327+ SRC_INIT_FILE=" ${BOOTSTRAP_DIR} /service/init.d/hyperd.ubuntu"
328+ elif [ " ${LSB_DISTRO} " == " linuxmint" ] ; then
322329 SRC_INIT_FILE=" ${BOOTSTRAP_DIR} /service/init.d/hyperd.ubuntu"
323330 else
324331 SRC_INIT_FILE=" ${BOOTSTRAP_DIR} /service/init.d/hyperd.${LSB_DISTRO} "
@@ -360,11 +367,7 @@ start_hyperd_service() {
360367 set +e
361368 pgrep hyperd > /dev/null 2>&1
362369 if [ $? -eq 0 ]; then
363- if [ " ${SUPPORT_XEN} " == " -xen" ]; then
364- show_message success " \nhyperd for xen is running."
365- else
366- show_message success " \nhyperd for kvm/qemu is running."
367- fi
370+ show_message success " \nhyperd is running."
368371 cat << COMMENT
369372----------------------------------------------------
370373To see how to use hyper cli:
@@ -396,16 +399,16 @@ command_exist() {
396399get_curl () {
397400 CURL_C=" " ; USE_WGET=" false"
398401 if (command_exist curl); then
399- if [ " ${DEV_MODE} " != " " ] ; then CURL_C=' curl -SL -o ' ; else CURL_C= ' curl -O --progress-bar -o ' ; fi
402+ CURL_C=' curl -SL -o '
400403 elif (command_exist wget); then
401404 USE_WGET=" true"
402- if [ " ${DEV_MODE} " != " " ] ; then CURL_C=' wget -O ' ; else CURL_C= ' wget --progress=dot ' ; fi
405+ CURL_C=' wget -O '
403406 fi
404407 echo " ${USE_WGET} |${CURL_C} "
405408}
406409show_message () {
407410 case " $1 " in
408- debug) if [ " ${DEV_MODE} " == " -dev " ] ; then echo -e " \n[${BLUE} DEBUG${RESET} ] : $2 " ; fi ;;
411+ debug) echo -e " \n[${BLUE} DEBUG${RESET} ] : $2 " ;;
409412 info) echo -e -n " \n${WHITE} $2 ${RESET} " ;;
410413 warn) echo -e " \n[${YELLOW} WARN${RESET} ] : $2 " ;;
411414 done|success) echo -e " ${LIGHT}${GREEN} $2 ${RESET} " ;;
0 commit comments