cloudstack/scripts/storage/qcow2/get_domr_kernel.sh
Marcus Sorensen 8c5b82dfb4 Summary: several scripts are not mode executable
Detail: several scripts in the scripts directory weren't marked executable.
Normally this is handled/fixed in the packaging, but harder to deal with in
development environments, so marking them executable.

Signed-off-by: Marcus Sorensen <marcus@betterservers.com> 1358446902 -0700
2013-01-17 11:21:42 -07:00

132 lines
2.7 KiB
Bash
Executable File

#/bin/bash
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# $Id: get_domr_kernel.sh 9132 2010-06-04 20:17:43Z manuel $ $HeadURL: svn://svn.lab.vmops.com/repos/vmdev/java/scripts/storage/qcow2/get_domr_kernel.sh $
set -x
mount_local() {
local disk=$2
local path=$1
/sbin/lsmod | grep nbd &> /dev/null
local nbd_loaded=$?
if [ $nbd_loaded -ne 0 ]
then
modprobe nbd max_part=8 &> /dev/null
if [ $? -ne 0 ]
then
printf "No nbd module installed, failed to mount qcow2 image\n"
return 1
fi
fi
qemu-nbd -c /dev/nbd0 $disk &> /dev/null
if [ $? -ne 0 ]
then
printf "failed to create /dev/nbd0\n"
return 2
fi
mkdir -p ${path}
retry=5
while [ $retry -gt 0 ]
do
sleep 2
mount -o sync /dev/nbd0p1 ${path} &> /dev/null
if [ $? -eq 0 ]
then
break
fi
retry=$(($retry-1))
done
if [ $retry -eq 0 ]
then
qemu-nbd -d /dev/nbd0p1 &> /dev/null
sleep 0.5
qemu-nbd -d /dev/nbd0 &> /dev/null
printf "Faild to mount qcow2 image\n"
return 3
fi
return $?
}
umount_local() {
local path=$1
umount $path
qemu-nbd -d /dev/nbd0p1
sleep 0.5
qemu-nbd -d /dev/nbd0
local ret=$?
rm -rf $path
return $ret
}
sflag=
kflag=
iflag=
while getopts 'k:s:i:' OPTION
do
case $OPTION in
k) kflag=1
domrKern="$OPTARG"
;;
i) iflag=1
domrRamfs="$OPTARG"
;;
s) sflag=1
image="$OPTARG"
;;
*) ;;
esac
done
if [ "$kflag$iflag$sflag" != "111" ]
then
printf "Error: no enough parameters" >&2
exit 1
fi
mntPoint=`mktemp -d`
mount_local $mntPoint $image
if [ $? -gt 0 ]
then
printf "Failed to mount disk" >&2
exit 2
fi
if [ -f $domrKern ]
then
rm -rf $domrKern
fi
if [ -f $domrRamfs ]
then
rm -rf $domrRamfs
fi
cp $mntPoint/boot/vmlinuz* $domrKern -f
cp $mntPoint/boot/initramfs* $domrRamfs -f
umount_local $mntPoint