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