為虛擬機配置vhost-net網卡,方便調試


    很多時候為了方便自己手動編譯和調試虛擬平台,我們需要自己編譯qemu等組件並給虛擬機配置網卡等。其中稍微麻煩點的就是配置網卡這塊,目前最方便的就是給虛擬機配置一個vhost-net網卡了。

    vhost-net網卡的后端默認使用linux的虛擬網橋tap設備,qemu和虛擬機內部使用virtio-net虛擬網卡。

    步驟1: 創建linux網橋和tap設備(對於fedora,centos,redhat等默認有創建好的虛擬網卡)

    brctl addbr virbr0

    brctl stp virbr0 on

    ip tuntap add name virbr0-nic mode tap

    ip link set dev virbr0-nic up

   步驟二:將host網卡添加到virbr0的一個port,並把ip配置給virbr0

   brctl addif virbr0 eth0

   brctl addif virbr0 virbr0-nic

   dhclient virbr0

   步驟三:用命令行起一個虛擬機

   sudo x86_64-softmmu/qemu-system-x86_64 --enable-kvm -m 5120 -drive file=/home/fang/vm/centos.img,if=virtio -net nic,model=virtio -net tap,ifname=virbr0-nic,script=no -vnc :0  

   如果使用xml

    <interface type='bridge'>

          <mac address='fa:16:3e:b6:59:73'/>

          <source bridge='br0'/>

          <target dev='tap0'/>

          <model type='virtio'/>

          <driver name='vhost' queues='4'/>

   </interface>

   如果要起一個 e1000網卡的虛擬機:

   x86_64-softmmu/qemu-system-x86_64 \

    --enable-kvm -m 4096 \

    -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x4 -device usb-bt-dongle \

    /mnt/sdb/fangying/vm/pvc_ubuntu_16.10_64_server.qcow2 \

   -vnc :88 -smp 4 -device e1000,netdev=tapnet -netdev tap,id=tapnet,ifname=virbr0-nic,script=no

   如果要從cdrom安裝系統

   qemu-kvm --enable-kvm -boot d -cdrom CentOS-7-x86_64-Minimal-1611.iso -m 4096 -drive driver=qcow2,file=centos7.qcow2

 

vga vbe 

http://cvs.savannah.nongnu.org/viewvc/*checkout*/vgabios/vgabios/vbe_display_api.txt?revision=1.14

 

安裝win10 虛擬機,配置virtio-scsi磁盤

qemu-kvm -drive if=none,id=hd,file=./win10.qcow2 -device virtio-scsi-pci,id=scsi --enable-kvm -device scsi-hd,drive=hd -cdrom /mnt/os/cn_windows_10_multiple_editions_version_1703_updated_march_2017_x64_dvd_10194190.iso -fda virtio-win-0.1.141_amd64.vfd  -boot d -m 8192 -smp 4

 

/root/nemu/build-x86_64_virt/x86_64_virt-softmmu/qemu-system-x86_64_virt -bios ./OVMF.fd \
-machine q35,accel=kvm,kernel_irqchip -cpu host -m 4096,slots=4,maxmem=16950M -smp 4 \
-device virtio-serial-pci,id=virtio-serial0 -device virtconsole,chardev=charconsole0,id=console0 -chardev stdio,id=charconsole0 \
-device sysbus-debugcon,iobase=0x402,chardev=debugcon -chardev file,path=/tmp/debug-log,id=debugcon \
-device sysbus-debugcon,iobase=0x3f8,chardev=serialcon -chardev file,path=/tmp/serial-log,id=serialcon \
-device virtio-blk-pci,drive=disk -drive if=none,id=disk,file=diskvm.img \
-device virtio-blk-pci,drive=iso \
-drive if=none,id=iso,file=CentOS-7-x86_64-DVD-1708.iso \
-netdev user,id=mynet0,hostfwd=tcp::2222-:22,hostname=nemuvm -device virtio-net-pci,netdev=mynet0

 

https://github.com/tianocore/tianocore.github.io/wiki/How-to-build-OVMF

 

/home/fang/build-x86_64_virt/x86_64_virt-softmmu/qemu-system-x86_64_virt -bios ./OVMF.fd \
-machine virt,accel=kvm,kernel_irqchip \
-cpu host \
-m 4096,slots=4,maxmem=16950M \
-smp 4 \
-device virtio-serial-pci,id=virtio-serial0 \
-device virtconsole,chardev=charconsole0,id=console0 \
-chardev stdio,id=charconsole0 \
-device sysbus-debugcon,iobase=0x402,chardev=debugcon \
-chardev file,path=/tmp/debug-log,id=debugcon \
-device sysbus-debugcon,iobase=0x3f8,chardev=serialcon \
-chardev file,path=/tmp/serial-log,id=serialcon \
-device virtio-blk-pci,drive=disk \
-drive if=none,id=disk,file=diskvm.img \
-netdev tap,id=tap0,ifname=virbr0-nic,script=no \
-device virtio-net-pci,netdev=tap0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM