通过QEMU运行OpenWRT

0 评论
/
37 阅读
/
6447 字
28 2025-02

准备工作

快速下载固件与软件

下载地址:

UEFI固件ovmf.fd下载

https://github.com/clearlinux/common/blob/master/OVMF.fd

OpenWRT固件下载

https://downloads.openwrt.org/releases/24.10.0/targets/x86/generic/openwrt-24.10.0-x86-generic-generic-ext4-combined-efi.img.gz

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

Image

搜索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”选项。

Image

Image

数据准备

  • 建立文件夹

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,并启用了 SSSE3SSE4.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 启动的硬盘镜像。

测试

管理页面

浏览器访问

http://localhost

应该就能进入管理界面

默认用户是root 密码无

SSH远程登录

用putty远程登录到本机的50022端口,ip地址127.0.0.1

总结

这个命令启动了一个 OpenWRT 虚拟机,配置了 CPU、内存、网络、调试等多个参数,并通过端口转发实现与主机的通信。具体来说,它将主机的端口 50022、80 和 443 分别转发到虚拟机的 SSH、HTTP 和 HTTPS 服务,方便访问虚拟机的网络服务。

标签:
    暂无数据