#!/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" . $PWD/scripts/function.sh [ `id -u` -eq 0 ] || die "You must be root to run $0" [ -f "$ROOTFS" ] || die "Root image $ROOTFS not found" load_qemu_nbd mkdir -p $ROOTFSDIR mkdir -p $LOOPDIR mkdir -p $ROOTFSCOMPILEDIR cd $ROOTFSDIR BASE=$BUILDDIR/base.qcow2 log_action "Creating $BASE" execute "cp $ROOTFS $BASE" log_action "Connecting base image to NBD device $NBDEV" execute "qemu-nbd -c $NBDEV $BASE" sync log_action "Mounting $NBDPARTITION to $LOOPDIR" execute "mount $NBDPARTITION $LOOPDIR" log_action "Mounting proc filesystem to $LOOPDIR/proc" execute "mount -t proc none $LOOPDIR/proc" mkdir -p $LOOPDIR/root/compile log_action "Mounting $ROOTFSCOMPILEDIR as /root/compile" execute "mount -o bind $ROOTFSCOMPILEDIR $LOOPDIR/root/compile" do_on_exit umount $LOOPDIR/root/compile do_on_exit umount $LOOPDIR/proc do_on_exit umount $LOOPDIR do_on_exit qemu-nbd -d $NBDEV echo "Installing software from source" RECPDIR=$TESTDIR/testing/scripts/recipes RECIPES=`ls $RECPDIR/*.mk | xargs -n1 basename` execute "cp -r $RECPDIR/patches $LOOPDIR/root/compile" 0 for r in $RECIPES do cp $RECPDIR/$r ${LOOPDIR}/root/compile log_action "Installing from recipe $r" execute_chroot "make SWANVERSION=$SWANVERSION -C /root/compile -f $r" done log_action "Removing /etc/resolv.conf" execute "rm -f $LOOPDIR/etc/resolv.conf"