准备工作
快速下载固件与软件
下载地址:
UEFI固件ovmf.fd下载
https://github.com/clearlinux/common/blob/master/OVMF.fd
OpenWRT固件下载
QEMU 64 安装程序下载
https://qemu.weilnetz.de/w64/qemu-w64-setup-20250210.exe
下载不到的话,看下面详细介绍找到下载网页去下载。
详细介绍
https://openwrt.org/docs/guide-user/virtualization/qemu
QEMU 下载与安装
QEMU(Quick EMUlator)是一个开源的虚拟化软件,它可以模拟多个硬件平台,并在其上运行各种操作系统。
下载页面: https://www.qemu.org/download/
OpenWRT固件
前面下载过的,可以跳过,如果有其他版本可以从这里下载 https://firmware-selector.openwrt.org/?version=24.10.0&target=x86%2Fgeneric&id=generic
搜索x86,选择通用generic x86 选择下载:COMBINED-EFI (EXT4) 下载的是openwrt-24.10.0-x86-generic-generic-ext4-combined-efi.img.gz,解压后能得到 openwrt-24.10.0-x86-generic-generic-ext4-combined-efi.img
UEFI的固件ovmf.fd
ovmf.fd 是 Open Virtual Machine Firmware (OVMF) 的固件文件,它是一个实现了 UEFI (Unified Extensible Firmware Interface) 的开源固件,通常用于在 QEMU 中模拟 UEFI 启动环境。
ovmf.fd 文件:
https://github.com/clearlinux/common/blob/master/OVMF.fd
如何使用
硬件准备
开启虚拟化硬件加速
第一步:启用BIOS中的Intel VT-x
检查虚拟化支持: 确保你的 BIOS/UEFI 中启用了 Intel VT-x 或 AMD-V 虚拟化技术。
第二步:启用 WHPX
WHPX(Windows Hypervisor Platform)是一个硬件加速的虚拟化技术,需要在 Windows 上启用 Hyper-V。
确保在 Windows 的“控制面板”>“程序和功能”>“启用或关闭 Windows 功能”中启用了“Hyper-V”选项。
数据准备
- 建立文件夹
D:\openwrt\vms\data 文件夹
- 复制OpenWRT固件
将openwrt-24.10.0-x86-generic-generic-ext4-combined-efi.img 到D:\openwrt\ 文件夹
- 复制UEFI固件
将UEFI固件 ovmf.fd复制到D:/openwrt/vms/data/
启动QEMU
启动脚本
新建BAT脚本:
D:\openwrt\run_qemu.bat
如果你的电脑不支持硬件虚拟化加速或者懒得设置,就用禁用加速版本
如果你不想用我设置的路径,记得bios路径是相对路径,不然会报错。
带虚拟机硬件加速版本:
chcp 65001
qemu-system-x86_64.exe -L "D:\openwrt\vmos\data" -cpu "Penryn,vendor=GenuineIntel,+ssse3,+sse4.2" -M "q35,accel=whpx,kernel-irqchip=off" -m 1G -bios "vms/data/ovmf.fd" -netdev "user,id=hn0,hostfwd=tcp::50022-:22,hostfwd=tcp::80-:80,hostfwd=tcp::443-:443" -device "e1000,netdev=hn0,id=nic1" -debugcon "file:debug.log" -global "isa-debugcon.iobase=0x402" -hda openwrt-24.10.0-x86-generic-generic-ext4-combined-efi.img,format=raw
禁用加速版本:
chcp 65001
qemu-system-x86_64.exe -L "D:\openwrt\vmos\data" -cpu "Penryn,vendor=GenuineIntel,+ssse3,+sse4.2" -M "q35,accel=tcg,kernel-irqchip=off" -m 1G -bios "vms/data/ovmf.fd" -netdev "user,id=hn0,hostfwd=tcp::50022-:22,hostfwd=tcp::8080-:80,hostfwd=tcp::443-:443" -device "e1000,netdev=hn0,id=nic1" -debugcon "file:debug.log" -global "isa-debugcon.iobase=0x402" -drive file=openwrt-24.10.0-x86-generic-generic-ext4-combined-efi.img,format=raw
参数说明
QEMU 命令解析
这个 qemu-system-x86_64.exe
命令用于在 Windows 上通过 QEMU 运行 OpenWRT 虚拟机。
以下是每个参数的详细解释:
qemu-system-x86_64.exe
指定使用 QEMU 的 64 位 x86 架构模拟器。
-L "D:\openwrt\vmos\data"
指定 QEMU 的系统 BIOS 和其他固件文件的路径。在这个例子中,指定的是 D:\openwrt\vmos\data
目录。
-cpu "Penryn,vendor=GenuineIntel,+ssse3,+sse4.2"
指定使用的 CPU 模型是 Penryn
,并启用了 SSSE3
和 SSE4.2
指令集。Penryn
是英特尔的一个微架构,这里通过 vendor=GenuineIntel
模拟了一个真实的 Intel 处理器。
-M "q35,accel=whpx,kernel-irqchip=off"
指定使用 q35
系统模型,它是一个现代的主板模拟模型,并启用硬件加速(accel=whpx
)以提高性能。kernel-irqchip=off
禁用了内核中的 IRQ (中断控制器) 芯片,以避免某些硬件兼容问题。
-m 1G
为虚拟机分配 1GB 的内存。
-bios "data\ovmf.fd"
指定使用 OVMF (Open Virtual Machine Firmware) 作为虚拟机的 BIOS,通常用于支持 UEFI 启动。
-netdev "user,id=hn0,hostfwd=tcp::50022-:22,hostfwd=tcp::80-:80,hostfwd=tcp::443-:443"
user
网络模式,表示 QEMU 使用用户模式网络。id=hn0
:为网络设备指定一个 ID。hostfwd=tcp::50022-:22
:将主机的端口 50022 转发到虚拟机的 SSH 服务(端口 22)。hostfwd=tcp::80-:80
:将主机的端口 80 转发到虚拟机的 HTTP 服务(端口 80),这个端口开着设置,也可以设置成8080 ,有时候80会被其他程序占用导致无法启动。hostfwd=tcp::443-:443
:将主机的端口 443 转发到虚拟机的 HTTPS 服务(端口 443)。
-device "e1000,netdev=hn0,id=nic1"
添加一个虚拟的 e1000
网络适配器,连接到之前定义的 hn0
网络设备,并为其指定 ID nic1
。
-debugcon "file:debug.log"
启用调试控制台输出,将调试信息写入到 debug.log
文件中。
-global "isa-debugcon.iobase=0x402"
为调试控制台指定 I/O 基地址,这里设置为 0x402
。
`-hda openwrt-24.10.0-x86-generic-generic-ext4-combined-efi.img
指定启动盘(虚拟硬盘镜像),这里使用的是 OpenWRT 24.10.0 的 x86-64 版本,支持 EFI 启动的硬盘镜像。
测试
管理页面
浏览器访问
应该就能进入管理界面
默认用户是root 密码无
SSH远程登录
用putty远程登录到本机的50022端口,ip地址127.0.0.1
总结
这个命令启动了一个 OpenWRT 虚拟机,配置了 CPU、内存、网络、调试等多个参数,并通过端口转发实现与主机的通信。具体来说,它将主机的端口 50022、80 和 443 分别转发到虚拟机的 SSH、HTTP 和 HTTPS 服务,方便访问虚拟机的网络服务。