一、QEMU的运行模式
直接摘抄自己《揭秘家用路由器0day漏洞挖掘技术》,网上查了一下也没有找到令人满意的QEMU的使用说明,就采用这本书上的介绍。如果后期能够找到比较满意的QEMU的使用方法的说明,再添加上来。
QEMU模拟器主要有两种比较常见的运作模式:User Mode(使用者模式)、System Mode(系统模式)。User Mode模式下,用户只需要将各种不同平台的处理编译得到的Linux程序放在QEMU虚拟中运行即可,其他的事情全部由QEMU虚拟机来完成,不需要用户自定义内核和虚拟磁盘等文件;System Mode模式下,最明显的特点是用户可以为QEMU虚拟机指定运行的内核或者虚拟硬盘等文件,简单来说系统模式下QEMU虚拟机是可根据用户的要求配置的。
二、QEMU在使用者模式下执行程序
当程序是静态编译(gcc编译的时候,加了静态编译选项 "-static" )完成,运行时 不需要依赖动态链接库 ,在使用QEMU运行编译好的Linux程序使用下面的命令就好:
查看可执行程序hello的文件类型MIPS32 | |
file hello | |
hello: ELF 32-bit MSB executable, MIPS, MIPS32 version 1 (SYSV), statically linked, not stripped | |
$ cp $(which qemu-mips) ./ | |
# 使用qemu-mips加载hello程序 | |
"Hello World" | ./qemu-mips hello|
Hello World |
执行结果截图:
当程序是动态编译(gcc编译的时候,没有静态编译选项 "-static" )完成,程序运行时 需要依赖动态链接库 ,在使用QEMU运行编译好的Linux程序使用下面的命令就好:
查看即将执行的文件的类型 | |
file bin/busybox | |
# 拷贝qemu-mips到当前目录 | |
cp $(which qemu-mips) ./ | |
# 直接运行报错 | |
./qemu-mips bin/busybox | |
# 更改QEMU-MIPS执行的根目录到当前目录 | |
chroot . ./qemu-mips ./bin/busybox | sudo
执行的结果截图:
QEMU使用者模式下使用的命令行帮助,以 qemu-mipsel 为例:
fly2016@ubuntu:~$ qemu-mipsel --help | |
usage: qemu-mipsel [options] program [arguments...] | |
Linux CPU emulator (compiled for mipsel emulation) | |
Options and associated environment variables: | |
Argument Env-variable Description | |
-h print this help | |
-help | |
-g port QEMU_GDB wait gdb connection to 'port' | |
-L path QEMU_LD_PREFIX set the elf interpreter prefix to 'path' | |
-s size QEMU_STACK_SIZE set the stack size to 'size' bytes | |
-cpu model QEMU_CPU select CPU (-cpu help for list) | |
-E var=value QEMU_SET_ENV sets targets environment variable (see below) | |
-U var QEMU_UNSET_ENV unsets targets environment variable (see below) | |
-0 argv0 QEMU_ARGV0 forces target process argv[0] to be 'argv0' | |
-r uname QEMU_UNAME set qemu uname release string to 'uname' | |
-B address QEMU_GUEST_BASE set guest_base address to 'address' | |
-R size QEMU_RESERVED_VA reserve 'size' bytes for guest virtual address space | |
-d item[,...] QEMU_LOG enable logging of specified items (use '-d help' for a list of items) | |
-D logfile QEMU_LOG_FILENAME write logs to 'logfile' (default stderr) | |
-p pagesize QEMU_PAGESIZE set the host page size to 'pagesize' | |
-singlestep QEMU_SINGLESTEP run in singlestep mode | |
-strace QEMU_STRACE log system calls | |
-seed QEMU_RAND_SEED Seed for pseudo-random number generator | |
-trace QEMU_TRACE [[enable=]<pattern>][,events=<file>][,file=<file>] | |
-version QEMU_VERSION display version information and exit | |
Defaults: | |
QEMU_LD_PREFIX = /usr/gnemul/qemu-mipsel | |
QEMU_STACK_SIZE = 8388608 byte | |
You can use -E and -U options or the QEMU_SET_ENV and | |
QEMU_UNSET_ENV environment variables to set and unset | |
environment variables for the target process. | |
It is possible to provide several variables by separating them | |
by commas in getsubopt(3) style. Additionally it is possible to | |
provide the -E and -U options multiple times. | |
The following lines are equivalent: | |
-E var1=val2 -E var2=val2 -U LD_PRELOAD -U LD_DEBUG | |
-E var1=val2,var2=val2 -U LD_PRELOAD,LD_DEBUG | |
QEMU_SET_ENV=var1=val2,var2=val2 QEMU_UNSET_ENV=LD_PRELOAD,LD_DEBUG | |
Note that if you provide several changes to a single variable | |
the last change will stay in effect. |
三、QEMU的系统模式使用
QEMU运行在系统模式下,需要为QEMU指定 内核镜像、IDE硬盘0/1镜像、内核命令行 等参数,QEMU虚拟机才能正常运行。Debian官网提供了QEMU虚拟机各种平台架构的内核镜像、硬盘文件镜像文件的下载,下载地址为:https://people.debian.org/~aurel32/qemu/,其中mips为大端机的,mipsel为小端机的。
这里以下载 mips大端机 的虚拟机镜像文件为例,具体的下载网址为: https://people.debian.org/~aurel32/qemu/mips/ ,点击进去以后会发现mips虚拟机镜像文件的下载说明。我们根据mips虚拟机镜像文件的使用命令参数进行选择性的下载。
Debian Squeeze and Wheezy mips images for QEMU | |
============================================== | |
This directory contains Debian Squeeze and Wheezy mips images for QEMU and | |
the corresponding kernels and initrds: | |
1d58f831f5e5064753c0c138d8d74057 debian_squeeze_mips_standard.qcow2 | |
cb56139b63b88fdb38776051d28bb750 vmlinux-2.6.32-5-4kc-malta | |
7165e80b0e5c5c3e40f2ca46401373ce vmlinux-2.6.32-5-5kc-malta | |
bf699f435160b0bd9ac62905fa64701e debian_wheezy_mips_standard.qcow2 | |
1fecbe19ff49a6fd715901483b23647c vmlinux-3.2.0-4-4kc-malta | |
19e6e853d4a7a7b9ed5e787b7f875835 vmlinux-3.2.0-4-5kc-malta | |
Both images are 25GiB images in QCOW2 format on which a Debian Squeeze or | |
Wheezy "Standard system" installation has been performed. The other | |
installation options are the following: | |
- Keyboard: US | |
- Locale: en_US | |
- Mirror: ftp.debian.org | |
- Hostname: debian-mips | |
- Root password: root | |
- User account: user | |
- User password: user | |
To use this image, you need to install QEMU 1.1.0 (or later). Start QEMU | |
with the following arguments for a 32-bit machine: | |
- qemu-system-mips -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda debian_squeeze_mips_standard.qcow2 -append "root=/dev/sda1 console=tty0" | |
- qemu-system-mips -M malta -kernel vmlinux-3.2.0-4-4kc-malta -hda debian_wheezy_mips_standard.qcow2 -append "root=/dev/sda1 console=tty0" | |
Start QEMU with the following arguments for a 64-bit machine: | |
- qemu-system-mips64 -M malta -kernel vmlinux-2.6.32-5-5kc-malta -hda debian_squeeze_mips_standard.qcow2 -append "root=/dev/sda1 console=tty0" | |
- qemu-system-mips64 -M malta -kernel vmlinux-3.2.0-4-5kc-malta -hda debian_wheezy_mips_standard.qcow2 -append "root=/dev/sda1 console=tty0" | |
By default QEMU emulates a machine with 128MiB of RAM. You can use the -m option | |
to increase or decrease the size of the RAM. It is however limited to 256MiB | |
with a 32-bit kernel. With a 64-bit kernel and QEMU >= 1.7, it is possible to | |
use up to 2047MiB of RAM, passing the memory map to the kernel, adding a mem= | |
argument to the append parameters as follow: "mem=256m@0x0 mem=XXXm@0x90000000" | |
where XXX represents the total memory size minus 256MiB. If you don't want to | |
start QEMU in graphic mode, you can use the -nographic option. The image is | |
configured to display a login prompt on the first serial port (ttys0). If you | |
want to switch the boot messages to the serial port, you need to replace | |
"console=tty0" by "console=ttyS0". |
这里下载内核文件 vmlinux-2.6.32-5-4kc-malta,磁盘镜像 debian_squeeze_mips_standard.qcow2 作为mips虚拟机的配置文件。
ubuntu下可以使用下面的命令进行mips和mipsel虚拟机镜像配置文件的下载:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
for a 32-bit machine: | Start QEMU with the following arguments|
"root=/dev/sda1 console=tty0" | qemu-system-mips -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda debian_squeeze_mips_standard.qcow2 -append|
"root=/dev/sda1 console=tty0" | qemu-system-mips -M malta -kernel vmlinux-3.2.0-4-4kc-malta -hda debian_wheezy_mips_standard.qcow2 -append|
# for MIPS 32bit ###############: | |
内核版本为2.6.x | |
wget https://people.debian.org/~aurel32/qemu/mips/vmlinux-2.6.32-5-4kc-malta | |
wget https://people.debian.org/~aurel32/qemu/mips/debian_squeeze_mips_standard.qcow2 | |
# 内核版本为3.2.x | |
wget https://people.debian.org/~aurel32/qemu/mips/vmlinux-3.2.0-4-4kc-malta | |
wget https://people.debian.org/~aurel32/qemu/mips/debian_wheezy_mips_standard.qcow2 | |
# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
for a 64-bit machine: | Start QEMU with the following arguments|
"root=/dev/sda1 console=tty0" | qemu-system-mips64 -M malta -kernel vmlinux-2.6.32-5-5kc-malta -hda debian_squeeze_mips_standard.qcow2 -append|
"root=/dev/sda1 console=tty0" | qemu-system-mips64 -M malta -kernel vmlinux-3.2.0-4-5kc-malta -hda debian_wheezy_mips_standard.qcow2 -append|
# for MIPS 64bit ###############: | |
内核版本为2.6.x | |
wget https://people.debian.org/~aurel32/qemu/mips/vmlinux-2.6.32-5-5kc-malta | |
wget https://people.debian.org/~aurel32/qemu/mips/debian_squeeze_mips_standard.qcow2 | |
# 内核版本为3.2.x | |
wget https://people.debian.org/~aurel32/qemu/mips/vmlinux-3.2.0-4-5kc-malta | |
wget https://people.debian.org/~aurel32/qemu/mips/debian_wheezy_mips_standard.qcow2 | |
# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
for a 32-bit machine: | Start QEMU with the following arguments|
"root=/dev/sda1 console=tty0" | qemu-system-mipsel -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda debian_squeeze_mipsel_standard.qcow2 -append|
"root=/dev/sda1 console=tty0" | qemu-system-mipsel -M malta -kernel vmlinux-3.2.0-4-4kc-malta -hda debian_wheezy_mipsel_standard.qcow2 -append|
# for MIPSEL 32bit ###############: | |
内核版本为2.6.x | |
wget https://people.debian.org/~aurel32/qemu/mipsel/vmlinux-2.6.32-5-4kc-malta | |
wget https://people.debian.org/~aurel32/qemu/mipsel/debian_squeeze_mipsel_standard.qcow2 | |
# 内核版本为3.2.x | |
wget https://people.debian.org/~aurel32/qemu/mipsel/vmlinux-3.2.0-4-4kc-malta | |
wget https://people.debian.org/~aurel32/qemu/mipsel/debian_wheezy_mipsel_standard.qcow2 | |
# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
for a 64-bit machine: | Start QEMU with the following arguments|
"root=/dev/sda1 console=tty0" | qemu-system-mips64el -M malta -kernel vmlinux-2.6.32-5-5kc-malta -hda debian_squeeze_mipsel_standard.qcow2 -append|
"root=/dev/sda1 console=tty0" | qemu-system-mips64el -M malta -kernel vmlinux-3.2.0-4-5kc-malta -hda debian_wheezy_mipsel_standard.qcow2 -append|
# for MIPSEL 64bit ###############: | |
内核版本为2.6.x | |
wget https://people.debian.org/~aurel32/qemu/mipsel/vmlinux-2.6.32-5-5kc-malta | |
wget https://people.debian.org/~aurel32/qemu/mipsel/debian_squeeze_mipsel_standard.qcow2 | |
# 内核版本为3.2.x | |
wget https://people.debian.org/~aurel32/qemu/mipsel/vmlinux-3.2.0-4-5kc-malta | |
wget https://people.debian.org/~aurel32/qemu/mipsel/debian_wheezy_mipsel_standard.qcow2 |
使用 qemu-system-mips 启动内核2.6.x版本MIPS 32bit的QEMU虚拟机镜像,QEMU启动失败,结果如下图:
$ sudo qemu-system-mips -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda debian_squeeze_mips_standard.qcow2 -append "root=/dev/sda1 console=tty0" -nographic
以控制台的形式启动QEMU虚拟机成功,结果如图:
QEMU系统者模式下使用的命令行帮助,以 qemu-system-mips 为例,功能挺强大的:
fly2016@ubuntu:~$ qemu-system-mips -h | |
QEMU emulator version 2.8.92 (v2.9.0-rc2-42-g6499fd1-dirty) | |
Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers | |
usage: qemu-system-mips [options] [disk_image] | |
'disk_image' is a raw hard disk image for IDE hard disk 0 | |
Standard options: | |
-h or -help display this help and exit | |
-version display version information and exit | |
-machine [type=]name[,prop[=value][,...]] | |
selects emulated machine ('-machine help' for list) | |
property accel=accel1[:accel2[:...]] selects accelerator | |
supported accelerators are kvm, xen, tcg (default: tcg) | |
kernel_irqchip=on|off|split controls accelerated irqchip support (default=off) | |
vmport=on|off|auto controls emulation of vmport (default: auto) | |
kvm_shadow_mem=size of KVM shadow MMU in bytes | |
dump-guest-core=on|off include guest memory in a core dump (default=on) | |
mem-merge=on|off controls memory merge support (default: on) | |
igd-passthru=on|off controls IGD GFX passthrough support (default=off) | |
aes-key-wrap=on|off controls support for AES key wrapping (default=on) | |
dea-key-wrap=on|off controls support for DEA key wrapping (default=on) | |
suppress-vmdesc=on|off disables self-describing migration (default=off) | |
nvdimm=on|off controls NVDIMM support (default=off) | |
enforce-config-section=on|off enforce configuration section migration (default=off) | |
-cpu cpu select CPU ('-cpu help' for list) | |
-accel [accel=]accelerator[,thread=single|multi] | |
select accelerator ('-accel help for list') | |
thread=single|multi (enable multi-threaded TCG)-smp [cpus=]n[,maxcpus=cpus][,cores=cores][,threads=threads][,sockets=sockets] | |
set the number of CPUs to 'n' [default=1] | |
maxcpus= maximum number of total cpus, including | |
offline CPUs for hotplug, etc | |
cores= number of CPU cores on one socket | |
threads= number of threads on one CPU core | |
sockets= number of discrete sockets in the system | |
-numa node[,mem=size][,cpus=firstcpu[-lastcpu]][,nodeid=node] | |
-numa node[,memdev=id][,cpus=firstcpu[-lastcpu]][,nodeid=node] | |
-add-fd fd=fd,set=set[,opaque=opaque] | |
Add 'fd' to fd 'set' | |
-set group.id.arg=value | |
set <arg> parameter for item <id> of type <group> | |
i.e. -set drive.$id.file=/path/to/image | |
-global driver.property=value | |
-global driver=driver,property=property,value=value | |
set a global default for a driver property | |
-boot [order=drives][,once=drives][,menu=on|off] | |
[,splash=sp_name][,splash-time=sp_time][,reboot-timeout=rb_time][,strict=on|off] | |
'drives': floppy (a), hard disk (c), CD-ROM (d), network (n) | |
'sp_name': the file's name that would be passed to bios as logo picture, if menu=on | |
'sp_time': the period that splash picture last if menu=on, unit is ms | |
'rb_timeout': the timeout before guest reboot when boot failed, unit is ms | |
-m [size=]megs[,slots=n,maxmem=size] | |
configure guest RAM | |
size: initial amount of guest memory | |
slots: number of hotplug slots (default: none) | |
maxmem: maximum amount of guest memory (default: none) | |
NOTE: Some architectures might enforce a specific granularity | |
-mem-path FILE provide backing storage for guest RAM | |
-mem-prealloc preallocate guest memory (use with -mem-path) | |
-k language use keyboard layout (for example 'fr' for French) | |
-audio-help print list of audio drivers and their options | |
-soundhw c1,... enable audio support | |
and only specified sound cards (comma separated list) | |
use '-soundhw help' to get the list of supported cards | |
use '-soundhw all' to enable all of them | |
-balloon none disable balloon device | |
-balloon virtio[,addr=str] | |
enable virtio balloon device (default) | |
-device driver[,prop[=value][,...]] | |
add device (based on driver) | |
prop=value,... sets driver properties | |
use '-device help' to print all possible drivers | |
use '-device driver,help' to print all possible properties | |
-name string1[,process=string2][,debug-threads=on|off] | |
set the name of the guest | |
string1 sets the window title and string2 the process name (on Linux) | |
When debug-threads is enabled, individual threads are given a separate name (on Linux) | |
NOTE: The thread names are for debugging and not a stable API. | |
-uuid %08x-%04x-%04x-%04x-%012x | |
specify machine UUID | |
: | |
Block device options: | |
-fda/-fdb file use 'file' as floppy disk 0/1 image | |
-hda/-hdb file use 'file' as IDE hard disk 0/1 image | |
-hdc/-hdd file use 'file' as IDE hard disk 2/3 image | |
-cdrom file use 'file' as IDE cdrom image (cdrom is ide1 master) | |
-blockdev [driver=]driver[,node-name=N][,discard=ignore|unmap] | |
[,cache.direct=on|off][,cache.no-flush=on|off] | |
[,read-only=on|off][,detect-zeroes=on|off|unmap] | |
[,driver specific parameters...] | |
configure a block backend | |
-drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i] | |
[,cyls=c,heads=h,secs=s[,trans=t]][,snapshot=on|off] | |
[,cache=writethrough|writeback|none|directsync|unsafe][,format=f] | |
[,serial=s][,addr=A][,rerror=ignore|stop|report] | |
[,werror=ignore|stop|report|enospc][,id=name][,aio=threads|native] | |
[,readonly=on|off][,copy-on-read=on|off] | |
[,discard=ignore|unmap][,detect-zeroes=on|off|unmap] | |
[[,bps=b]|[[,bps_rd=r][,bps_wr=w]]] | |
[[,iops=i]|[[,iops_rd=r][,iops_wr=w]]] | |
[[,bps_max=bm]|[[,bps_rd_max=rm][,bps_wr_max=wm]]] | |
[[,iops_max=im]|[[,iops_rd_max=irm][,iops_wr_max=iwm]]] | |
[[,iops_size=is]] | |
[[,group=g]] | |
use 'file' as a drive image | |
-mtdblock file use 'file' as on-board Flash memory image | |
-sd file use 'file' as SecureDigital card image | |
-pflash file use 'file' as a parallel flash image | |
-snapshot write to temporary files instead of disk image files | |
-hdachs c,h,s[,t] | |
force hard disk 0 physical geometry and the optional BIOS | |
translation (t=none or lba) (usually QEMU can guess them) | |
-fsdev fsdriver,id=id[,path=path,][security_model={mapped-xattr|mapped-file|passthrough|none}] | |
[,writeout=immediate][,readonly][,socket=socket|sock_fd=sock_fd] | |
[[,throttling.bps-total=b]|[[,throttling.bps-read=r][,throttling.bps-write=w]]] | |
[[,throttling.iops-total=i]|[[,throttling.iops-read=r][,throttling.iops-write=w]]] | |
[[,throttling.bps-total-max=bm]|[[,throttling.bps-read-max=rm][,throttling.bps-write-max=wm]]] | |
[[,throttling.iops-total-max=im]|[[,throttling.iops-read-max=irm][,throttling.iops-write-max=iwm]]] | |
[[,throttling.iops-size=is]] | |
-virtfs local,path=path,mount_tag=tag,security_model=[mapped-xattr|mapped-file|passthrough|none] | |
[,writeout=immediate][,readonly][,socket=socket|sock_fd=sock_fd] | |
-virtfs_synth Create synthetic file system image | |
: | |
USB options: | |
-usb enable the USB driver (will be the default soon) | |
-usbdevice name add the host or guest USB device 'name' | |
: | |
Display options: | |
-display sdl[,frame=on|off][,alt_grab=on|off][,ctrl_grab=on|off] | |
[,window_close=on|off][,gl=on|off] | |
-display gtk[,grab_on_hover=on|off][,gl=on|off]| | |
-display vnc=<display>[,<optargs>] | |
-display curses | |
-display none select display type | |
The default display is equivalent to | |
"-vnc localhost:0,to=99,id=default" | |
-nographic disable graphical output and redirect serial I/Os to console | |
-curses shorthand for -display curses | |
-no-frame open SDL window without a frame and window decorations | |
-alt-grab use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt) | |
-ctrl-grab use Right-Ctrl to grab mouse (instead of Ctrl-Alt) | |
-no-quit disable SDL window close capability | |
-sdl shorthand for -display sdl | |
-spice [port=port][,tls-port=secured-port][,x509-dir=<dir>] | |
[,x509-key-file=<file>][,x509-key-password=<file>] | |
[,x509-cert-file=<file>][,x509-cacert-file=<file>] | |
[,x509-dh-key-file=<file>][,addr=addr][,ipv4|ipv6|unix] | |
[,tls-ciphers=<list>] | |
[,tls-channel=[main|display|cursor|inputs|record|playback]] | |
[,plaintext-channel=[main|display|cursor|inputs|record|playback]] | |
[,sasl][,password=<secret>][,disable-ticketing] | |
[,image-compression=[auto_glz|auto_lz|quic|glz|lz|off]] | |
[,jpeg-wan-compression=[auto|never|always]] | |
[,zlib-glz-wan-compression=[auto|never|always]] | |
[,streaming-video=[off|all|filter]][,disable-copy-paste] | |
[,disable-agent-file-xfer][,agent-mouse=[on|off]] | |
[,playback-compression=[on|off]][,seamless-migration=[on|off]] | |
[,gl=[on|off]][,rendernode=<file>] | |
enable spice | |
at least one of {port, tls-port} is mandatory | |
-portrait rotate graphical output 90 deg left (only PXA LCD) | |
-rotate <deg> rotate graphical output some deg left (only PXA LCD) | |
-vga [std|cirrus|vmware|qxl|xenfb|tcx|cg3|virtio|none] | |
select video card type | |
-full-screen start in full screen | |
-vnc <display> shorthand for -display vnc=<display> | |
: | |
Network options: | |
-netdev user,id=str[,ipv4[=on|off]][,net=addr[/mask]][,host=addr] | |
[,ipv6[=on|off]][,ipv6-net=addr[/int]][,ipv6-host=addr] | |
[,restrict=on|off][,hostname=host][,dhcpstart=addr] | |
[,dns=addr][,ipv6-dns=addr][,dnssearch=domain][,tftp=dir] | |
[,bootfile=f][,hostfwd=rule][,guestfwd=rule][,smb=dir[,smbserver=addr]] | |
configure a user mode network backend with ID 'str', | |
its DHCP server and optional services | |
-netdev tap,id=str[,fd=h][,fds=x:y:...:z][,ifname=name][,script=file][,downscript=dfile] | |
[,br=bridge][,helper=helper][,sndbuf=nbytes][,vnet_hdr=on|off][,vhost=on|off] | |
[,vhostfd=h][,vhostfds=x:y:...:z][,vhostforce=on|off][,queues=n] | |
[,poll-us=n] | |
configure a host TAP network backend with ID 'str' | |
connected to a bridge (default=br0) | |
use network scripts 'file' (default=/etc/qemu-ifup) | |
to configure it and 'dfile' (default=/etc/qemu-ifdown) | |
to deconfigure it | |
use '[down]script=no' to disable script execution | |
use network helper 'helper' (default=/usr/local/libexec/qemu-bridge-helper) to | |
configure it | |
use 'fd=h' to connect to an already opened TAP interface | |
use 'fds=x:y:...:z' to connect to already opened multiqueue capable TAP interfaces | |
use 'sndbuf=nbytes' to limit the size of the send buffer (the | |
default is disabled 'sndbuf=0' to enable flow control set 'sndbuf=1048576') | |
use vnet_hdr=off to avoid enabling the IFF_VNET_HDR tap flag | |
use vnet_hdr=on to make the lack of IFF_VNET_HDR support an error condition | |
use vhost=on to enable experimental in kernel accelerator | |
(only has effect for virtio guests which use MSIX) | |
use vhostforce=on to force vhost on for non-MSIX virtio guests | |
use 'vhostfd=h' to connect to an already opened vhost net device | |
use 'vhostfds=x:y:...:z to connect to multiple already opened vhost net devices | |
use 'queues=n' to specify the number of queues to be created for multiqueue TAP | |
use 'poll-us=n' to speciy the maximum number of microseconds that could be | |
spent on busy polling for vhost net | |
-netdev bridge,id=str[,br=bridge][,helper=helper] | |
configure a host TAP network backend with ID 'str' that is | |
connected to a bridge (default=br0) | |
using the program 'helper (default=/usr/local/libexec/qemu-bridge-helper) | |
-netdev l2tpv3,id=str,src=srcaddr,dst=dstaddr[,srcport=srcport][,dstport=dstport] | |
[,rxsession=rxsession],txsession=txsession[,ipv6=on/off][,udp=on/off] | |
[,cookie64=on/off][,counter][,pincounter][,txcookie=txcookie] | |
[,rxcookie=rxcookie][,offset=offset] | |
configure a network backend with ID 'str' connected to | |
an Ethernet over L2TPv3 pseudowire. | |
Linux kernel 3.3+ as well as most routers can talk | |
L2TPv3. This transport allows connecting a VM to a VM, | |
VM to a router and even VM to Host. It is a nearly-universal | |
standard (RFC3391). Note - this implementation uses static | |
pre-configured tunnels (same as the Linux kernel). | |
use 'src=' to specify source address | |
use 'dst=' to specify destination address | |
use 'udp=on' to specify udp encapsulation | |
use 'srcport=' to specify source udp port | |
use 'dstport=' to specify destination udp port | |
use 'ipv6=on' to force v6 | |
L2TPv3 uses cookies to prevent misconfiguration as | |
well as a weak security measure | |
use 'rxcookie=0x012345678' to specify a rxcookie | |
use 'txcookie=0x012345678' to specify a txcookie |