Statistics
| Branch: | Tag: | Revision:

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

History | View | Annotate | Download (1.9 kB)

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 :