summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Kenna <cjk@cs.unc.edu>2012-09-27 15:44:21 -0400
committerChristopher Kenna <cjk@cs.unc.edu>2012-09-27 15:44:21 -0400
commit897c93a793d2f42bd4b30eaf2ee152c3959ce677 (patch)
treeb2187b2ed3cb9c6e4147a593dcc638348f068428
parent99c79f36791042a9bb6f63d7ae6a3964f3ba167b (diff)
Revise the ARM kernel installer scripts.
-rw-r--r--arm-installer-common.sh124
-rw-r--r--odroid-boot-sample.txt5
-rwxr-xr-xodroid-install-kernel.sh92
-rw-r--r--panda-boot-sample.txt (renamed from panda-boot-sample.script)0
-rwxr-xr-xpanda-install-kernel.sh74
5 files changed, 163 insertions, 132 deletions
diff --git a/arm-installer-common.sh b/arm-installer-common.sh
new file mode 100644
index 0000000..32fb69c
--- /dev/null
+++ b/arm-installer-common.sh
@@ -0,0 +1,124 @@
1#!/bin/bash
2
3set -e
4set -u
5
6# Build host for ARM.
7HOST="pound.cs.unc.edu"
8
9# Not installed on the U-Boot partition.
10ZIMAGE_FILE="zImage"
11
12# Name of the installed files on the U-Boot partition.
13UIMAGE_FILE="uImage-litmus"
14INITRD_FILE="uInitrd-litmus"
15SCRIPT_FILE="boot-litmus.scr"
16
17# Assumes the globals:
18# - KVERSION
19# - CONFIG_FILE - kernel configuration file name (not path)
20# - LOAD_ADDR
21# - ENTRY_PIONT
22#
23# Assumes UBOOT_PATH is set by the calling script.
24
25TMP_DIR=$(mktemp -d)
26
27# initramfs state directory (Debian/Ubuntu)
28INITRAMFS_STATEDIR="/var/lib/initramfs-tools"
29
30error() {
31 echo "$@" >&2
32 exit 1
33}
34
35if [ $# -ne 2 ] ; then
36 error "Usage: `basename $0` <REMOTE-KDIR> <BOOT-SCRIPT>"
37fi
38
39KERN_DIR=$1
40SCRIPT_NAME=$2
41
42if [ ! -f "$SCRIPT_NAME" ] ; then
43 error "Boot script not a file: $SCRIPT_NAME"
44fi
45
46getversion() {
47 # This function also sets the CONFIG_FILE global.
48
49 local version
50 set +e
51 version=$(ssh $HOST cat $KERN_DIR/include/config/kernel.release)
52 set -e
53 if [ "x" = "x$version" ] ; then
54 error "Could not determine version"
55 fi
56 CONFIG_FILE="config-$version"
57 return $version
58}
59
60fetchfiles() {
61 echo "Fetching files from $HOST ..." >&2
62 rsync -P $USER@$HOST:$KERN_DIR/arch/arm/boot/zImage $TMP_DIR/$ZIMAGE_FILE
63 rsync -P $USER@$HOST:$KERN_DIR/.config $TMP_DIR/$CONFIG_FILE
64 echo "done." >&2
65}
66
67mkuboot() {
68 echo "Generating kernel u-boot image..." >&2
69 mkimage -A arm -O linux -T kernel -C none \
70 -a $LOAD_ADDR -e $ENTRY_POINT \
71 -d $TMP_DIR/$ZIMAGE_FILE $TMP_DIR/$UIMAGE_FILE >&2
72 echo "done." >&2
73}
74
75mkscript() {
76 echo "Generating u-boot configuration ... " >&2
77 mkimage -A arm -T script -C none -d "$SCRIPT_FILE" $TMP_DIR/$SCRIPT_FILE >&2
78 echo "done." >&2
79}
80
81moveconfig() {
82 echo "Moving config file to /boot ..." >&2
83 sudo cp $TMP_DIR/$CONFIG_FILE /boot/
84 echo "done." >&2
85}
86
87doinitramfs() {
88 local initrdimage
89 initrdimage="/boot/initrd.img-$KVERSION"
90
91 if [ -e "$INITRAMFS_STATEDIR/$KVERSION" -o -e "$initrdimage" ] ; then
92 echo "Removing old initramfs ... " >&2
93 sudo update-initramfs -k $KVERSION -d
94 echo "done." >&2
95 fi
96
97 echo "Creating initramfs (ignore module errors) ... " >&2
98 sudo update-initramfs -k $KVERSION -c
99 echo "done." >&2
100}
101
102mkuinitrd() {
103 local initrdimage
104 initrdimage="/boot/initrd.img-$KVERSION"
105
106 echo "Making u-boot initrd image ... " >&2
107 mkimage -A arm -O linux -T ramdisk -C none \
108 -d $initrdimage $TMP_DIR/$INITRD_NAME >&2
109 echo "done." >&2
110}
111
112copy_to_uboot() {
113 echo "Copying files to u-boot partition ..." >&2
114 sudo cp $TMP_DIR/$UIMAGE_FILE $UBOOT_PATH/
115 sudo cp $TMP_DIR/$SCRIPT_FILE $UBOOT_PATH/
116 sudo cp $TMP_DIR/$INITRD_FILE $UBOOT_PATH/
117 echo "done." >&2
118}
119
120rm_tmp_files() {
121 echo "Removing temporary files ..." >&2
122 rm -rf $TMP_DIR
123 echo "done." >&2
124}
diff --git a/odroid-boot-sample.txt b/odroid-boot-sample.txt
new file mode 100644
index 0000000..1b20c3f
--- /dev/null
+++ b/odroid-boot-sample.txt
@@ -0,0 +1,5 @@
1setenv initrd_high "0xffffffff"
2setenv fdt_high "0xffffffff"
3setenv bootcmd "fatload mmc 0:2 0x40007000 uImage-litmus; fatload mmc 0:2 0x42000000 uInitrd-litmus; fatload mmc 0:2 0x41f00000 board.dtb; bootm 0x40007000 0x42000000"
4setenv bootargs "console=tty1 console=ttySAC1,115200n8 root=UUID=c21f1426-e878-4f05-a063-0a9c5e4234d0 rootwait ro"
5boot
diff --git a/odroid-install-kernel.sh b/odroid-install-kernel.sh
index 8748e60..fc6da32 100755
--- a/odroid-install-kernel.sh
+++ b/odroid-install-kernel.sh
@@ -1,93 +1,37 @@
1#!/bin/sh 1#!/bin/sh
2 2
3set -e 3LOAD_ADDR=0x4000800
4 4ENTRY_POINT=0x4000800
5error() {
6 echo "$@" >&2
7 exit 1
8}
9
10# The FAT u-boot bootloader partition.
11UBOOT_PART=/dev/mmcblk0p2
12
13# Build host for ARM.
14HOST="pound.cs.unc.edu"
15
16if [ $# -ne 2 ] ; then
17 error "Usage: `basename $0` <REMOTE KDIR> <BOOT-SCRIPT>"
18fi
19
20SRC_ROOT=$1
21SCRIPT_NAME=$2
22 5
6# Where the U-Boot partition is mounted.
7UBOOT_PATH="/media/boot"
23set +e 8set +e
24VERSION=$(ssh cjk@$HOST cat $SRC_ROOT/include/config/kernel.release) 9grep "$UBOOT_PATH" /etc/mtab > /dev/null
25set -e 10if [ 0 -ne $? ] ; then
26if [ "x" = "x$VERSION" ] ; then 11 error "U-Boot partition not mounted."
27 error "Could not determine version"
28fi
29
30if [ ! -f "$SCRIPT_NAME" ] ; then
31 error "Boot script not a file: $SCRIPT_NAME"
32fi 12fi
13set -e
33 14
34TMP_DIR=$(mktemp -d) 15getversion
35TMP_MOUNT=$(mktemp -d)
36
37ZIMAGE_NAME="zImage-litmus"
38UIMAGE_NAME="uImage-litmus"
39CONFIG_NAME="config-$VERSION"
40INITRD_NAME="uInitrd-litmus"
41SCR_NAME="boot-litmus.scr"
42
43echo "Fetching files from $HOST ..." >&2
44rsync -P cjk@$HOST:$SRC_ROOT/arch/arm/boot/zImage $TMP_DIR/$ZIMAGE_NAME
45rsync -P cjk@$HOST:$SRC_ROOT/.config $TMP_DIR/$CONFIG_NAME
46echo "done." >&2
47 16
48echo "Generating kernel u-boot image..." >&2 17fetchfiles
49mkimage -A arm -O linux -T kernel -C none -a 0x80008000 \
50 -e 0x80008000 -d $TMP_DIR/$ZIMAGE_NAME $TMP_DIR/$UIMAGE_NAME >&2
51echo "done." >&2
52 18
53echo "Generating u-boot configuration ... " >&2 19mkuboot
54mkimage -A arm -T script -C none -d "$SCRIPT_NAME" $TMP_DIR/$SCR_NAME >&2
55echo "done." >&2
56 20
57echo "Moving vmlinuz and config fils to /boot ..." >&2 21mkscript
58sudo cp $TMP_DIR/$ZIMAGE_NAME /boot/vmlinuz-$VERSION
59sudo cp $TMP_DIR/$CONFIG_NAME /boot/
60echo "done." >&2
61 22
62echo "Creating initramfs (ignore module errors) ... " >&2 23moveconfig
63sudo update-initramfs -k $VERSION -c
64echo "done." >&2
65 24
66echo "Making u-boot initrd image ... " >&2 25doinitramfs
67mkimage -A arm -T ramdisk -C none \
68 -d /boot/initrd.img-$VERSION $TMP_DIR/$INITRD_NAME >&2
69echo "done." >&2
70 26
71echo "Mounting u-boot partition ..." >&2 27mkunitrd
72sudo mount $UBOOT_PART $TMP_MOUNT
73echo "done." >&2
74 28
75echo "Copying files to u-boot partition ..." >&2 29copy_to_uboot
76sudo cp $TMP_DIR/$UIMAGE_NAME $TMP_MOUNT/
77sudo cp $TMP_DIR/$SCR_NAME $TMP_MOUNT/
78sudo cp $TMP_DIR/$INITRD_NAME $TMP_MOUNT/
79echo "done." >&2
80 30
81echo "Making LITMUS the default ..." >&2 31echo "Making LITMUS the default ..." >&2
82mv $TMP_MOUNT/$SCR_NAME $TMP_MOUNT/boot.scr 32mv $TMP_MOUNT/$SCRIPT_NAME $TMP_MOUNT/boot.scr
83echo "done." >&2 33echo "done." >&2
84 34
85echo "Unmounting u-boot partition ..." >&2 35rm_tmp_files
86sudo umount $TMP_MOUNT
87echo "done." >&2
88
89echo "Removing temporary files ..." >&2
90rm -rf $TMP_DIR $TMP_MOUNT
91echo "done." >&2
92 36
93echo "All done!" >&2 37echo "All done!" >&2
diff --git a/panda-boot-sample.script b/panda-boot-sample.txt
index d017085..d017085 100644
--- a/panda-boot-sample.script
+++ b/panda-boot-sample.txt
diff --git a/panda-install-kernel.sh b/panda-install-kernel.sh
index 2ed5aab..9a22d8c 100755
--- a/panda-install-kernel.sh
+++ b/panda-install-kernel.sh
@@ -7,83 +7,41 @@ error() {
7 exit 1 7 exit 1
8} 8}
9 9
10TMP_MOUNT=$(mktemp -d)
11
10# The FAT u-boot bootloader partition. 12# The FAT u-boot bootloader partition.
11UBOOT_PART=/dev/mmcblk0p1 13UBOOT_PART=/dev/mmcblk0p1
12 14
13# Build host for ARM. 15# This is machine specific, AFAIK.
14HOST="pound.cs.unc.edu" 16LOAD_ADDR=0x80008000
17ENTRY_POINT=0x80008000
15 18
16if [ $# -ne 2 ] ; then 19getversion
17 error "Usage: `basename $0` <REMOTE KDIR> <BOOT-SCRIPT>"
18fi
19 20
20SRC_ROOT=$1 21fetchfiles
21SCRIPT_NAME=$2
22 22
23set +e 23mkuboot
24VERSION=$(ssh $HOST cat $SRC_ROOT/include/config/kernel.release)
25set -e
26if [ "x" = "x$VERSION" ] ; then
27 error "Could not determine version"
28fi
29 24
30if [ ! -f "$SCRIPT_NAME" ] ; then 25mkscript
31 error "Boot script not a file: $SCRIPT_NAME"
32fi
33 26
34TMP_DIR=$(mktemp -d) 27moveconfig
35TMP_MOUNT=$(mktemp -d)
36 28
37ZIMAGE_NAME="zImage-litmus" 29doinitramfs
38UIMAGE_NAME="uImage-litmus"
39CONFIG_NAME="config-$VERSION"
40INITRD_NAME="uInitrd-litmus"
41SCR_NAME="boot-litmus.scr"
42 30
43echo "Fetching files from $HOST ..." >&2 31mkuinitrd
44rsync -P cjk@$HOST:$SRC_ROOT/arch/arm/boot/zImage $TMP_DIR/$ZIMAGE_NAME
45rsync -P cjk@$HOST:$SRC_ROOT/.config $TMP_DIR/$CONFIG_NAME
46echo "done." >&2
47
48echo "Generating kernel u-boot image..." >&2
49mkimage -A arm -O linux -T kernel -C none -a 0x80008000 \
50 -e 0x80008000 -d $TMP_DIR/$ZIMAGE_NAME $TMP_DIR/$UIMAGE_NAME >&2
51echo "done." >&2
52
53echo "Generating u-boot configuration ... " >&2
54mkimage -A arm -T script -C none -d "$SCRIPT_NAME" $TMP_DIR/$SCR_NAME >&2
55echo "done." >&2
56
57echo "Moving vmlinuz and config fils to /boot ..." >&2
58sudo cp $TMP_DIR/$ZIMAGE_NAME /boot/vmlinuz-$VERSION
59sudo cp $TMP_DIR/$CONFIG_NAME /boot/
60echo "done." >&2
61
62echo "Creating initramfs (ignore module errors) ... " >&2
63sudo update-initramfs -k $VERSION -c
64echo "done." >&2
65
66echo "Making u-boot initrd image ... " >&2
67mkimage -A arm -O linux -T ramdisk -C none -a 0x0 -e 0x0 \
68 -d /boot/initrd.img-$VERSION $TMP_DIR/$INITRD_NAME >&2
69echo "done." >&2
70 32
71echo "Mounting u-boot partition ..." >&2 33echo "Mounting u-boot partition ..." >&2
72sudo mount $UBOOT_PART $TMP_MOUNT 34sudo mount $UBOOT_PART $TMP_MOUNT
73echo "done." >&2 35echo "done." >&2
74 36
75echo "Copying files to u-boot partition ..." >&2 37UBOOT_PATH=$TMP_MOUNT
76sudo cp $TMP_DIR/$UIMAGE_NAME $TMP_MOUNT/ 38copy_to_uboot
77sudo cp $TMP_DIR/$SCR_NAME $TMP_MOUNT/
78sudo cp $TMP_DIR/$INITRD_NAME $TMP_MOUNT/
79echo "done." >&2
80 39
81echo "Unmounting u-boot partition ..." >&2 40echo "Unmounting u-boot partition ..." >&2
82sudo umount $TMP_MOUNT 41sudo umount $TMP_MOUNT
83echo "done." >&2 42echo "done." >&2
84 43
85echo "Removing temporary files ..." >&2 44rm_tmp_files
86rm -rf $TMP_DIR $TMP_MOUNT 45rm -rf $TMP_MOUNT
87echo "done." >&2
88 46
89echo "All done!" >&2 47echo "All done!" >&2