Statistics
| Branch: | Tag: | Revision:

root / host / snf-image-update-helper.in @ d51a95a8

History | View | Annotate | Download (1.9 kB)

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