sonic-buildimage/build_kvm_image.sh
lguohan f09488473d
[vs]: fail the build when build kvm image fails (#2297)
Signed-off-by: Guohan Lu <gulv@microsoft.com>
2018-11-25 11:33:00 -08:00

78 lines
1.4 KiB
Bash
Executable File

#!/bin/sh -ex
# Copyright (C) 2014 Curt Brune <curt@cumulusnetworks.com>
#
# SPDX-License-Identifier: GPL-2.0
MEM=2048
DISK=$1
ONIE_RECOVERY_ISO=$2
INSTALLER=$3
DISK_SIZE=$4
INSTALLER_DISK="./sonic-installer.img"
# VM will listen on telnet port $KVM_PORT
KVM_PORT=9000
on_exit()
{
rm -f $kvm_log
}
kvm_log=$(mktemp)
trap on_exit EXIT
create_disk()
{
echo "Creating SONiC kvm disk : $DISK of size $DISK_SIZE GB"
qemu-img create -f qcow2 $DISK ${DISK_SIZE}G
}
prepare_installer_disk()
{
fallocate -l 1024M $INSTALLER_DISK
mkfs.vfat $INSTALLER_DISK
tmpdir=$(mktemp -d)
mount -o loop $INSTALLER_DISK $tmpdir
cp $INSTALLER $tmpdir/onie-installer.bin
umount $tmpdir
}
create_disk
prepare_installer_disk
/usr/bin/kvm -m $MEM \
-name "onie" \
-boot "order=cd,once=d" -cdrom "$ONIE_RECOVERY_ISO" \
-device e1000,netdev=onienet \
-netdev user,id=onienet,hostfwd=:0.0.0.0:3041-:22 \
-vnc 0.0.0.0:0 \
-vga std \
-drive file=$DISK,media=disk,if=virtio,index=0 \
-drive file=$INSTALLER_DISK,if=virtio,index=1 \
-serial telnet:127.0.0.1:$KVM_PORT,server > $kvm_log 2>&1 &
kvm_pid=$!
sleep 2.0
[ -d "/proc/$kvm_pid" ] || {
echo "ERROR: kvm died."
cat $kvm_log
exit 1
}
echo "to kill kvm: sudo kill $kvm_pid"
./check_install.py -u $SONIC_USERNAME -P $PASSWD -p $KVM_PORT
kill $kvm_pid
exit 0