验证一些平台无关的特性的时候,如果用VM代替真实的物理机无疑更高效。下面列举一些Qemu启动VM的方式,顺便澄清一些概念。
本文验证需要的环境:
1. ubuntu 18.04
2. 安装软件:
a) sudo apt-get install qemu-kvm libvirt-bin
b) vncviewer to access VM via X window(optional)
https://www.realvnc.com/en/connect/download/viewer/linux/
3. VM镜像
xx.iso 或者 xx.img
方式1
方式1是用libvirt以xml方式启动VM,VM所有的配置都放在xml文件中,优点是不用输入复杂的参数。
如果想用qcow2格式的启动镜像,可以用如下命令转换img。
qemu-img convert -f raw -O qcow2 xx.img xx.qcow2
创建test.xml,内容如下。注意boot dev如果是cdrom则是iso启动,如果是hd则是硬盘启动。
<domain type='kvm'> <name>test</name> <memory>1048576</memory> <currentMemory>1048576</currentMemory> <vcpu>2</vcpu> <os> <type arch='x86_64' machine='pc'>hvm</type> <boot dev='hd'/> </os> <features> <acpi/> <apic/> <pae/> </features> <clock offset='localtime'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> <emulator>/usr/bin/qemu-system-x86_64</emulator> <video> <model type='vga' vram='16384' heads='1'> </model> <driver name='qemu'/> </video> <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/home/xx/VM/xx.qcow2'/> <target dev='hda' bus='ide'/> </disk> <interface type='bridge'> <source bridge='virbr0'/> <mac address="00:16:3e:5d:aa:a6"/> <model type="e1000" /> </interface> <input type='mouse' bus='ps2'/> <graphics type='vnc' port='-1' autoport='yes' listen = '0.0.0.0' keymap='en-us'/> </devices></domain>
然后创建启动虚拟机
sudo virsh create test.xml
方式2
命令行方式
最简方式,这种方式启动后,需要vncview连接VM
sudo qemu-system-x86_64 -nographic -drive format=raw,file=usb.img
用bzImage和rootfs启动
sudo qemu-system-x86_64 -enable-kvm -kernel ./bzImage -hda ./rootfs.ext3 -m 2048 -net user -nographic -append "console=ttyS0,115200 ip=dhcp root=/dev/sda init=/sbin/init clock=pit oprofile.timer=1 UMA=1"
启用网卡,启动成功后可以在host上ifconfig查看到tap0设备,sudo brctl addif virbr0 tap0将tap0加入virbr0网桥。
#e1000 as front-end connect to backend of type tap, backend with id hn2. sudo qemu-system-x86_64 -nographic -netdev tap,id=hn2 -device e1000,netdev=hn2 -drive format=raw,file=xx.img
参考:libvirt