#!/bin/bash # Create guest root image # # Copyright (C) 2004 Eric Marchionni, Patrik Rayo # Zuercher Hochschule Winterthur # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation; either version 2 of the License, or (at your # option) any later version. See . # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License # for more details. echo "Building root image" DIR=$(dirname `readlink -f $0`) . $DIR/../testing.conf . $DIR/function.sh [ `id -u` -eq 0 ] || die "You must be root to run $0" [ -f "$BASEIMG" ] || die "Base image $BASEIMG not found" running_any $STRONGSWANHOSTS && die "Please stop test environment before running $0" check_commands partprobe qemu-img qemu-nbd load_qemu_nbd mkdir -p $LOOPDIR mkdir -p $SHAREDDIR/compile mkdir -p $IMGDIR log_action "Creating root image $ROOTIMG" execute "qemu-img create -b $BASEIMG -f $IMGEXT $ROOTIMG" log_action "Connecting root image to NBD device $NBDEV" execute "qemu-nbd -c $NBDEV $ROOTIMG" do_on_exit qemu-nbd -d $NBDEV partprobe $NBDEV log_action "Mounting $NBDPARTITION to $LOOPDIR" execute "mount $NBDPARTITION $LOOPDIR" do_on_exit umount $LOOPDIR log_action "Mounting proc filesystem to $LOOPDIR/proc" execute "mount -t proc none $LOOPDIR/proc" do_on_exit umount $LOOPDIR/proc mkdir -p $LOOPDIR/root/shared log_action "Mounting $SHAREDDIR as /root/shared" execute "mount -o bind $SHAREDDIR $LOOPDIR/root/shared" do_on_exit umount $LOOPDIR/root/shared echo "Installing software from source" RECPDIR=$DIR/recipes RECIPES=`ls $RECPDIR/*.mk | xargs -n1 basename` execute "cp -r $RECPDIR/patches $LOOPDIR/root/shared/compile" 0 for r in $RECIPES do cp $RECPDIR/$r ${LOOPDIR}/root/shared/compile log_action "Installing from recipe $r" execute_chroot "make SWANVERSION=$SWANVERSION -C /root/shared/compile -f $r" done log_action "Removing /etc/resolv.conf" execute "rm -f $LOOPDIR/etc/resolv.conf"