Move update-helper script to snf-image-host
[snf-image] / snf-image-host / snf-image-update-helper.in
1 #!/bin/bash
2
3 set -e
4 set -x
5
6 . @osdir@/common.sh
7
8 CACHE_FILE="$HELPER_DIR/cache.tar"
9 ARCH=amd64
10 EXTRA_PKGS="linux-image-amd64,e2fsprogs,ntfs-3g,xmlstarlet"
11
12 helper_img=$(mktemp $HELPER_DIR/image.XXXXXXXX)
13
14 dd if=/dev/zero of=$helper_img bs=1k count=400000
15 blockdev=$(losetup -sf $helper_img)
16 CLEANUP+=("losetup -d $blockdev")
17
18 format_disk0 $blockdev "extdump"
19
20 root_dev=$(map_disk0 $blockdev)-1
21 CLEANUP+=("unmap_disk0 $blockdev")
22
23 mkfs.ext3 $root_dev
24
25 TMPDIR=$(mktemp -d)
26 CLEANUP+=("rmdir $TMPDIR")
27
28 mount $root_dev $TMPDIR
29 CLEANUP+=("umount $root_dev")
30
31 if [  -f "$CACHE_FILE" ]; then
32     tar xf "$CACHE_FILE" -C $TMPDIR
33 else
34     debootstrap --arch "$ARCH" --include $EXTRA_PKGS --variant=minbase \
35             squeeze $TMPDIR
36
37     # remove the downloaded debs, as they are no longer needed
38     find "$TMPDIR/var/cache/apt/archives" -type f -name '*.deb' -print0 | \
39         xargs -r0 rm -f
40
41     TMP_CACHE=$(mktemp "${CACHE_FILE}.XXXXXX")
42     tar cf "$TMP_CACHE" -C $TMPDIR .
43     mv -f "$TMP_CACHE" "$CACHE_FILE"
44 fi
45
46 echo helper > $TMPDIR/etc/hostname
47
48 cat > $TMPDIR/etc/fstab <<EOF
49 # /etc/fstab: static file system information.
50 #
51 # <file system>   <mount point>   <type>  <options>       <dump>  <pass>
52 /dev/sda1         /               ext3    defaults        0       1
53 proc              /proc           proc    defaults        0       0
54 EOF
55
56 if [ ! -L "$TMPDIR/vmlinuz" -o ! -L "$TMPDIR/vmlinuz" ]; then
57
58         log_error "vmlinuz or initrd.img link in root is missing."
59         log_error "I don't know how to find a usable kernel/initrd pair."
60         exit 1
61 fi
62
63 kernel=$(readlink -en $TMPDIR/vmlinuz)
64 initrd=$(readlink -en $TMPDIR/initrd.img)
65
66 echo "Moving $(basename $kernel) and $(basename $initrd) to $HELPER_DIR"
67 mv $kernel $initrd $HELPER_DIR
68
69 kernel=$(basename $kernel)
70 initrd=$(basename $initrd)
71
72 (cd $HELPER_DIR; ln -fs $kernel kernel; ln -fs $initrd initrd)
73
74 rm $TMPDIR/vmlinuz $TMPDIR/initrd.img
75
76 cleanup
77
78 mv $helper_img $HELPER_DIR/image
79
80 trap - EXIT
81
82 exit 0
83
84 # vim: set sta sts=4 shiftwidth=4 sw=4 et ai :