Revision 77449e7c

b/common.sh.in
111 111
}
112 112

  
113 113
format_disk0() {
114
    if [ "${SWAP}" = "yes" ] ; then
114
    local sfdisk_cmd="$SFDISK -uM -H 255 -S 63 --quiet --Linux \"$1\""
115
    if [  "${SWAP}" = "yes" -a -z "${KERNEL_PATH}" ] ; then
115 116
        # Create three partitions:
116 117
        # 1 - 100MB /boot, bootable
117 118
        # 2 - Size of Memory, swap
118 119
        # 3 - Rest
119
        $SFDISK -uM -H 255 -S 63 --quiet --Linux "$1" <<EOF
120
        $sfdisk_cmd <<EOF
120 121
,100,L,*
121 122
,$INSTANCE_BE_memory,S
122 123
,,L
123 124
EOF
124
    else
125
    elif [  "${SWAP}" = "no" -a -z "${KERNEL_PATH}" ] ; then
125 126
        # Create two partitions:
126 127
        # 1 - 100MB /boot, bootable
127 128
        # 2 - Rest
128
        $SFDISK -uM -H 255 -S 63 --quiet --Linux "$1" <<EOF
129
        $sfdisk_cmd <<EOF
129 130
,100,L,*
130 131
,,L
131 132
EOF
133
    elif [  "${SWAP}" = "yes" -a -n "${KERNEL_PATH}" ] ; then
134
        # Create two partitions:
135
        # 1 - Size of Memory, swap
136
        # 2 - Rest
137
        $sfdisk_cmd <<EOF
138
,$INSTANCE_BE_memory,S
139
,,L
140
EOF
141
    elif [  "${SWAP}" = "no" -a -n "${KERNEL_PATH}" ] ; then
142
        # Create two partitions:
143
        # 1 - Whole
144
        $sfdisk_cmd <<EOF
145
,,L
146
EOF
132 147
    fi
133 148
}
134 149

  
135 150
mkfs_disk0() {
136
    local boot_dev=$1 root_dev=$2 swap_dev=$3
137
    # Format /boot
138
    mke2fs -Fjq -L /boot $boot_dev
139 151
    # Format /
140
    mke2fs -Fjq -L / $root_dev
141
    if [ "${SWAP}" = "yes" ] ; then
152
    mkfs.ext3 -Fq -L / $root_dev
153
    # Format /boot
154
    if [ -n "${boot_dev}" ] ; then
155
        mkfs.ext3 -Fq -L /boot $boot_dev
156
    fi
157
    # Format swap
158
    if [ -n "${swap_dev}" ] ; then
142 159
        # Format swap
143 160
        mkswap -f $swap_dev
144 161
    fi
145 162
}
146 163

  
147 164
mount_disk0() {
148
    local target=$1 root_dev=$2 boot_dev=$3
165
    local target=$1
149 166
    mount $root_dev $target
150 167
    CLEANUP+=("umount $target")
151
    $MKDIR_P $target/boot
152
    mount $boot_dev $target/boot
153
    CLEANUP+=("umount $target/boot")
168
    if [ -n "${boot_dev}" ] ; then
169
        $MKDIR_P $target/boot
170
        mount $boot_dev $target/boot
171
        CLEANUP+=("umount $target/boot")
172
    fi
154 173
}
155 174

  
156 175
map_disk0() {
157
  blockdev="$1"
158
  filesystem_dev_base=`$KPARTX -l -p- $blockdev | \
159
                       grep -m 1 -- "-1.*$blockdev" | \
160
                       $AWK '{print $1}'`
161
  if [ -z "$filesystem_dev_base" ]; then
162
    log_error "Cannot interpret kpartx output and get partition mapping"
163
    exit 1
164
  fi
165
  $KPARTX -a -p- $blockdev > /dev/null
166
  filesystem_dev="/dev/mapper/${filesystem_dev_base/%-1/}"
167
  if [ ! -b "/dev/mapper/$filesystem_dev_base" ]; then
168
    log_error "Can't find kpartx mapped partition: /dev/mapper/$filesystem_dev_base"
169
    exit 1
170
  fi
171
  echo "$filesystem_dev"
176
    blockdev="$1"
177
    filesystem_dev_base=`$KPARTX -l -p- $blockdev | \
178
                            grep -m 1 -- "-1.*$blockdev" | \
179
                            $AWK '{print $1}'`
180
    if [ -z "$filesystem_dev_base" ]; then
181
        log_error "Cannot interpret kpartx output and get partition mapping"
182
        exit 1
183
    fi
184
    $KPARTX -a -p- $blockdev > /dev/null
185
    filesystem_dev="/dev/mapper/${filesystem_dev_base/%-1/}"
186
    if [ ! -b "/dev/mapper/$filesystem_dev_base" ]; then
187
        log_error "Can't find kpartx mapped partition: /dev/mapper/$filesystem_dev_base"
188
        exit 1
189
    fi
190
    if [ "${SWAP}" = "yes" -a -z "${KERNEL_PATH}" ] ; then
191
        boot_dev="${filesystem_base_dev}-1"
192
        swap_dev="${filesystem_base_dev}-2"
193
        root_dev="${filesystem_base_dev}-3"
194
    elif [ "${SWAP}" = "no" -a -z "${KERNEL_PATH}" ] ; then
195
        boot_dev="${filesystem_base_dev}-1"
196
        root_dev="${filesystem_base_dev}-2"
197
    elif [ "${SWAP}" = "yes" -a -n "${KERNEL_PATH}" ] ; then
198
        swap_dev="${filesystem_base_dev}-1"
199
        root_dev="${filesystem_base_dev}-2"
200
    elif [ "${SWAP}" = "no" -a -n "${KERNEL_PATH}" ] ; then
201
        root_dev="${filesystem_base_dev}-1"
202
    fi
203
    echo "$filesystem_dev"
172 204
}
173 205

  
174 206
unmap_disk0() {
......
208 240
: ${IMAGE_DEBUG:="0"}
209 241

  
210 242
SCRIPT_NAME=$(basename $0)
243
KERNEL_PATH="$INSTANCE_HV_kernel_path"
211 244

  
212 245
if [ -f /sbin/blkid -a -x /sbin/blkid ]; then
213 246
    VOL_ID="/sbin/blkid -o value -s UUID"
b/create
56 56
    fi
57 57

  
58 58
    filesystem_base_dev=$(map_disk0 $blockdev)
59
    if [ "${SWAP}" = "yes" ] ; then
60
        boot_dev="${filesystem_base_dev}-1"
61
        swap_dev="${filesystem_base_dev}-2"
62
        root_dev="${filesystem_base_dev}-3"
63
    else
64
        boot_dev="${filesystem_base_dev}-1"
65
        root_dev="${filesystem_base_dev}-2"
66
    fi
67 59
    CLEANUP+=("unmap_disk0 $blockdev")
68 60

  
69 61
    if [ "${IMAGE_TYPE}" = "tarball" -o "${IMAGE_TYPE}" = "dump" ] ; then
70
        mkfs_disk0 $boot_dev $root_dev $swap_dev
62
        mkfs_disk0
71 63
    fi
72 64

  
73 65
    TARGET=`mktemp -d` || exit 1
74 66
    CLEANUP+=("rmdir $TARGET")
75 67

  
76 68
    # mount filesystems
77
    mount_disk0 $TARGET $root_dev $boot_dev
69
    mount_disk0 $TARGET
78 70

  
79 71
    if [ "${IMAGE_TYPE}" = "tarball" ] ; then
80 72
        # unpack image
81 73
        tar pzxf $IMAGE_FILE -C $TARGET
82 74
    elif [ "${IMAGE_TYPE}" = "dump" ] ; then
83
        boot_dump="${IMAGE_FILE/root.dump/boot.dump}" 
84
        root_dump="${IMAGE_FILE}"
85
        if [ ! -f "$boot_dump" ] ; then
86
          log_error "Can't find image file: $boot_dump"
87
          exit 1
88
        fi
75
        local root_dump="${IMAGE_FILE}"
89 76
        ( cd ${TARGET}; restore -r -y -f ${root_dump} )
90
        ( cd ${TARGET}/boot; restore -r -y -f ${boot_dump} )
77

  
78
        if [ -n "${boot_dev}" ] ; then
79
            boot_dump="${IMAGE_FILE/root.dump/boot.dump}"
80
            if [ ! -f "$boot_dump" ] ; then
81
              log_error "Can't find image file: $boot_dump"
82
              exit 1
83
            fi
84
            ( cd ${TARGET}/boot; restore -r -y -f ${boot_dump} )
85
        fi
91 86
    fi
92 87

  
93 88
    RUN_PARTS=`which run-parts`
b/export
32 32
fi
33 33

  
34 34
filesystem_base_dev=$(map_disk0 $blockdev)
35
if [ "${SWAP}" = "yes" ] ; then
36
    boot_dev="${filesystem_base_dev}-1"
37
    swap_dev="${filesystem_base_dev}-2"
38
    root_dev="${filesystem_base_dev}-3"
39
else
40
    boot_dev="${filesystem_base_dev}-1"
41
    root_dev="${filesystem_base_dev}-2"
42
fi
43 35
CLEANUP+=("unmap_disk0 $blockdev")
44 36

  
45 37
TARGET=`mktemp -d` || exit 1
46 38
CLEANUP+=("rmdir $TARGET")
47 39

  
48
vol_type_boot="$($VOL_TYPE $boot_dev)"
49 40
vol_type_root="$($VOL_TYPE $root_dev)"
41
if [ -n "${boot_dev}" ] ; then
42
    vol_type_boot="$($VOL_TYPE $boot_dev)"
43
fi
50 44

  
51 45
for fs in boot root ; do
52 46
    # use indirect reference to make the variables dynamic
......
56 50
        log_error "Unable to find ${fs} filesystem type at ${dev}"
57 51
        exit 1
58 52
    fi
59
    if [ "$vol_type" = "ext3" -o "$vol_type" = "ext2" \
60
            -o "$vol_type" = "ext4" ] ; then
61
        $DUMP -0 -q -z9 -f ${TARGET}/${fs}.dump $dev
62
        CLEANUP+=("rm ${TARGET}/${fs}.dump")
63
    else
64
        log_error "${fs} is not a supported filesystem. Please use ext{2,3,4}"
65
        exit 1
53
    if [ -n "${dev}" ] ; then
54
        if [ "$vol_type" = "ext3" -o "$vol_type" = "ext2" \
55
                -o "$vol_type" = "ext4" ] ; then
56
            $DUMP -0 -q -z9 -f ${TARGET}/${fs}.dump $dev
57
            CLEANUP+=("rm ${TARGET}/${fs}.dump")
58
        else
59
            log_error "${fs} is not a supported filesystem. Please use ext{2,3,4}"
60
            exit 1
61
        fi
66 62
    fi
67 63
done
68 64

  
b/import
33 33

  
34 34
format_disk0 $blockdev
35 35
filesystem_base_dev=$(map_disk0 $blockdev)
36
if [ "${SWAP}" = "yes" ] ; then
37
    boot_dev="${filesystem_base_dev}-1"
38
    swap_dev="${filesystem_base_dev}-2"
39
    root_dev="${filesystem_base_dev}-3"
40
else
41
    boot_dev="${filesystem_base_dev}-1"
42
    root_dev="${filesystem_base_dev}-2"
43
fi
44 36
CLEANUP+=("unmap_disk0 $blockdev")
45 37

  
46
mkfs_disk0 $boot_dev $root_dev $swap_dev
38
mkfs_disk0
47 39

  
48 40
TARGET=`mktemp -d` || exit 1
49 41
CLEANUP+=("rmdir $TARGET")
50 42
DUMPDIR=`mktemp -d` || exit 1
51 43
CLEANUP+=("rm -rf $DUMPDIR")
52 44

  
53
mount_disk0 $TARGET $root_dev $boot_dev
45
mount_disk0 $TARGET
54 46

  
55 47
# import dumps from tar file
56 48
( cd $DUMPDIR; tar -xf - )
57 49
( cd $TARGET ; restore -r -y -f ${DUMPDIR}/root.dump )
58
( cd ${TARGET}/boot ; restore -r -y -f ${DUMPDIR}/boot.dump )
50
if [ -n "${boot_dev}" ] ; then
51
    ( cd ${TARGET}/boot ; restore -r -y -f ${DUMPDIR}/boot.dump )
52
fi
59 53

  
60 54
rm -f $TARGET/etc/udev/rules.d/z*_persistent-net.rules
61 55

  
b/rename
35 35
fi
36 36

  
37 37
filesystem_base_dev=$(map_disk0 $blockdev)
38
if [ "${SWAP}" = "yes" ] ; then
39
    boot_dev="${filesystem_base_dev}-1"
40
    swap_dev="${filesystem_base_dev}-2"
41
    root_dev="${filesystem_base_dev}-3"
42
else
43
    boot_dev="${filesystem_base_dev}-1"
44
    root_dev="${filesystem_base_dev}-2"
45
fi
46 38
CLEANUP+=("unmap_disk0 $blockdev")
47 39

  
48
mount_disk0 $TARGET $root_dev $boot_dev
49

  
40
mount_disk0 $TARGET
50 41
get_os_type
51 42

  
52 43
case "${OS_TYPE}" in

Also available in: Unified diff