Statistics
| Branch: | Tag: | Revision:

root / snf-image-helper / tasks / 30MountImage.in @ 83d0c566

History | View | Annotate | Download (2.3 kB)

1
#! /bin/bash
2

    
3
# Copyright (C) 2011 GRNET S.A. 
4
#
5
# This program is free software; you can redistribute it and/or modify
6
# it under the terms of the GNU General Public License as published by
7
# the Free Software Foundation; either version 2 of the License, or
8
# (at your option) any later version.
9
#
10
# This program is distributed in the hope that it will be useful, but
11
# WITHOUT ANY WARRANTY; without even the implied warranty of
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13
# General Public License for more details.
14
#
15
# You should have received a copy of the GNU General Public License
16
# along with this program; if not, write to the Free Software
17
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
18
# 02110-1301, USA.
19

    
20
### BEGIN TASK INFO
21
# Provides:		MountImage
22
# RunBefore:		UmountImage
23
# Short-Description:	Mount the partition that hosts the image
24
### END TASK INFO
25

    
26
set -e
27
. "@commondir@/common.sh"
28

    
29
trap task_cleanup EXIT
30
report_task_start
31

    
32
if [ ! -d "$SNF_IMAGE_TARGET" ]; then
33
    log_error "Target dir:\`$SNF_IMAGE_TARGET' is missing"
34
fi
35

    
36
if [ -z "$SNF_IMAGE_PROPERTY_ROOT_PARTITION" ]; then
37
    log_error "Required image property \`ROOT_PARTITION' not defined or empty"
38
fi
39

    
40
rootdev="${SNF_IMAGE_DEV}${SNF_IMAGE_PROPERTY_ROOT_PARTITION}"
41

    
42
if [ ! -b "$rootdev" ]; then
43
    log_error "Root partition device:\`$rootdev' is not a block device. " \
44
        "Please check if the value for image property \`ROOT_PARTITION' " \
45
        "(=$SNF_IMAGE_PROPERTY_ROOT_PARTITION) is valid."
46
fi
47

    
48
if [[ "$SNF_IMAGE_PROPERTY_OSFAMILY" == *bsd ]]; then
49
    if ! $DUMPFS_UFS "$rootdev" &> /dev/null; then
50
        os=${SNF_IMAGE_PROPERTY_OSFAMILY^^[bsd]}
51
        log_error "For ${os^?} images only UFS root partitions are supported."
52
    fi
53

    
54
    ufstype="$(get_ufstype "$rootdev")"
55
    if [ "x$ufstype" = "x" ]; then
56
        log_error "Unable to recognize the UFS type in the root partition."
57
    fi
58

    
59
    $MOUNT -t ufs -o ufstype="$ufstype,rw" "$rootdev" "$SNF_IMAGE_TARGET"
60

    
61
    # See mount_all() for a reason why we do this
62
    $MOUNT -o remount,rw "$SNF_IMAGE_TARGET"
63
else
64
    $MOUNT -o rw "$rootdev" "$SNF_IMAGE_TARGET"
65
fi
66

    
67
if [ "$SNF_IMAGE_PROPERTY_OSFAMILY" = "windows" ]; then
68
    exit 0
69
fi
70

    
71
mount_all "$SNF_IMAGE_PROPERTY_OSFAMILY" "$SNF_IMAGE_DEV" "$SNF_IMAGE_TARGET"
72

    
73
exit 0
74

    
75
# vim: set sta sts=4 shiftwidth=4 sw=4 et ai :