很多时候为了方便自己手动编译和调试虚拟平台,我们需要自己编译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

为虚拟机配置vhost-net网卡,方便调试的更多相关文章

  1. 【Linux】 CentOS7 虚拟机配置

    Linux虚拟机配置 从去年开始实习开始,公司电脑换了两个,自己的电脑也换了一个,每换一个新电脑,总免不了要去装一个Linux的虚拟机作为试验用.但是每次新装一个机器总是会遇到各种各样的问题让我用的不 ...

  2. TVM虚拟机配置

    TVM虚拟机配置 目录 3.1. Supported Guest Operating Systems 3.1.1. Mac OS X Guests 3.1.2. 64-bit Guests 3.2. ...

  3. 基于VMware为CentOS 6.5配置两个网卡

    为CentOS 6.5配置两块网卡,一块是eth0,一块是eth1,下面以master为例 1.选择“master”-->“编辑虚拟机设置”,如下所示 2.单击“添加”,如下 3.选择“网络适配 ...

  4. nginx虚拟机配置(支持php)

    由于本人水平有限,以下记录仅作参考. 下面贴出我的一份正常运行的nginx服务器虚拟机配置./usr/local/nginx/conf/vhost/www.xsll.com.conf server { ...

  5. VMware虚拟机配置内网电脑能访问

    关键字:内网访问虚拟机.内网访问Linux虚拟机.虚拟机访问外部网络 1.vmware虚拟机网络设置为桥接模式 2.虚拟机配置iP地址,以linux系统为示例. 勾选自动连接,选择手动配置ip,然后配 ...

  6. 安装linux虚拟机配置静态ip(桥接模式)

    1.centOs7.VMware Workstation14 2.常规新建虚拟机操作后,来到选择连接模式: 这里选择桥接模式,复制物理网络连接状态(就是把实际的主机网卡信息拷贝一份,让虚拟机也有一份和 ...

  7. VMware虚拟机配置

    VMware虚拟机配置 背景 在做学习Linux时经常会在win环境下安装虚拟机,这其中涉及到一些细节操作,需要对虚拟机工作模式加以理解. 本文在学习hadoop分布式环境搭建时写作. 1.虚拟交换机 ...

  8. centos7 && centos6.5部KVM使用NAT联网并为虚拟机配置firewalld && iptables防火墙端口转发

    centos7 && centos6.5 部KVM使用NAT联网并为虚拟机配置firewalld && iptables防火墙端口转发 一.准备工作: 1: 检查kvm ...

  9. Hyper-V虚拟机配置内部网络固定IP 并且连接外网

    2019/10/23 Hyper-V CentOS7 摘要:Hyper-V中的虚拟机CentOS7能固定IP并且连接外网 保证宿主机的Xshell始终只用同一个IP连接到该虚拟机 新建内部网络虚拟交换 ...

随机推荐

  1. [小问题笔记(十)] SQL Server 里 float 转 varchar等字符类型 不使用科学计数法

    需要转换两次, 试了一下 float 转 bigint 转 varchar 溢出了... 后来用  float 转 decimal(38,0) 转 varchar 就成功了~ ,)) )) 另吐槽一下 ...

  2. 面试笔试总结(一)之 C++基础

    C++ 1.智能指针 内存管理 垃圾回收 指针问题 资源管理(内存就是资源) 可以通过引用计数的机制...实现内存回收,不要让内存泄漏. 涉及到内存的泄露的问题: 当创建一个对象的时候(new)而在对 ...

  3. brew 与 nvm

    brew  与 nvm 是两个管理软件工具 今天更新了brew结果brew下安装的软件都找不着了.得重新安装,据说brew已经不再更新了.应该是通过github的吧. 结果得重装node与npm,这两 ...

  4. cygwin下安装软件

    cygwin下安装软件cygwin工具安装新的软件和常见的命令windows8.1下安装Cygwin并通过apt-cyg安装软件包Cygwin利用apt-cyg安装gcc.g++.make和gdb 首 ...

  5. 基于事件的 JavaScript 编程:异步与同

    JavaScript的优势之一是其如何处理异步代码.异步代码会被放入一个事件队列,等到所有其他代码执行后才进行,而不会阻塞线程.然而,对于初学者来说,书写异步代码可能会比较困难.而在这篇文章里,我将会 ...

  6. 手机端页面自适应解决方案—rem布局(进阶版,附源码示例)

    转自:https://segmentfault.com/a/1190000007350680 一年前笔者写了一篇 <手机端页面自适应解决方案—rem布局>,意外受到很多朋友的关注和喜欢.但 ...

  7. Eclemma的安装

    和TestNG安装一致 Help -->Install New Software -->  Add Name: Eclemma Location:http://update.eclemma ...

  8. Linux命令详解-date

    在linux环境中,不管是编程还是其他维护,时间是必不可少的,也经常会用到时间的运算,熟练运用date命令来表示自己想要表示的时间,肯定可以给自己的工作带来诸多方便. 1.命令格式:   date [ ...

  9. 转:MyEclipse安装Eclipse Memory Analyzer插件,并进行错误文件分析流程

    转自 http://www.cnblogs.com/nb44c/p/5218880.html 1.先安装MAT插件 Memory Analyzer 插件下载地址:http://www.eclipse. ...

  10. table 转实体

    public class Table2Entity<T> where T : class,new() { public static List<T> GetEntitys(Da ...