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