QEMU 7.0运行Windows 95时用户模式网络无法正常工作
问题根因
核心问题是你启动参数中指定的ne2k_isa(ISA总线NE2000网卡)在QEMU 7.0中的默认硬件资源配置,和Windows 95自带NE2000驱动的默认预设不匹配:
- QEMU 7.0的ne2k_isa网卡默认IO基址为
0x300、IRQ中断号为9,而Windows 95自带的NE2000 ISA驱动默认仅识别IRQ3的网卡,且ISA设备不支持即插即用自动枚举资源,中断号不匹配时驱动完全无法收发包,不管是DHCP请求还是静态IP下的ICMP报文都发不出去,自然拿不到地址、ping不通网关。 - 你的命令中同时加载了sb16声卡和pcspk设备,二者默认占用的资源不会和网卡冲突,不是故障原因。
修复步骤
1. 修正QEMU启动参数,明确指定网卡资源
把启动命令中的-nic参数替换为明确指定IO基址、IRQ的版本,优先选IRQ3(和Win95驱动默认值对齐,减少配置量),修改后的完整启动命令如下:
qemu-system-i386 -nic user,model=ne2k_isa,iobase=0x300,irq=3 -hda win95.qcow2 -device sb16 -m 256 -cpu pentium -vga cirrus -soundhw pcspk
如果后续遇到IRQ3被COM2串口占用的情况,可以把irq值改成5,后续在Win95驱动配置里同步改成IRQ5即可,不要用9/10/11这类Windows 95不会默认分配给ISA网卡的中断号。
2. 在Windows 95中手动匹配网卡驱动资源
- 启动进入Windows 95桌面后,右键点击「网上邻居」选择「属性」,在已安装组件列表中找到「NE2000兼容网卡」,点击「属性」按钮
- 切换到「资源」标签页,取消勾选「使用自动设置」
- 将「中断请求(IRQ)」的值修改为和启动参数中一致的数值(按上面的命令就是3),确认IO端口范围为
0300-031F - 如果提示资源冲突,打开设备管理器,禁用占用对应IRQ的COM串口等闲置设备,确认资源无冲突后重启虚拟机。
3. 连通性验证
重启后先测试DHCP是否正常:正常情况下网卡会自动获取到10.0.2.15的IP地址、网关为10.0.2.2、DNS为10.0.2.3。如果DHCP依然失败,手动配置静态IP参数即可,配置完成后ping 10.0.2.2网关,能通则说明用户模式网络工作正常。
免调参备选方案
如果不想手动调整ISA网卡的资源配置,可以直接把网卡模型换成PCI总线的NE2000,PCI设备支持即插即用,Windows 95自带对应驱动,进系统后会自动识别安装,不需要手动改资源。只需要把启动参数中的-nic部分替换成如下内容即可:
-nic user,model=ne2k_pci
排查注意事项
- 不要在Windows 95虚拟机上使用
rtl8139网卡模型,Windows 95默认没有自带该网卡的驱动,手动安装第三方驱动很容易出现兼容性问题 - 如果调整参数后依然不通,先查看设备管理器中网卡项是否有黄色感叹号,有感叹号说明资源配置依然不匹配,优先核对IRQ和IO地址是否和QEMU启动参数完全一致
- 若开启了KVM硬件加速后出现异常,可以暂时去掉
-enable-kvm参数测试,Windows 95对新的硬件虚拟化特性兼容性较差,偶尔会出现外设异常的问题。
内容的提问来源于stack exchange,提问作者markf78
相关产品推荐
相关产品推荐

