diff options
author | Christopher Kenna <cjk@cs.unc.edu> | 2012-09-27 15:44:21 -0400 |
---|---|---|
committer | Christopher Kenna <cjk@cs.unc.edu> | 2012-09-27 15:44:21 -0400 |
commit | 897c93a793d2f42bd4b30eaf2ee152c3959ce677 (patch) | |
tree | b2187b2ed3cb9c6e4147a593dcc638348f068428 | |
parent | 99c79f36791042a9bb6f63d7ae6a3964f3ba167b (diff) |
Revise the ARM kernel installer scripts.
-rw-r--r-- | arm-installer-common.sh | 124 | ||||
-rw-r--r-- | odroid-boot-sample.txt | 5 | ||||
-rwxr-xr-x | odroid-install-kernel.sh | 92 | ||||
-rw-r--r-- | panda-boot-sample.txt (renamed from panda-boot-sample.script) | 0 | ||||
-rwxr-xr-x | panda-install-kernel.sh | 74 |
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 | |||
3 | set -e | ||
4 | set -u | ||
5 | |||
6 | # Build host for ARM. | ||
7 | HOST="pound.cs.unc.edu" | ||
8 | |||
9 | # Not installed on the U-Boot partition. | ||
10 | ZIMAGE_FILE="zImage" | ||
11 | |||
12 | # Name of the installed files on the U-Boot partition. | ||
13 | UIMAGE_FILE="uImage-litmus" | ||
14 | INITRD_FILE="uInitrd-litmus" | ||
15 | SCRIPT_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 | |||
25 | TMP_DIR=$(mktemp -d) | ||
26 | |||
27 | # initramfs state directory (Debian/Ubuntu) | ||
28 | INITRAMFS_STATEDIR="/var/lib/initramfs-tools" | ||
29 | |||
30 | error() { | ||
31 | echo "$@" >&2 | ||
32 | exit 1 | ||
33 | } | ||
34 | |||
35 | if [ $# -ne 2 ] ; then | ||
36 | error "Usage: `basename $0` <REMOTE-KDIR> <BOOT-SCRIPT>" | ||
37 | fi | ||
38 | |||
39 | KERN_DIR=$1 | ||
40 | SCRIPT_NAME=$2 | ||
41 | |||
42 | if [ ! -f "$SCRIPT_NAME" ] ; then | ||
43 | error "Boot script not a file: $SCRIPT_NAME" | ||
44 | fi | ||
45 | |||
46 | getversion() { | ||
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 | |||
60 | fetchfiles() { | ||
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 | |||
67 | mkuboot() { | ||
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 | |||
75 | mkscript() { | ||
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 | |||
81 | moveconfig() { | ||
82 | echo "Moving config file to /boot ..." >&2 | ||
83 | sudo cp $TMP_DIR/$CONFIG_FILE /boot/ | ||
84 | echo "done." >&2 | ||
85 | } | ||
86 | |||
87 | doinitramfs() { | ||
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 | |||
102 | mkuinitrd() { | ||
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 | |||
112 | copy_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 | |||
120 | rm_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 @@ | |||
1 | setenv initrd_high "0xffffffff" | ||
2 | setenv fdt_high "0xffffffff" | ||
3 | setenv 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" | ||
4 | setenv bootargs "console=tty1 console=ttySAC1,115200n8 root=UUID=c21f1426-e878-4f05-a063-0a9c5e4234d0 rootwait ro" | ||
5 | boot | ||
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 | ||
3 | set -e | 3 | LOAD_ADDR=0x4000800 |
4 | 4 | ENTRY_POINT=0x4000800 | |
5 | error() { | ||
6 | echo "$@" >&2 | ||
7 | exit 1 | ||
8 | } | ||
9 | |||
10 | # The FAT u-boot bootloader partition. | ||
11 | UBOOT_PART=/dev/mmcblk0p2 | ||
12 | |||
13 | # Build host for ARM. | ||
14 | HOST="pound.cs.unc.edu" | ||
15 | |||
16 | if [ $# -ne 2 ] ; then | ||
17 | error "Usage: `basename $0` <REMOTE KDIR> <BOOT-SCRIPT>" | ||
18 | fi | ||
19 | |||
20 | SRC_ROOT=$1 | ||
21 | SCRIPT_NAME=$2 | ||
22 | 5 | ||
6 | # Where the U-Boot partition is mounted. | ||
7 | UBOOT_PATH="/media/boot" | ||
23 | set +e | 8 | set +e |
24 | VERSION=$(ssh cjk@$HOST cat $SRC_ROOT/include/config/kernel.release) | 9 | grep "$UBOOT_PATH" /etc/mtab > /dev/null |
25 | set -e | 10 | if [ 0 -ne $? ] ; then |
26 | if [ "x" = "x$VERSION" ] ; then | 11 | error "U-Boot partition not mounted." |
27 | error "Could not determine version" | ||
28 | fi | ||
29 | |||
30 | if [ ! -f "$SCRIPT_NAME" ] ; then | ||
31 | error "Boot script not a file: $SCRIPT_NAME" | ||
32 | fi | 12 | fi |
13 | set -e | ||
33 | 14 | ||
34 | TMP_DIR=$(mktemp -d) | 15 | getversion |
35 | TMP_MOUNT=$(mktemp -d) | ||
36 | |||
37 | ZIMAGE_NAME="zImage-litmus" | ||
38 | UIMAGE_NAME="uImage-litmus" | ||
39 | CONFIG_NAME="config-$VERSION" | ||
40 | INITRD_NAME="uInitrd-litmus" | ||
41 | SCR_NAME="boot-litmus.scr" | ||
42 | |||
43 | echo "Fetching files from $HOST ..." >&2 | ||
44 | rsync -P cjk@$HOST:$SRC_ROOT/arch/arm/boot/zImage $TMP_DIR/$ZIMAGE_NAME | ||
45 | rsync -P cjk@$HOST:$SRC_ROOT/.config $TMP_DIR/$CONFIG_NAME | ||
46 | echo "done." >&2 | ||
47 | 16 | ||
48 | echo "Generating kernel u-boot image..." >&2 | 17 | fetchfiles |
49 | mkimage -A arm -O linux -T kernel -C none -a 0x80008000 \ | ||
50 | -e 0x80008000 -d $TMP_DIR/$ZIMAGE_NAME $TMP_DIR/$UIMAGE_NAME >&2 | ||
51 | echo "done." >&2 | ||
52 | 18 | ||
53 | echo "Generating u-boot configuration ... " >&2 | 19 | mkuboot |
54 | mkimage -A arm -T script -C none -d "$SCRIPT_NAME" $TMP_DIR/$SCR_NAME >&2 | ||
55 | echo "done." >&2 | ||
56 | 20 | ||
57 | echo "Moving vmlinuz and config fils to /boot ..." >&2 | 21 | mkscript |
58 | sudo cp $TMP_DIR/$ZIMAGE_NAME /boot/vmlinuz-$VERSION | ||
59 | sudo cp $TMP_DIR/$CONFIG_NAME /boot/ | ||
60 | echo "done." >&2 | ||
61 | 22 | ||
62 | echo "Creating initramfs (ignore module errors) ... " >&2 | 23 | moveconfig |
63 | sudo update-initramfs -k $VERSION -c | ||
64 | echo "done." >&2 | ||
65 | 24 | ||
66 | echo "Making u-boot initrd image ... " >&2 | 25 | doinitramfs |
67 | mkimage -A arm -T ramdisk -C none \ | ||
68 | -d /boot/initrd.img-$VERSION $TMP_DIR/$INITRD_NAME >&2 | ||
69 | echo "done." >&2 | ||
70 | 26 | ||
71 | echo "Mounting u-boot partition ..." >&2 | 27 | mkunitrd |
72 | sudo mount $UBOOT_PART $TMP_MOUNT | ||
73 | echo "done." >&2 | ||
74 | 28 | ||
75 | echo "Copying files to u-boot partition ..." >&2 | 29 | copy_to_uboot |
76 | sudo cp $TMP_DIR/$UIMAGE_NAME $TMP_MOUNT/ | ||
77 | sudo cp $TMP_DIR/$SCR_NAME $TMP_MOUNT/ | ||
78 | sudo cp $TMP_DIR/$INITRD_NAME $TMP_MOUNT/ | ||
79 | echo "done." >&2 | ||
80 | 30 | ||
81 | echo "Making LITMUS the default ..." >&2 | 31 | echo "Making LITMUS the default ..." >&2 |
82 | mv $TMP_MOUNT/$SCR_NAME $TMP_MOUNT/boot.scr | 32 | mv $TMP_MOUNT/$SCRIPT_NAME $TMP_MOUNT/boot.scr |
83 | echo "done." >&2 | 33 | echo "done." >&2 |
84 | 34 | ||
85 | echo "Unmounting u-boot partition ..." >&2 | 35 | rm_tmp_files |
86 | sudo umount $TMP_MOUNT | ||
87 | echo "done." >&2 | ||
88 | |||
89 | echo "Removing temporary files ..." >&2 | ||
90 | rm -rf $TMP_DIR $TMP_MOUNT | ||
91 | echo "done." >&2 | ||
92 | 36 | ||
93 | echo "All done!" >&2 | 37 | echo "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 | ||
10 | TMP_MOUNT=$(mktemp -d) | ||
11 | |||
10 | # The FAT u-boot bootloader partition. | 12 | # The FAT u-boot bootloader partition. |
11 | UBOOT_PART=/dev/mmcblk0p1 | 13 | UBOOT_PART=/dev/mmcblk0p1 |
12 | 14 | ||
13 | # Build host for ARM. | 15 | # This is machine specific, AFAIK. |
14 | HOST="pound.cs.unc.edu" | 16 | LOAD_ADDR=0x80008000 |
17 | ENTRY_POINT=0x80008000 | ||
15 | 18 | ||
16 | if [ $# -ne 2 ] ; then | 19 | getversion |
17 | error "Usage: `basename $0` <REMOTE KDIR> <BOOT-SCRIPT>" | ||
18 | fi | ||
19 | 20 | ||
20 | SRC_ROOT=$1 | 21 | fetchfiles |
21 | SCRIPT_NAME=$2 | ||
22 | 22 | ||
23 | set +e | 23 | mkuboot |
24 | VERSION=$(ssh $HOST cat $SRC_ROOT/include/config/kernel.release) | ||
25 | set -e | ||
26 | if [ "x" = "x$VERSION" ] ; then | ||
27 | error "Could not determine version" | ||
28 | fi | ||
29 | 24 | ||
30 | if [ ! -f "$SCRIPT_NAME" ] ; then | 25 | mkscript |
31 | error "Boot script not a file: $SCRIPT_NAME" | ||
32 | fi | ||
33 | 26 | ||
34 | TMP_DIR=$(mktemp -d) | 27 | moveconfig |
35 | TMP_MOUNT=$(mktemp -d) | ||
36 | 28 | ||
37 | ZIMAGE_NAME="zImage-litmus" | 29 | doinitramfs |
38 | UIMAGE_NAME="uImage-litmus" | ||
39 | CONFIG_NAME="config-$VERSION" | ||
40 | INITRD_NAME="uInitrd-litmus" | ||
41 | SCR_NAME="boot-litmus.scr" | ||
42 | 30 | ||
43 | echo "Fetching files from $HOST ..." >&2 | 31 | mkuinitrd |
44 | rsync -P cjk@$HOST:$SRC_ROOT/arch/arm/boot/zImage $TMP_DIR/$ZIMAGE_NAME | ||
45 | rsync -P cjk@$HOST:$SRC_ROOT/.config $TMP_DIR/$CONFIG_NAME | ||
46 | echo "done." >&2 | ||
47 | |||
48 | echo "Generating kernel u-boot image..." >&2 | ||
49 | mkimage -A arm -O linux -T kernel -C none -a 0x80008000 \ | ||
50 | -e 0x80008000 -d $TMP_DIR/$ZIMAGE_NAME $TMP_DIR/$UIMAGE_NAME >&2 | ||
51 | echo "done." >&2 | ||
52 | |||
53 | echo "Generating u-boot configuration ... " >&2 | ||
54 | mkimage -A arm -T script -C none -d "$SCRIPT_NAME" $TMP_DIR/$SCR_NAME >&2 | ||
55 | echo "done." >&2 | ||
56 | |||
57 | echo "Moving vmlinuz and config fils to /boot ..." >&2 | ||
58 | sudo cp $TMP_DIR/$ZIMAGE_NAME /boot/vmlinuz-$VERSION | ||
59 | sudo cp $TMP_DIR/$CONFIG_NAME /boot/ | ||
60 | echo "done." >&2 | ||
61 | |||
62 | echo "Creating initramfs (ignore module errors) ... " >&2 | ||
63 | sudo update-initramfs -k $VERSION -c | ||
64 | echo "done." >&2 | ||
65 | |||
66 | echo "Making u-boot initrd image ... " >&2 | ||
67 | mkimage -A arm -O linux -T ramdisk -C none -a 0x0 -e 0x0 \ | ||
68 | -d /boot/initrd.img-$VERSION $TMP_DIR/$INITRD_NAME >&2 | ||
69 | echo "done." >&2 | ||
70 | 32 | ||
71 | echo "Mounting u-boot partition ..." >&2 | 33 | echo "Mounting u-boot partition ..." >&2 |
72 | sudo mount $UBOOT_PART $TMP_MOUNT | 34 | sudo mount $UBOOT_PART $TMP_MOUNT |
73 | echo "done." >&2 | 35 | echo "done." >&2 |
74 | 36 | ||
75 | echo "Copying files to u-boot partition ..." >&2 | 37 | UBOOT_PATH=$TMP_MOUNT |
76 | sudo cp $TMP_DIR/$UIMAGE_NAME $TMP_MOUNT/ | 38 | copy_to_uboot |
77 | sudo cp $TMP_DIR/$SCR_NAME $TMP_MOUNT/ | ||
78 | sudo cp $TMP_DIR/$INITRD_NAME $TMP_MOUNT/ | ||
79 | echo "done." >&2 | ||
80 | 39 | ||
81 | echo "Unmounting u-boot partition ..." >&2 | 40 | echo "Unmounting u-boot partition ..." >&2 |
82 | sudo umount $TMP_MOUNT | 41 | sudo umount $TMP_MOUNT |
83 | echo "done." >&2 | 42 | echo "done." >&2 |
84 | 43 | ||
85 | echo "Removing temporary files ..." >&2 | 44 | rm_tmp_files |
86 | rm -rf $TMP_DIR $TMP_MOUNT | 45 | rm -rf $TMP_MOUNT |
87 | echo "done." >&2 | ||
88 | 46 | ||
89 | echo "All done!" >&2 | 47 | echo "All done!" >&2 |