version 1.1, 2020/06/03 09:46:49
|
version 1.1.1.2, 2021/03/17 00:20:15
|
Line 1
|
Line 1
|
#!/bin/bash |
#!/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 <http://www.fsf.org/copyleft/gpl.txt>. |
|
# |
|
# 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" |
echo "Building root image" |
|
|
DIR=$(dirname `readlink -f $0`) |
DIR=$(dirname `readlink -f $0`) |
. $DIR/../testing.conf |
. $DIR/../testing.conf |
. $DIR/function.sh |
|
|
|
[ `id -u` -eq 0 ] || die "You must be root to run $0" | $DIR/build-strongswan --all --replace --no-guests --tarball $SWANVERSION |
[ -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 | |
if [ -d "$RECPDIR/patches" ] | |
then | |
execute "cp -r $RECPDIR/patches $LOOPDIR/root/shared/compile" 0 | |
fi | |
RECIPES=`ls $RECPDIR/*.mk | xargs -n1 basename` | |
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" | |