Advertisement
Guest User

Untitled

a guest
May 6th, 2016
386
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.99 KB | None | 0 0
  1. These scripts allow starting qemu without root priveleges and network startup scripts
  2. ---br0.sh---
  3. #!/bin/bash
  4.  
  5. brctl addbr br0
  6. ifconfig <ifname> promisc
  7. ip tuntap add dev <tapname> mode tap user <username> group <group>
  8. ifconfig <tapname> 0.0.0.0 promisc up
  9. brctl addif br0 <ifname> <tapname>
  10. ifconfig br0 hw ether xx:xx:xx:xx:xx:xx up
  11. dhcpcd
  12. ---------
  13. ---qbr0.sh---
  14. #!/bin/bash
  15. #
  16. # Copyright IBM, Corp. 2010
  17. #
  18. # Authors:
  19. # Anthony Liguori <aliguori@us.ibm.com>
  20. #
  21. # This work is licensed under the terms of the GNU GPL, version 2. See
  22. # the COPYING file in the top-level directory.
  23.  
  24. # Set to the name of your bridge
  25. BRIDGE=qbr0
  26.  
  27. # Network information
  28. NETWORK=10.1.1.0
  29. NETMASK=255.255.255.0
  30. GATEWAY=10.1.1.1
  31. DHCPRANGE=10.1.1.2,10.1.1.254
  32.  
  33. # Set correct permissions
  34. USER=<username>
  35. GROUP=kvm
  36.  
  37. # Optionally parameters to enable PXE support
  38. #TFTPROOT=
  39. #BOOTP=
  40.  
  41. do_brctl() {
  42. brctl "$@"
  43. }
  44.  
  45. do_ifconfig() {
  46. ifconfig "$@"
  47. }
  48.  
  49. do_dd() {
  50. dd "$@"
  51. }
  52.  
  53. do_iptables_restore() {
  54. iptables-restore "$@"
  55. }
  56.  
  57. do_dnsmasq() {
  58. dnsmasq "$@"
  59. }
  60.  
  61. check_bridge() {
  62. if do_brctl show | grep "^$1" > /dev/null 2> /dev/null; then
  63. return 1
  64. else
  65. return 0
  66. fi
  67. }
  68.  
  69. create_bridge() {
  70. do_brctl addbr "$1"
  71. do_brctl stp "$1" off
  72. do_brctl setfd "$1" 0
  73. do_ifconfig "$1" "$GATEWAY" netmask "$NETMASK" up
  74. }
  75.  
  76. enable_ip_forward() {
  77. echo 1 | do_dd of=/proc/sys/net/ipv4/ip_forward > /dev/null
  78. }
  79.  
  80. add_filter_rules() {
  81. do_iptables_restore <<EOF
  82.  
  83. *nat
  84. -A POSTROUTING -s $NETWORK/$NETMASK -j MASQUERADE
  85. COMMIT
  86.  
  87. *filter
  88. -A FORWARD -i $1 -o $1 -j ACCEPT
  89. -A FORWARD -s $NETWORK/$NETMASK -i $BRIDGE -j ACCEPT
  90. -A FORWARD -d $NETWORK/$NETMASK -o $BRIDGE -m state --state RELATED,ESTABLISHED -j ACCEPT
  91. -A FORWARD -o $BRIDGE -j REJECT --reject-with icmp-port-unreachable
  92. -A FORWARD -i $BRIDGE -j REJECT --reject-with icmp-port-unreachable
  93. COMMIT
  94.  
  95. EOF
  96. }
  97.  
  98. start_dnsmasq() {
  99. do_dnsmasq \
  100. --strict-order \
  101. --except-interface=lo \
  102. --interface=$BRIDGE \
  103. --listen-address=$GATEWAY \
  104. --bind-interfaces \
  105. --dhcp-range=$DHCPRANGE \
  106. --conf-file="" \
  107. --pid-file=/var/run/qemu-dnsmasq-$BRIDGE.pid \
  108. --dhcp-leasefile=/var/run/qemu-dnsmasq-$BRIDGE.leases \
  109. --dhcp-no-override
  110. }
  111.  
  112. setup_bridge_nat() {
  113. if check_bridge "$1" ; then
  114. create_bridge "$1"
  115. enable_ip_forward
  116. add_filter_rules "$1"
  117. start_dnsmasq "$1"
  118. fi
  119. }
  120.  
  121. setup_bridge_vlan() {
  122. if check_bridge "$1" ; then
  123. create_bridge "$1"
  124. start_dnsmasq "$1"
  125. fi
  126. }
  127.  
  128. setup_bridge_nat "$BRIDGE"
  129.  
  130. if test "$1" ; then
  131. do_ifconfig "$1" 0.0.0.0 up
  132. do_brctl addif "$BRIDGE" "$1"
  133. fi
  134.  
  135.  
  136. # Add 16 TAP devices
  137. ip tuntap add dev qtap0 mode tap user "$USER" group "$GROUP"
  138. ip tuntap add dev qtap1 mode tap user "$USER" group "$GROUP"
  139. ip tuntap add dev qtap2 mode tap user "$USER" group "$GROUP"
  140. ip tuntap add dev qtap3 mode tap user "$USER" group "$GROUP"
  141. ip tuntap add dev qtap4 mode tap user "$USER" group "$GROUP"
  142. ip tuntap add dev qtap5 mode tap user "$USER" group "$GROUP"
  143. ip tuntap add dev qtap6 mode tap user "$USER" group "$GROUP"
  144. ip tuntap add dev qtap7 mode tap user "$USER" group "$GROUP"
  145. ip tuntap add dev qtap8 mode tap user "$USER" group "$GROUP"
  146. ip tuntap add dev qtap9 mode tap user "$USER" group "$GROUP"
  147. ip tuntap add dev qtap10 mode tap user "$USER" group "$GROUP"
  148. ip tuntap add dev qtap11 mode tap user "$USER" group "$GROUP"
  149. ip tuntap add dev qtap12 mode tap user "$USER" group "$GROUP"
  150. ip tuntap add dev qtap13 mode tap user "$USER" group "$GROUP"
  151. ip tuntap add dev qtap14 mode tap user "$USER" group "$GROUP"
  152. ip tuntap add dev qtap15 mode tap user "$USER" group "$GROUP"
  153.  
  154. # Start TAP devices
  155. ifconfig qtap0 0.0.0.0 up
  156. ifconfig qtap1 0.0.0.0 up
  157. ifconfig qtap2 0.0.0.0 up
  158. ifconfig qtap3 0.0.0.0 up
  159. ifconfig qtap4 0.0.0.0 up
  160. ifconfig qtap5 0.0.0.0 up
  161. ifconfig qtap6 0.0.0.0 up
  162. ifconfig qtap7 0.0.0.0 up
  163. ifconfig qtap8 0.0.0.0 up
  164. ifconfig qtap9 0.0.0.0 up
  165. ifconfig qtap10 0.0.0.0 up
  166. ifconfig qtap11 0.0.0.0 up
  167. ifconfig qtap12 0.0.0.0 up
  168. ifconfig qtap13 0.0.0.0 up
  169. ifconfig qtap14 0.0.0.0 up
  170. ifconfig qtap15 0.0.0.0 up
  171.  
  172. # Add TAP devices to bridge
  173. brctl addif "$BRIDGE" qtap0 qtap1 qtap2 qtap3 qtap4 qtap5 qtap6 qtap7 qtap8 qtap9 qtap10 qtap11 qtap12 qtap13 qtap14 qtap15
  174.  
  175. # Set correct permissions
  176. setcap CAP_NET_ADMIN=ep /usr/bin/qemu-system-x86_64
  177. ---------
  178. ---10-qemu.rules---
  179. KERNEL=="1", SUBSYSTEM=="vfio", OWNER="<username>", GROUP="vfio"
  180. ATTR{idVendor}=="0id0", ATTR{idProduct}=="0id0", OWNER:="root", GROUP:="plugdev",MODE:="0660"
  181. ---------
  182. ---bridge.conf---
  183. allow br0
  184. ---------
  185. ---test-vm.sh---
  186. #/bin/bash
  187.  
  188. export QEMU_AUDIO_DRV=alsa
  189. export QEMU_AUDIO_DAC_FIXED_SETTINGS=1
  190. export QEMU_AUDIO_DAC_FIXED_FREQ=48000
  191. export QEMU_AUDIO_ADC_FIXED_SETTINGS=1
  192. export QEMU_AUDIO_ACD_FIXED_FREQ=48000
  193. export QEMU_ALSA_DAC_PERIOD_SIZE=170
  194. export QEMU_ALSA_DAC_BUFFER_SIZE=512
  195.  
  196. qemu-system-x86_64 \
  197. -nodefaults \
  198. -name 'NAME' \
  199. -enable-kvm \
  200. -monitor stdio \
  201. -rtc base=localtime \
  202. -cpu core2duo,kvm=off,+vmx \
  203. -smp 2,sockets=1,cores=2,threads=1 \
  204. -M q35 \
  205. -m 2G \
  206. -device VGA,id=video0,bus=pcie.0,addr=0x11 \
  207. -display gtk \
  208. -device ich9-usb-ehci1,id=ehci0,bus=pcie.0,addr=0x18.0x7 \
  209. -device ich9-usb-uhci1,id=uhci1,masterbus=ehci0.0,firstport=0,bus=pcie.0,multifunction=on,addr=0x18 \
  210. -device ich9-usb-uhci2,id=uhci2,masterbus=ehci0.0,firstport=2,bus=pcie.0,addr=0x18.0x1 \
  211. -device ich9-usb-uhci3,id=uhci3,masterbus=ehci0.0,firstport=4,bus=pcie.0,addr=0x18.0x2 \
  212. -device usb-tablet,id=tablet0 \
  213. -device virtio-net,netdev=user0,mac=52:54:00:12:34:56,id=int0,bus=pcie.0,addr=16 \
  214. -netdev tap,script=no,downscript=no,ifname=qtap0,vhost=on,id=qtap0 \
  215. -netdev bridge,id=br0 \
  216. -device virtio-net,netdev=br0,mac=52:54:00:12:34:50,id=vnet0,bus=pcie.0,addr=15 \
  217. -netdev socket,id=socket0,mcast=230.0.0.1:1234 \
  218. -device e1000-82545em,netdev=socket0,mac=52:54:00:12:34:51,id=vnet0,bus=pcie.0,addr=15 \
  219. -device ahci,id=ahci0,bus=pcie.0,multifunction=on,addr=0x3.0x0 \
  220. -drive file='*.iso',if=none,media=cdrom,readonly=on,id=drive-sata0-0-1,format=raw -device ide-drive,bus=ahci0.0,drive=drive-sata0-0-1,id=sata0-0-1 \
  221. -drive file='*.qcow2',if=none,media=disk,id=drive-sata0-0-2,format=qcow2 -device ide-drive,bus=ahci0.1,drive=drive-sata0-0-2,id=sata0-0-2
  222.  
  223.  
  224. #-netdev socket,id=socket0,mcast=230.0.0.1:1234 \
  225. #-device e1000-82545em,netdev=socket0,mac=52:54:00:12:34:51,id=vnet0,bus=pcie.0,addr=15 \
  226. #-netdev tap,script=no,downscript=no,ifname=qtap1,id=qtap1 \
  227. #-device e1000-82545em,netdev=qtap1,mac=52:54:00:12:34:51,id=vnet0,bus=pcie.0,addr=15 \
  228. #
  229. #-usbdevice host:09da:9090,id=mouse \
  230. #-usbdevice host:04d9:1702,id=keyboard \
  231. #-device ich9-intel-hda,bus=pcie.0,addr=1b.0,id=sound0 \
  232. #-device hda-micro,id=sound0-codec0,bus=sound0.0,cad=0 \
  233. #-device usb-tablet,id=tablet0 \
  234. #-device usb-kbd,id=kbd0 \
  235. #-device usb-mouse,id=mouse0 \
  236. #-drive file='/media/Public/OSes/Microsoft Windows/Windows Server 2008 R2 SP1/UPDATED/WIN2008R2_RU_UPDATED_UEFI.iso',if=none,media=cdrom,readonly=on,id=drive-sata0-0-1,format=raw -device ide-drive,bus=ahci0.0,drive=drive-sata0-0-1,id=sata0-0-1,bootindex=1 \
  237. #-drive file='/media/Public/Software/Linux/Virtual Machines/Qemu-KVM/drivers/VirtIO/virtio-win-0.1.110.iso',if=none,media=cdrom,readonly=on,id=drive-sata0-0-2,format=raw -device ide-drive,bus=ahci0.1,drive=drive-sata0-0-2,id=sata0-0-2,bootindex=2
  238. #-device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,bus=pcie.0,addr=0x11 \
  239. #-global qxl-vga.revision=4 \
  240. #-netdev bridge,id=br0 \
  241. #-device virtio-net,netdev=br0,mac=00:00:00:FF:FF:12,id=vnet0,bus=pcie.0,addr=15 \
  242. #-netdev user,id=user0 \
  243. #-device virtio-net,netdev=user0,mac=52:54:00:12:34:56,id=int0,bus=pcie.0,addr=16 \
  244. #-netdev tap,script=no,downscript=no,ifname=qtap0,vhost=on,id=qtap0 \
  245. #-device virtio-net,netdev=qtap0,mac=00:00:00:FF:FF:04,id=vnet0,bus=pcie.0,addr=15 \
  246. #-netdev user,restrict=yes,id=user0 \
  247. #-device e1000-82545em,netdev=user0,mac=52:54:00:12:34:57,id=int0,bus=pcie.0,addr=16 \
  248. #-device virtio-balloon-pci,id=balloon0,bus=pcie.0,addr=0x9 \
  249. #-device virtio-rng-pci,id=ring0,bus=pcie.0,addr=0x8 \
  250. #
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement