-
Notifications
You must be signed in to change notification settings - Fork 25
Expand file tree
/
Copy pathrun_virt
More file actions
executable file
·102 lines (86 loc) · 2.43 KB
/
run_virt
File metadata and controls
executable file
·102 lines (86 loc) · 2.43 KB
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#!/bin/bash
echo "Running virt emulator"
ARGS=""
if [ "$1" = "debug" ]; then
ARGS="-monitor unix:/tmp/qemu-monitor-socket,server,nowait -s -S"
fi
MSI_CAPABILITIES=""
XHCI_CAPABILITIES="$(qemu-system-aarch64 -device qemu-xhci,help)"
if echo "$XHCI_CAPABILITIES" | grep -q "msi "; then
MSI_CAPABILITIES="msi=on,msix=off,"
fi
OS_TYPE="$(uname)"
DISPLAY_MODE="default"
AUDIO_BACKEND="sdl"
VIRTIO_GPU_VARS=",xres=1920,yres=1080"
GL="on"
USE_FB=true
USE_NET=false
if [ "$USE_FB" == true ]; then
SELECTED_GPU="ramfb"
fi
if [ "$OS_TYPE" = "Darwin" ]; then
NETDEV="-netdev vmnet-bridged,id=net0,ifname=en0"
PRIVILEGE="sudo"
DISPLAY_MODE="cocoa"
if [ "$USE_FB" != true ]; then
SELECTED_GPU="virtio-gpu-pci"
fi
AUDIO_BACKEND="coreaudio"
GL="off"
elif [ "$OS_TYPE" = "Linux" ]; then
fuser -k -KILL ./disk.img
NETDEV="-netdev user,id=net0"
PRIVILEGE=""
DISPLAY_MODE="sdl"
if [ "$USE_FB" != true ]; then
SELECTED_GPU="virtio-gpu-pci$VIRTIO_GPU_VARS"
fi
GL="off"
else
echo "Unknown OS: $OS_TYPE" >&2
exit 1
fi
if [ -d /sys/class/net/tap0 ] && [ -d /sys/class/net/br0 ]; then
#tap bridge
NETDEV="-netdev tap,id=net0,ifname=tap0,script=no,downscript=no,vnet_hdr=off"
PRIVILEGE=""
sudo lsof /dev/net/tun >/dev/null 2>&1 && sudo fuser -k /dev/net/tun
fi
NETDRIV="-device virtio-net-pci,netdev=net0,mac=52:54:00:12:34:56,speed=10000,duplex=full"
DUMP="-object filter-dump,id=f0,netdev=net0,file=/tmp/virtio.pcap"
if [ "$USE_NET" != true ]; then
NETDEV=""
DUMP=""
PRIVILEGE=""
NETDRIV=""
fi
SHARED_FOLDER="../os_repo"
if [ -d "$SHARED_FOLDER" ]; then
echo "EXISTS $SHARED_FOLDER";
SHAREDFS="-fsdev local,path=$SHARED_FOLDER,security_model=mapped-xattr,id=sharedfs \
-device virtio-9p-pci,fsdev=sharedfs,mount_tag=shared"
fi
echo "Using networking mode: $NETDEV $NETDRIV $DUMP"
$PRIVILEGE qemu-system-aarch64 \
-M virt \
-cpu cortex-a72 \
-m 512M \
-kernel kernel.elf \
-display $DISPLAY_MODE${GL:+,gl=$GL} \
-device $SELECTED_GPU \
$NETDEV \
$NETDRIV \
$DUMP \
-serial stdio \
-drive file=disk.img,if=none,format=raw,id=hd0 \
-device virtio-blk-pci,drive=hd0 \
$SHAREDFS \
-device qemu-xhci,${MSI_CAPABILITIES}id=usb \
-device usb-kbd,bus=usb.0 \
-device usb-mouse,bus=usb.0 \
-device virtio-sound-pci,audiodev=audio \
-trace events=./traceevents -trace file=./trace \
-audiodev ${AUDIO_BACKEND},id=audio \
-d guest_errors \
$ARGS