调试笔记-系列文章目录
调试笔记-20240525-Windows-配置 QEMU/x86_64 运行 OpenWrt-23.05 发行版并搭建 WordPress 博客网站
文章目录
前言
本文记录在 Windows 环境下使用 QEMU 运行 OpenWrt-23.05 发行版本的方法。
实验使用的电脑如下:
CPU:
Intel Core i5 8265U
操作系统:
Microsoft Windows 10 Professional (x64), Version 22H2, Build 19045.4412
一、调试环境
操作系统:Windows 10 专业版
操作系统详细信息如下:
Microsoft Windows 10 Professional (x64), Version 22H2, Build 19045.4412
调试环境
- Windows 系统已安装 QEMU 并成功运行 OpenWrt 发行版
参考【安装笔记-20240520-Windows-在 QEMU 中尝试运行 OpenWRT】
调试目标
在 Windows/QEMU 中运行 OpenWrt-23.05 发行版本。
说明:按照【调试笔记-20240521-Linux-编译 QEMU/x86_64 可运行的 OpenWrt 固件】编译好 OpenWrt 固件后,我们尝试配置好 QEMU ,使其完整运行 OpenWrt 各项功能,包括:
1、能上网
2、可以访问 OpenWrt 配置界面
3、开启对外的 Web 服务功能
4、提供个人博客功能
5、更多……
二、调试步骤
开启 Windows 虚拟化功能 WHPX
- 在 “启用或关闭 Windows 功能” 中勾选 “Windows 虚拟机监控程序平台"
配置上网功能
网络拓扑结构
- OpenWrt eth0: LAN
- OpenWrt 主机配置为客户设备模式,挂在 QEMU 的 SLIRP 网络中
- OpenWrt 主机 LAN 网卡开启 DHCP-client 模式,自动获取 IP 地址
- QEMU 网络设备的设置中增加 Windows 主机端口转发,将 Windows 主机的 50022 端口转发到 QEMU 访客系统(即 OpenWrt 主机)的 22 端口,从而实现从 Windows 主机通过 SSH 连接访问 OpenWrt 主机系统的功能
接下来我们一步一步实现前述功能需求。
配置 OpenWrt 远程连接
1、设置 QEMU 启动选项,输入以下命令:
..\qemu\8.2.0\qemu-system-x86_64.exe -L "D:\qkd-app\vmos\data" -cpu "Penryn,vendor=GenuineIntel,+ssse3,+sse4.2" -M "q35,accel=whpx,kernel-irqchip=off" -m 4G -bios "data\ovmf.fd" -netdev "user,id=hn0,hostfwd=tcp::50022-:22" -device "e1000,netdev=hn0,id=nic1" -debugcon "file:debug.log" -global "isa-debugcon.iobase=0x402" -hda openwrt-23.05.3-x86-64-generic-ext4-combined-efi.img
2、配置 OpenWrt 主机为客户设备模式,并开启 DHCP-client 功能
在 OpenWrt 主机终端输入以下命令:
uci set network.lan.proto="dhcp"
uci commit network
service network restart
然后,输入以下命令检查 OpenWrt 主机是否正确获取到 QEMU SiLRP 网络 DHCP 服务器分配的 IP 地址
ip addr
从上图可见,OpenWrt 主机已经成功获得 10.0.2.15 的 IP 地址
3、从 Windows 主机通过 SSH 连接 OpenWrt 访客主机
主机:localhost
端口:50022
成功登录 OpenWrt 主机后,界面如下:
4、测试网络联通性
在 PuTTY 窗口输入以下命令:
ping www.baidu.com
上图可见,OpenWrt 访客主机能访问到 www.baidu.com ,网络通畅。
配置 LuCI 管理界面
5、修改管理页面 uhttpd 服务器的监听端口,输入以下命令:
uci set uhttpd.main.listen_http='0.0.0.0:50080'
uci add_list uhttpd.main.listen_http='[::]:50080'
uci set uhttpd.main.listen_https='0.0.0.0:50443'
uci add_list uhttpd.main.listen_https='[::]:50443'
uci co