Revision b05b1ab6 create
b/create | ||
---|---|---|
32 | 32 |
CLEANUP+=("$LOSETUP -d $blockdev") |
33 | 33 |
fi |
34 | 34 |
|
35 |
# Create 3 partitions, /boot, swap, & / |
|
36 |
format_disk0 $blockdev |
|
35 |
if [ ! -f "$IMAGE_FILE" ] ; then |
|
36 |
log_error "Can't find image file: $IMAGE_FILE" |
|
37 |
exit 1 |
|
38 |
fi |
|
39 |
|
|
40 |
# If the image is tarball based, then we need to manually create the |
|
41 |
# volumes, filesystems, etc |
|
42 |
if [ "${IMAGE_TYPE}" = "tarball" ] ; then |
|
43 |
# Create 3 partitions, /boot, swap, & / |
|
44 |
format_disk0 $blockdev |
|
45 |
elif [ "${IMAGE_TYPE}" = "qemu" ] ; then |
|
46 |
# need a recent version of qemu for this |
|
47 |
qemu-img convert ${IMAGE_FILE} -O host_device ${blockdev} |
|
48 |
fi |
|
49 |
|
|
37 | 50 |
filesystem_base_dev=$(map_disk0 $blockdev) |
38 | 51 |
root_dev="${filesystem_base_dev}-3" |
39 | 52 |
boot_dev="${filesystem_base_dev}-1" |
40 | 53 |
swap_dev="${filesystem_base_dev}-2" |
41 | 54 |
CLEANUP+=("unmap_disk0 $blockdev") |
42 | 55 |
|
43 |
# Format /boot |
|
44 |
mke2fs -Fjq -L /boot $boot_dev |
|
45 |
# Format / |
|
46 |
mke2fs -Fjq -L / $root_dev |
|
47 |
# Format swap |
|
48 |
mkswap $swap_dev |
|
56 |
if [ "${IMAGE_TYPE}" = "tarball" ] ; then |
|
57 |
# Format /boot |
|
58 |
mke2fs -Fjq -L /boot $boot_dev |
|
59 |
# Format / |
|
60 |
mke2fs -Fjq -L / $root_dev |
|
61 |
# Format swap |
|
62 |
mkswap $swap_dev |
|
63 |
fi |
|
49 | 64 |
|
50 | 65 |
TMPDIR=`mktemp -d` || exit 1 |
51 | 66 |
CLEANUP+=("rmdir $TMPDIR") |
52 | 67 |
|
53 | 68 |
# mount filesystems |
54 |
mount $root_dev $TMPDIR |
|
55 |
CLEANUP+=("umount $TMPDIR") |
|
56 |
$MKDIR_P $TMPDIR/boot |
|
57 |
mount $boot_dev $TMPDIR/boot |
|
58 |
CLEANUP+=("umount $TMPDIR/boot") |
|
59 |
|
|
60 |
if [ ! -f "$IMAGE_FILE" ] ; then |
|
61 |
log_error "Can't find image file: $IMAGE_FILE" |
|
62 |
exit 1 |
|
63 |
fi |
|
64 |
|
|
65 |
# unpack image |
|
66 |
tar pzxf $IMAGE_FILE -C $TMPDIR |
|
67 |
|
|
68 |
# Set disk based on type of hypervisor |
|
69 |
disk="" |
|
70 |
if [ "$HYPERVISOR" = "kvm" ] ; then |
|
71 |
disk="vda" |
|
72 |
else |
|
73 |
disk="xda" |
|
74 |
fi |
|
75 |
|
|
76 |
# make /dev/$disk |
|
77 |
mknod $TMPDIR/dev/$disk b $(stat -L -c "0x%t 0x%T" $blockdev) |
|
78 |
CLEANUP+=("rm -f $TMPDIR/dev/$disk") |
|
79 |
|
|
80 |
# make /dev/${disk}1 |
|
81 |
mknod $TMPDIR/dev/${disk}1 b $(stat -L -c "0x%t 0x%T" $boot_dev) |
|
82 |
CLEANUP+=("rm -f $TMPDIR/dev/${disk}1") |
|
83 |
|
|
84 |
# make /dev/${disk}1 |
|
85 |
mknod $TMPDIR/dev/${disk}3 b $(stat -L -c "0x%t 0x%T" $root_dev) |
|
86 |
CLEANUP+=("rm -f $TMPDIR/dev/${disk}3") |
|
87 |
|
|
88 |
# create device.map |
|
89 |
cat > "$TMPDIR/boot/grub/device.map" <<EOF |
|
69 |
mount_disk0 $TMPDIR $root_dev $boot_dev |
|
70 |
|
|
71 |
if [ "${IMAGE_TYPE}" = "tarball" ] ; then |
|
72 |
# unpack image |
|
73 |
tar pzxf $IMAGE_FILE -C $TMPDIR |
|
74 |
|
|
75 |
# Set disk based on type of hypervisor |
|
76 |
disk="" |
|
77 |
if [ "$HYPERVISOR" = "kvm" ] ; then |
|
78 |
disk="vda" |
|
79 |
else |
|
80 |
disk="xda" |
|
81 |
fi |
|
82 |
|
|
83 |
# make /dev/$disk |
|
84 |
mknod $TMPDIR/dev/$disk b $(stat -L -c "0x%t 0x%T" $blockdev) |
|
85 |
CLEANUP+=("rm -f $TMPDIR/dev/$disk") |
|
86 |
|
|
87 |
# make /dev/${disk}1 |
|
88 |
mknod $TMPDIR/dev/${disk}1 b $(stat -L -c "0x%t 0x%T" $boot_dev) |
|
89 |
CLEANUP+=("rm -f $TMPDIR/dev/${disk}1") |
|
90 |
|
|
91 |
# make /dev/${disk}1 |
|
92 |
mknod $TMPDIR/dev/${disk}3 b $(stat -L -c "0x%t 0x%T" $root_dev) |
|
93 |
CLEANUP+=("rm -f $TMPDIR/dev/${disk}3") |
|
94 |
|
|
95 |
# create device.map |
|
96 |
cat > "$TMPDIR/boot/grub/device.map" <<EOF |
|
90 | 97 |
(hd0) /dev/$disk |
91 | 98 |
EOF |
92 | 99 |
|
93 |
# install grub to the block device |
|
94 |
chroot $TMPDIR grub --batch --no-floppy --device-map=/boot/grub/device.map <<EOF |
|
100 |
# install grub to the block device
|
|
101 |
chroot $TMPDIR grub --batch --no-floppy --device-map=/boot/grub/device.map <<EOF
|
|
95 | 102 |
root (hd0,0) |
96 | 103 |
setup (hd0) |
97 | 104 |
quit |
98 | 105 |
EOF |
106 |
fi |
|
99 | 107 |
|
100 | 108 |
RUN_PARTS=`which run-parts` |
101 | 109 |
|
Also available in: Unified diff