Browse code

Add build_usb_boot.sh

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