qemu
qemu本身并不是KVM的一部分,就是一个著名的开源虚拟机软件。
qemu是通过纯软件来仿真x86平台处理器的取指、解码和执行,指令并不会在物理平台上直接执行,因此性能比较差,但可以模拟不同架构平台的虚拟机。
qemu的使用
# 安装
apt install qemu-system-x86
# 创建硬盘
qemu-img create disk.img 20G
# 分配物理光驱
qemu-system-x86_64 disk.img -cdrom ***.iso
# 配置CPU
-smp n[,maxcpus=cpus][,cores=cores][,threads=threads][,sockets=sockets]
# n 用于设置客户机中使用的逻辑CPU数量,默认=1;
# maxcpus 用于设置客户机中最大可能被使用的CPU数量,包括热插拔hot-plug加入CPU
# cores 用于设置每个CPU socket上的cores数量,默认=1
# threads用于设置每个CPUcore上的线程数,默认=1
# sockets用于设置客户机中看到的总的CPU socket数量
# 通过-cpu ?参数设定虚拟机中使用的处理器型号
# 例如 qemu-system-x86_64 -smp 2,sockets=2,cores=2,threads=2 -cpu core2duo ...
# 配置内存
qemu -m 1024
qemu -m 2G
网络配置
网络配置较为复杂
-net nic[,vlan=n][,macaddr=mac][,model=type][,name=str][,addr=str][,vectors=v]
-net user[,vlan=n][,name=str][,net=addr[/mask]][,host=addr][,restrict=on|off]
[,hostname=host][,dhcpstart=addr][,dns=addr][,dnssearch=domain][,tftp=dir]
[,bootfile=f][,hostfwd=rule][,guestfwd=rule][,smb=dir[,smbserver=addr]]
-net tap[,vlan=n][,name=str][,fd=h][,fds=x:y:...:z][,ifname=name][,script=file][,downscript=dfile][,helper=helper][,sndbuf=nbytes][,vnet_hdr=on|off][,vhost=on|off][,vhostfd=h][,vhostfds=x:y:...:z][,vhostforce=on|off][,queues=n]
-net bridge[,vlan=n][,name=str][,br=bridge][,helper=helper]
//......
与其他虚拟机类似,支持4种网卡类型:
- 桥接
基于网桥的虚拟网卡,在主机的网卡上建立一个虚拟网桥,然后再虚拟网桥上创建虚拟的网卡,把创建好的虚拟网卡分配给qemu客户机使用。
# apt-get install bridge-utils
# brctl addbr br0 # 添加bridge br0
# brctl addif br0 eth0 # 将br0 与eth0 绑定
# brctl stp br0 on # 将br0设置为STP协议
# ifconfig eth0 0 # 将eth0 的IP设置为0,因为eth0已经工作在链路层,不需要IP
# dhclient br0 # 设置br0参数
# route # 查看路由表
# 然后将虚拟机网卡tap分配给客户机
qemu-system-x86_64 -hda disk.img -m 2G -net nic -net tap,ifname=tap1,script=/etc/qemu-ifup,downscript=no
如果客户机网卡设置成dhcp模式的,会发现客户机的IP地址与主机的IP地址在同一个网段上。
- NAT
- 内部网络
- 直接分配宿主机的物理网卡
qemu参数
参数 | 说明 |
---|---|
-M vexpress-a9 | 指定要仿真的开发板:vexpress-a9 |
-m 512M | 指定DRAM内存大小为512MB |
-cpu cortex-a9 | 指定CPU架构 |
-smp n | CPU的个数,不设置的话,默认是1 |
-kernel ./zImage | 要运行的内核镜像 |
-dtb ./vexpress-vap-ca9.dtb | 要加载的设备树文件 |
-append cmdline | 设置Linux内核命令行、启动参数 |
-initrd file | 使用file文件作为初始化ram disk |
-nographic | 非图形化启动,使用串口作为控制台 |
-sd rootfs.ext3 | 使用rootfs.ext3作为SD卡镜像文件 |
-net nic | 创建一个网卡 |
-net nic -net tap | 将开发板网卡和主机网卡建立桥接(Bridge) |
re
https://www.zhaixue.cc/qemu/qemu-intro.html