Browse code

Merge pull request #66 from dtroyer/6-usb-boot

Add build_usb_boot

Jesse Andrews authored on 2011/10/14 03:37:15
Showing 1 changed files
1 1
new file mode 100755
... ...
@@ -0,0 +1,103 @@
0
+#!/bin/bash -e
1
+# build_usb_boot.sh - Create a syslinux boot environment
2
+#
3
+# build_usb_boot.sh [-k kernel-version] destdev
4
+#
5
+# Assumes syslinux is installed
6
+# Needs to run as root
7
+
8
+KVER=`uname -r`
9
+if [ "$1" = "-k" ]; then
10
+    KVER=$2
11
+    shift;shift
12
+fi
13
+
14
+DEST_DIR=${1:-/tmp/syslinux-boot}
15
+PXEDIR=${PXEDIR:-/var/cache/devstack/pxe}
16
+OPWD=`pwd`
17
+PROGDIR=`dirname $0`
18
+
19
+if [ -b $DEST_DIR ]; then
20
+    # We have a block device, install syslinux and mount it
21
+    DEST_DEV=$DEST_DIR
22
+    DEST_DIR=`mktemp -d mntXXXXXX`
23
+
24
+    # Install syslinux on the device
25
+    syslinux --install --directory syslinux $DEST_DEV
26
+
27
+    mount $DEST_DEV $DEST_DIR
28
+else
29
+    # We have a directory (for sanity checking output)
30
+	DEST_DEV=""
31
+	if [ ! -d $DEST_DIR/syslinux ]; then
32
+	    mkdir -p $DEST_DIR/syslinux
33
+	fi
34
+fi
35
+
36
+# Get some more stuff from syslinux
37
+for i in memdisk menu.c32; do
38
+	cp -p /usr/lib/syslinux/$i $DEST_DIR/syslinux
39
+done
40
+
41
+CFG=$DEST_DIR/syslinux/syslinux.cfg
42
+cat >$CFG <<EOF
43
+default /syslinux/menu.c32
44
+prompt 0
45
+timeout 0
46
+
47
+MENU TITLE Boot Menu
48
+
49
+EOF
50
+
51
+# Setup devstack boot
52
+mkdir -p $DEST_DIR/ubuntu
53
+if [ ! -d $PXEDIR ]; then
54
+    mkdir -p $PXEDIR
55
+fi
56
+if [ ! -r $PXEDIR/vmlinuz-${KVER} ]; then
57
+    sudo chmod 644 /boot/vmlinuz-${KVER}
58
+    if [ ! -r /boot/vmlinuz-${KVER} ]; then
59
+        echo "No kernel found"
60
+    else
61
+        cp -p /boot/vmlinuz-${KVER} $PXEDIR
62
+    fi
63
+fi
64
+cp -p $PXEDIR/vmlinuz-${KVER} $DEST_DIR/ubuntu
65
+if [ ! -r $PXEDIR/stack-initrd.gz ]; then
66
+    cd $OPWD
67
+    sudo $PROGDIR/build_ramdisk.sh $PXEDIR/stack-initrd.gz
68
+fi
69
+cp -p $PXEDIR/stack-initrd.gz $DEST_DIR/ubuntu
70
+cat >>$CFG <<EOF
71
+
72
+LABEL devstack
73
+    MENU LABEL ^devstack
74
+    MENU DEFAULT
75
+    KERNEL /ubuntu/vmlinuz-$KVER
76
+    APPEND initrd=/ubuntu/stack-initrd.gz ramdisk_size=2109600 root=/dev/ram0
77
+EOF
78
+
79
+# Get Ubuntu
80
+if [ -d $PXEDIR -a -r $PXEDIR/natty-base-initrd.gz ]; then
81
+    cp -p $PXEDIR/natty-base-initrd.gz $DEST_DIR/ubuntu
82
+    cat >>$CFG <<EOF
83
+
84
+LABEL ubuntu
85
+    MENU LABEL ^Ubuntu Natty
86
+    KERNEL /ubuntu/vmlinuz-$KVER
87
+    APPEND initrd=/ubuntu/natty-base-initrd.gz ramdisk_size=419600 root=/dev/ram0
88
+EOF
89
+fi
90
+
91
+# Local disk boot
92
+cat >>$CFG <<EOF
93
+
94
+LABEL local
95
+    MENU LABEL ^Local disk
96
+    LOCALBOOT 0
97
+EOF
98
+
99
+if [ -n "$DEST_DEV" ]; then
100
+    umount $DEST_DIR
101
+    rmdir $DEST_DIR
102
+fi