Skip to content
This repository was archived by the owner on Feb 8, 2021. It is now read-only.

Commit 8104d9b

Browse files
committed
unified binary for both xen and qemu/kvm
Signed-off-by: Wang Xu <gnawux@gmail.com>
1 parent 1a2876a commit 8104d9b

File tree

2 files changed

+70
-75
lines changed

2 files changed

+70
-75
lines changed

hyper-bootstrap-xen.sh

Lines changed: 44 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,24 @@
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
99
BASE_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
1411
set -e
1512
########## Variable ##########
1613
CURRENT_USER="$(id -un 2>/dev/null || true)"
1714
BOOTSTRAP_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"
2118
UNTAR_DIR="hyper-pkg"
2219
SUPPORT_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)
2523
UBUNTU_CODE=(trusty utopic vivid)
2624
DEBIAN_CODE=(jessie wheezy)
2725
CENTOS_VER=(6 7)
@@ -37,8 +35,9 @@ RESET=`tput sgr0`
3735
#Error Message
3836
ERR_ROOT_PRIVILEGE_REQUIRED=(10 "This install script need root privilege, please retry use 'sudo' or root user!")
3937
ERR_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!")
4139
ERR_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")
4241
ERR_QEMU_NOT_INSTALL=(40 "Please install Qemu 2.0+ first!")
4342
ERR_QEMU_LOW_VERSION=(41 "Need Qemu version 2.0 at least!")
4443
ERR_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
}
207212
check_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
}
219225
check_deps_initsystem() {
220226
if [ "${LSB_DISTRO}" == "ubuntu" -a "${LSB_CODE}" == "utopic" ];then
@@ -229,11 +235,11 @@ check_deps_initsystem() {
229235
fetch_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
\rm -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
----------------------------------------------------
370373
To see how to use hyper cli:
@@ -396,16 +399,16 @@ command_exist() {
396399
get_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
}
406409
show_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}" ;;

hyper-bootstrap.sh

Lines changed: 26 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,14 @@
77
# install from local
88
# ./bootstrap.sh
99
BASE_DIR=$(cd "$(dirname "$0")"; pwd); cd ${BASE_DIR}
10-
DEV_MODE=""; SLEEP_SEC=10; SUPPORT_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
1411
set -e
1512
########## Variable ##########
1613
CURRENT_USER="$(id -un 2>/dev/null || true)"
1714
BOOTSTRAP_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"
2118
UNTAR_DIR="hyper-pkg"
2219
SUPPORT_EMAIL="support@hyper.sh"
2320
########## Constant ##########
@@ -40,6 +37,7 @@ ERR_ROOT_PRIVILEGE_REQUIRED=(10 "This install script need root privilege, please
4037
ERR_NOT_SUPPORT_PLATFORM=(20 "Sorry, Hyper only support x86_64 platform!")
4138
ERR_NOT_SUPPORT_DISTRO=(21 "Sorry, Hyper only support ubuntu/debian/fedora/centos/linuxmint(17.x) now!")
4239
ERR_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")
4341
ERR_QEMU_NOT_INSTALL=(40 "Please install Qemu 2.0+ first!")
4442
ERR_QEMU_LOW_VERSION=(41 "Need Qemu version 2.0 at least!")
4543
ERR_XEN_NOT_INSTALL=(50 "Please install xen 4.5+ first!")
@@ -101,11 +99,7 @@ check_deps() {
10199
show_message info "Check dependency "
102100
check_deps_platform
103101
check_deps_distro
104-
if [ "${SUPPORT_XEN}" == "" ];then
105-
check_deps_qemu
106-
else
107-
check_deps_xen
108-
fi
102+
check_deps_qemu || check_deps_xen || exit ${${ERR_NO_HYPERVISOR[0]}}
109103
check_deps_initsystem
110104
show_message done " Done"
111105
}
@@ -191,8 +185,8 @@ check_deps_xen() {
191185
set +e
192186
${BASH_C} "which xl" >/dev/null 2>&1
193187
if [ $? -ne 0 ];then
194-
show_message error "${ERR_XEN_NOT_INSTALL[1]}"
195-
exit ${ERR_XEN_NOT_INSTALL[0]}
188+
show_message info "${ERR_XEN_NOT_INSTALL[1]}"
189+
return ${ERR_XEN_NOT_INSTALL[0]}
196190
else
197191
${BASH_C} "xl info" >/dev/null 2>&1
198192
if [ $? -eq 0 ];then
@@ -201,30 +195,32 @@ check_deps_xen() {
201195
XEN_VERSION=$( ${BASH_C} "xl info" | grep xen_version | awk '{print $3}' )
202196
show_message debug "xen(${XEN_VERSION}) found"
203197
if [[ $XEN_MAJOR -ge 4 ]] && [[ $XEN_MINOR -ge 5 ]];then
204-
PKG_FILE="hyper${SUPPORT_XEN}-latest${DEV_MODE}.tgz"
205-
UNTAR_DIR="hyper-pkg${SUPPORT_XEN}"
198+
PKG_FILE="hyper-latest.tgz"
199+
UNTAR_DIR="hyper-pkg"
206200
else
207-
show_message error "${ERR_XEN_VER_LOW[1]}"
208-
exit ${ERR_XEN_VER_LOW[0]}
201+
show_message info "${ERR_XEN_VER_LOW[1]}"
202+
return ${ERR_XEN_VER_LOW[0]}
209203
fi
210204
else
211-
show_message error "${ERR_XEN_GET_VER_FAILED[1]}"
212-
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]}
213207
fi
214208
fi
215209
set -e
210+
return 0
216211
}
217212
check_deps_qemu() { #QEMU 2.0+ should be installed
218213
if (command_exist qemu-system-x86_64);then
219214
local QEMU_VER=$(qemu-system-x86_64 --version | awk '{print $4}' | cut -d"," -f1)
220215
read QMAJOR QMINOR QFIX < <( echo ${QEMU_VER} | awk -F'.' '{print $1,$2,$3 }')
221216
if [ ${QMAJOR} -lt 2 ] ;then
222-
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]}
223218
fi
224219
else
225-
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]}
226221
fi
227222
echo -n "."
223+
return 0
228224
}
229225
check_deps_initsystem() {
230226
if [ "${LSB_DISTRO}" == "ubuntu" -a "${LSB_CODE}" == "utopic" ];then
@@ -239,11 +235,11 @@ check_deps_initsystem() {
239235
fetch_hyper_package() {
240236
show_message info "Fetch checksum and package...\n"
241237
set +e
242-
${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"
243239
if [ $? -ne 0 ];then
244-
S3_URL="http://mirror-hyper-install${DEV_MODE}.s3.amazonaws.com"
240+
S3_URL="http://mirror-hyper-install.s3.amazonaws.com"
245241
else
246-
S3_URL="http://hyper-install${DEV_MODE}.s3.amazonaws.com"
242+
S3_URL="http://hyper-install.s3.amazonaws.com"
247243
fi
248244
local SRC_URL="${S3_URL}/${PKG_FILE}"
249245
local TGT_FILE="${BOOTSTRAP_DIR}/${PKG_FILE}"
@@ -252,7 +248,7 @@ fetch_hyper_package() {
252248
show_message debug "${SRC_URL} => ${TGT_FILE}"
253249
mkdir -p ${BOOTSTRAP_DIR} && cd ${BOOTSTRAP_DIR}
254250
if [ -s ${TGT_FILE} ];then
255-
if [ "${USE_WGET}" == "true" -a "${DEV_MODE}" == "" ];then
251+
if [ "${USE_WGET}" == "true" ];then
256252
${CURL_C} ${SRC_URL}.md5 2>&1 | grep --line-buffered "%" | sed -u -e "s,\.,,g" | awk '{printf("\b\b\b\b%4s", $2)}'
257253
else
258254
${CURL_C} ${TGT_FILE}.md5 ${SRC_URL}.md5
@@ -274,7 +270,7 @@ fetch_hyper_package() {
274270
fi
275271
if [ ! -f ${TGT_FILE} ];then
276272
\rm -rf ${TGT_FILE}.md5 >/dev/null 2>&1
277-
if [ "${USE_WGET}" == "true" -a "${DEV_MODE}" == "" ];then
273+
if [ "${USE_WGET}" == "true" ];then
278274
${CURL_C} ${SRC_URL}.md5 2>&1 | grep --line-buffered "%" | sed -u -e "s,\.,,g" | awk '{printf("\b\b\b\b%4s", $2)}'
279275
${CURL_C} ${SRC_URL} 2>&1 | grep --line-buffered "%" | sed -u -e "s,\.,,g" | awk '{printf("\b\b\b\b%4s", $2)}'
280276
else
@@ -371,11 +367,7 @@ start_hyperd_service() {
371367
set +e
372368
pgrep hyperd >/dev/null 2>&1
373369
if [ $? -eq 0 ];then
374-
if [ "${SUPPORT_XEN}" == "-xen" ];then
375-
show_message success "\nhyperd for xen is running."
376-
else
377-
show_message success "\nhyperd for kvm/qemu is running."
378-
fi
370+
show_message success "\nhyperd is running."
379371
cat <<COMMENT
380372
----------------------------------------------------
381373
To see how to use hyper cli:
@@ -407,16 +399,16 @@ command_exist() {
407399
get_curl() {
408400
CURL_C=""; USE_WGET="false"
409401
if (command_exist curl);then
410-
if [ "${DEV_MODE}" != "" ];then CURL_C='curl -SL -o '; else CURL_C='curl -O --progress-bar -o '; fi
402+
CURL_C='curl -SL -o '
411403
elif (command_exist wget);then
412404
USE_WGET="true"
413-
if [ "${DEV_MODE}" != "" ];then CURL_C='wget -O '; else CURL_C='wget --progress=dot '; fi
405+
CURL_C='wget -O '
414406
fi
415407
echo "${USE_WGET}|${CURL_C}"
416408
}
417409
show_message() {
418410
case "$1" in
419-
debug) if [ "${DEV_MODE}" == "-dev" ];then echo -e "\n[${BLUE}DEBUG${RESET}] : $2"; fi;;
411+
debug) echo -e "\n[${BLUE}DEBUG${RESET}] : $2";;
420412
info) echo -e -n "\n${WHITE}$2${RESET}" ;;
421413
warn) echo -e "\n[${YELLOW}WARN${RESET}] : $2" ;;
422414
done|success) echo -e "${LIGHT}${GREEN}$2${RESET}" ;;

0 commit comments

Comments
 (0)