qemu启动虚拟机的几种方式

验证一些平台无关的特性的时候,如果用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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容