openwrt 虚拟机直通

路由Openwrt设置

硬件背景

工控主机
CPU:Intel® N100
网卡: Intel Corporation Ethernet Controller I226-V

软件背景

1、ubuntu 24.04
2、qemu kvm
3、openwrt 镜像

需求

使用两张网卡直通方式,给ubuntu宿主机上安装虚拟机openwrt,需要使用vfio技术进行直通提高效率。

vifo配置

配置iOMMU

vim /etc/default/grub

添加如下:

GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on"
grub-mkconfig -o /boot/efi/EFI/ubuntu/grub.cfg 

重启电脑

配置vfio网卡

lspci查看网卡pci号

lspci
-> 01:00.0 Ethernet controller: Intel Corporation Ethernet Controller I226-V (rev 04)
   02:00.0 Ethernet controller: Intel Corporation Ethernet Controller I226-V (rev 04)
   03:00.0 Ethernet controller: Intel Corporation Ethernet Controller I226-V (rev 04)
   04:00.0 Ethernet controller: Intel Corporation Ethernet Controller I226-V (rev 04)

网卡添加到vfio

sudo modprobe vfio
sudo modprobe vfio-pci
echo "0000:02:00.0" | sudo tee /sys/bus/pci/devices/0000:02:00.0/driver/unbind
echo "0000:03:00.0" | sudo tee /sys/bus/pci/devices/0000:03:00.0/driver/unbind
echo "vfio-pci" | sudo tee /sys/bus/pci/devices/0000:02:00.0/driver_override
echo "vfio-pci" | sudo tee /sys/bus/pci/devices/0000:03:00.0/driver_override
echo "0000:02:00.0" | sudo tee /sys/bus/pci/drivers/vfio-pci/bind
echo "0000:03:00.0" | sudo tee /sys/bus/pci/drivers/vfio-pci/bind

可以看到设备被绑定上目标驱动

ls /dev/vfio

制作openwrt虚拟机

为openwrt系统制作磁盘

qemu-img convert -p -f raw -O qcow2 openwrt-23.05.2-x86-generic-generic-ext4-combined.img openwrt-23.05.2-x86-generic-generic-ext4-combined.qcow2  
qemu-img resize -f raw openwrt-*.img 20G #扩容到20 G。

下载驱动

igc驱动适用于网卡 I226-V

virsh list可以查看pci设备编号

virsh nodedev-list --tree |grep pci

可以查看具体pci设备的domain bus slot 字段填写到xml中

virsh nodedev-dumpxml pci_0000_03_00_0

编写XML openwrt.xml

<domain type='kvm'>
  <name>my_virtual_machine</name>
  <memory unit='MiB'>512</memory>
  <currentMemory unit='MiB'>512</currentMemory>
  <vcpu>2</vcpu>
  <os>
    <type arch='x86_64' machine='pc-i440fx-trusty'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='磁盘文件路径'/>
      <target dev='vda' bus='virtio'/>
    </disk>
  

  <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x02' solt='0x00' function='0x0'/>
      </source>
  </hostdev>
  
   <hostdev mode='subsystem' type='pci' managed='yes'>
	      <driver name='vfio'/>
	      <source>
	        <address domain='0x0000' bus='0x03' solt='0x00' function='0x0'/>
	      </source>
  </hostdev>
  
    <controller type='usb' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' solt='0x02' function='0x0'/>
    </controller><input type='mouse' bus='ps2'/>

    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' solt='0x01' function='0x0'/>
    </controller>

    <graphics type='vnc' port='5970' autoport='no' listen='0.0.0.0'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>

  </devices>
</domain>

拷贝文件到虚拟机

virt-copy-in  kmod-igc_5.15.137-1_i386_pentium4.ipk  -a openwrt-23.05.2-x86-generic-generic-ext4-combined.qcow2 /

在虚拟机中安装该驱动

opkg install  openwrt-23.05.2-x86-generic-generic-ext4-combined.qcow2

通过virsh 启动虚拟机

virsh create openwrt.xml

未完待续。。。。。

参考

【1】https://blog.youkuaiyun.com/hsyxxyg/article/details/136638643
【2】https://blog.youkuaiyun.com/jcf147/article/details/133351133

### Debian 与 OpenWRT 的区别及其在路由器固件中的应用 #### 特性和用途差异 Debian 是一种广泛使用的 Linux 发行版,适用于多种计算环境,从服务器到桌面系统。其软件包管理系统强大且稳定,拥有庞大的社区支持和丰富的应用程序库[^1]。 相比之下,OpenWrt 则专注于嵌入式设备特别是路由器的应用场景。作为一种高度可定制化的操作系统,它允许用户轻松修改内核模块和服务配置来满足特定需求。由于体积小巧灵活,在资源有限的小型硬件上表现尤为出色[^2]。 #### 安装方式对比 对于希望构建具备网卡直通功能的 OpenWrt 虚拟机而言,可以在基于 Debian 的环境中迅速完成部署工作。通过创建新的目录结构并将官方仓库克隆至本地即可获取最新版本源码[^3]。 然而当尝试更新或安装额外工具时可能会遇到连接失败的问题,这表明网络设置可能存在障碍需要进一步排查解决方法[^4]。 #### 使用案例分析 - **家庭/小型办公室网络管理** - 对于寻求更高级别控制权的家庭用户或是SOHO(Small Office Home Office)来说,采用 OpenWrt 可以为他们提供一个开放平台来进行个性化调整优化上网体验。 - **企业级解决方案** - 大型企业往往依赖像 Debian 这样的成熟发行版为其 IT 基础设施服务。它们能够承载复杂的企业级应用,并确保长时间稳定运行不受干扰。 综上所述,虽然两者都属于Linux生态系统的一部分,但在具体应用场景下各有侧重:如果目标是打造高性能低成本的家用或商用无线接入点,则应优先考虑 OpenWrt;而对于那些追求全面可靠性的大型项目开发则更适合选用 Debian 平台。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值