|
11 | 11 | # * |
12 | 12 | # * SPDX-License-Identifier: Apache-2.0 |
13 | 13 | # ********************************************************************************/ |
14 | | -# |
15 | | -# Run qemu with TAP network |
16 | | -# |
17 | | -# set -x |
18 | 14 |
|
19 | | -USERID="-u $(id -u)" |
20 | | -GROUP="-g $(id -g)" |
21 | | -TUNCTL="sudo tunctl" |
22 | | -IFCONFIG="sudo ip" |
23 | | -IPTABLES="sudo iptables" |
24 | | -TAP= |
25 | | - |
26 | | -function setupTap() { |
27 | | - TAP=`$TUNCTL -b $GROUP 2>&1` |
28 | | - n=$[ (`echo $TAP | sed 's/tap//'` * 2) + 1 ] |
29 | | - $IFCONFIG addr add 192.168.7.$n/32 broadcast 192.168.7.255 dev $TAP |
30 | | - $IFCONFIG link set dev $TAP up |
31 | | - dest=$[ (`echo $TAP | sed 's/tap//'` * 2) + 2 ] |
32 | | - $IFCONFIG route add to 192.168.7.$dest dev $TAP |
33 | | - $IPTABLES -A POSTROUTING -t nat -j MASQUERADE -s 192.168.7.$n/32 |
34 | | - $IPTABLES -A POSTROUTING -t nat -j MASQUERADE -s 192.168.7.$dest/32 |
35 | | - sudo bash -c "echo 1 > /proc/sys/net/ipv4/ip_forward" |
36 | | - sudo bash -c "echo 1 > /proc/sys/net/ipv4/conf/$TAP/proxy_arp" |
37 | | - $IPTABLES -P FORWARD ACCEPT |
38 | | - echo "Set up TAP network interface: $TAP" |
39 | | -} |
40 | | - |
41 | | -function teardownTap() { |
42 | | - echo "Tearing down TAP network interface: $TAP" |
43 | | - $TUNCTL -d $TAP |
44 | | - $IFCONFIG link del $TAP |
45 | | - n=$[ (`echo $TAP | sed 's/tap//'` * 2) + 1 ] |
46 | | - dest=$[ (`echo $TAP | sed 's/tap//'` * 2) + 2 ] |
47 | | - $IPTABLES -D POSTROUTING -t nat -j MASQUERADE -s 192.168.7.$n/32 |
48 | | - $IPTABLES -D POSTROUTING -t nat -j MASQUERADE -s 192.168.7.$dest/32 |
49 | | -} |
50 | | - |
51 | | -trap teardownTap EXIT |
52 | | - |
53 | | -function askInstall() { |
54 | | - local package=$1 |
55 | | - while true |
56 | | - do |
57 | | - echo "Do you wish to install $package using sudo?" |
58 | | - select ync in "Yes" "No" "Cancel"; do |
59 | | - case $ync in |
60 | | - Yes ) |
61 | | - sudo apt-get install -y $package; |
62 | | - return 1 |
63 | | - ;; |
64 | | - No ) |
65 | | - return 0 |
66 | | - ;; |
67 | | - Cancel ) |
68 | | - exit |
69 | | - ;; |
70 | | - esac |
71 | | - done |
72 | | - done |
73 | | -} |
74 | | - |
75 | | -if ! command -v qemu-system-x86_64 &> /dev/null |
76 | | -then |
77 | | - echo "Qemu not installed." |
78 | | - askInstall "qemu-system-x86" |
79 | | -else |
80 | | - echo "Qemu found." |
81 | | -fi |
82 | | - |
83 | | -if ! command -v tunctl &> /dev/null |
84 | | -then |
85 | | - echo "tunctl not installed." |
86 | | - askInstall "uml-utilities" |
87 | | -else |
88 | | - echo "tunctl found." |
89 | | -fi |
90 | | - |
91 | | - |
92 | | - |
93 | | - |
94 | | -setupTap |
95 | | - |
96 | | -sudo qemu-system-x86_64 \ |
97 | | - -device virtio-net-pci,netdev=net0,mac=52:54:00:12:34:02 \ |
98 | | - -netdev tap,id=net0,ifname=$TAP,script=no,downscript=no \ |
99 | | - -object rng-random,filename=/dev/urandom,id=rng0 \ |
100 | | - -device virtio-rng-pci,rng=rng0 \ |
101 | | - -drive id=hd,file=sdv-image-all-qemux86-64.wic.qcow2,if=virtio,format=qcow2 \ |
102 | | - -enable-kvm \ |
103 | | - -serial mon:stdio \ |
104 | | - -serial null \ |
105 | | - -serial mon:vc \ |
106 | | - -nographic \ |
107 | | - -object can-bus,id=canbus0 \ |
108 | | - -device kvaser_pci,canbus=canbus0 \ |
109 | | - -drive if=pflash,format=qcow2,file=ovmf.qcow2 \ |
110 | | - -cpu IvyBridge \ |
111 | | - -machine q35 \ |
112 | | - -smp 4 \ |
113 | | - -m 4G |
114 | | - |
| 15 | +qemu-system-x86_64 \ |
| 16 | + -net nic,model=virtio \ |
| 17 | + -net user,hostfwd=tcp::2222-:22,hostfwd=tcp::1880-:1880,hostfwd=tcp::1883-:1883,hostfwd=tcp::8888-:8888,hostfwd=tcp::30555-:30555 \ |
| 18 | + -object rng-random,filename=/dev/urandom,id=rng0 \ |
| 19 | + -device virtio-rng-pci,rng=rng0 \ |
| 20 | + -drive id=hd,file=sdv-image-all-qemux86-64.wic.qcow2,if=virtio,format=qcow2 \ |
| 21 | + -serial mon:stdio \ |
| 22 | + -serial null \ |
| 23 | + -serial mon:vc \ |
| 24 | + -nographic \ |
| 25 | + -object can-bus,id=canbus0 \ |
| 26 | + -device kvaser_pci,canbus=canbus0 \ |
| 27 | + -drive if=pflash,format=qcow2,file=ovmf.qcow2 \ |
| 28 | + -cpu IvyBridge \ |
| 29 | + -machine q35 \ |
| 30 | + -smp 4 \ |
| 31 | + -m 2G |
0 commit comments