-
Notifications
You must be signed in to change notification settings - Fork 0
/
run.sh
executable file
·85 lines (67 loc) · 1.55 KB
/
run.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#!/bin/bash
ROOT_DIR=$PWD/${0%/*}
CFG_FILE=config
#if run in docker, pull latest version
if [ -f "/.dockerenv" ];then
cd $ROOT_DIR
git pull origin master
cd -
fi
#check parameter
if [ -n $1 ] && [ -d $ROOT_DIR/$1 ] && [ -f $ROOT_DIR/$1/$CFG_FILE ]; then
TARGET_DIR=$ROOT_DIR/$1
else
echo select valid machine:
for dir in `ls -d */$CFG_FILE`
do
echo "[${dir%/*}]"
done
exit -1
fi
#determination host os
HOST="$(uname)"
EXEC=$ROOT_DIR/bin/${HOST}/qemu-system
#include machine config
. $TARGET_DIR/config
COMMAND="$EXEC-$ARCH -M $MACHINE -m $MEMORY -cpu $CPU -kernel $TARGET_DIR/$VMLINUXZ"
if [ -n "$INITRD_IMG" ];then
COMMAND+=" -initrd $TARGET_DIR/$INITRD_IMG"
fi
#smp core config
if [ -n "$SMP" ];then
COMMAND+=" -smp $SMP"
fi
if [ -n "$SYSTEM_FILE" ];then
COMMAND+=" -drive if=none,file=$TARGET_DIR/${SYSTEM_FILE},format=$SYSTEM_FORMAT,id=hd0 -device virtio-blk-pci,drive=hd0"
fi
if [ -n "$PORT_FOWARD" ];then
COMMAND+=" -net user,hostfwd=tcp::$PORT_FOWARD"
fi
if [ -n "$NET_ARGS" ];then
COMMAND+=" $NET_ARGS"
fi
if [ -n "$VNC_PORT" ];then
echo "Run in VNC mode. VNC PORT is: `expr 5900 + $VNC_PORT`"
COMMAND+=" -vnc :$VNC_PORT"
else
COMMAND+=" -nographic"
fi
if [ -n "$EXT_PARAM" ];then
COMMAND+=" $EXT_PARAM"
fi
if [ -n "$BOOT_ARGS" ];then
COMMAND+=" -append \"${BOOT_ARGS}\""
fi
if [ -n "$GDB_PORT" ];then
COMMAND+=" -gdb tcp::$GDB_PORT"
fi
if [ -n "$SOUND_CARD" ];then
COMMAND+=" -soundhw $SOUND_CARD"
fi
if [ -n "$INIT_SCRIPT" ];then
cd $TARGET_DIR
./$INIT_SCRIPT
cd -
fi
echo $COMMAND
eval $COMMAND