Termux 中使用 QEMU 运行 OpenWrt 笔记
1. 安装 QEMU 及相关工具
# 更新源
apt-get update
# 查看 QEMU 可用包(可选)
apt search qemu
# 安装 QEMU 工具包
apt install qemu-utils
# 安装 aarch64 架构模拟(适合 ARM 设备,性能损耗较低)
apt install qemu-system-aarch64-headless
# 安装 x86_64 架构模拟
apt install qemu-system-x86-64-headless
2. ARM 架构运行 OpenWrt
2.1 下载固件与内核
# 下载 ext4 格式根文件系统
wget https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/19.07.8/targets/armvirt/64/openwrt-19.07.8-armvirt-64-root.ext4.gz
# 解压
gzip -d openwrt-19.07.8-armvirt-64-root.ext4.gz
# 下载内核镜像
wget https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/19.07.8/targets/armvirt/64/openwrt-19.07.8-armvirt-64-Image
# 查看当前目录文件
ls
# 应显示:
# openwrt-19.07.8-armvirt-64-root.ext4
# openwrt-19.07.8-armvirt-64-Image
2.2 启动 ARM OpenWrt
qemu-system-aarch64 \
-M virt \
-m 1024m \
-kernel openwrt-19.07.8-armvirt-64-Image \
-append "root=fe00" \
-hda openwrt-19.07.8-armvirt-64-root.ext4 \
-no-reboot \
-nographic \
-cpu cortex-a53 \
-smp 4 \
-net nic \
-net user,id=wan,hostfwd=tcp::7080-:80,hostfwd=tcp::7022-:22
若使用 VNC 显示,可将 -nographic 替换为 -vnc :2。
3. x86_64 架构运行 OpenWrt
3.1 下载固件
wget https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/17.01.1/targets/x86/64/lede-17.01.1-x86-64-combined-ext4.img.gz
gzip -d lede-17.01.1-x86-64-combined-ext4.img.gz
wget https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/17.01.1/targets/x86/64/lede-17.01.1-x86-64-combined-squashfs.img
3.2 启动 x86 OpenWrt
qemu-system-x86_64 \
-kernel lede-17.01.1-x86-64-combined-squashfs.img \
-hda lede-17.01.1-x86-64-combined-ext4.img \
-m 512 \
-vnc :2
4. 网络与端口转发
4.1 开放防火墙端口(宿主机)
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
4.2 修改 OpenWrt 网络配置
vi /etc/config/network
# 修改完成后重启网络
/etc/init.d/network restart
5. 使用 TAP 网络(桥接模式示例)
#!/bin/bash
IMAGE=$PWD/openwrt-19.07.1-x86-64-combined-ext4.img
LAN=openwrt_tap0
# 创建 TAP 接口
ip tuntap add mode tap $LAN
ip link set dev $LAN up
ip addr add 192.168.1.101/24 dev $LAN
# 启动 QEMU
qemu-system-x86_64 \
--enable-kvm \
-device virtio-net-pci,netdev=lan \
-netdev tap,id=lan,ifname=$LAN,script=no,downscript=no \
-device virtio-net-pci,netdev=wan \
-netdev user,id=wan \
-M virt \
-m 512 \
-machine q35 \
-drive file=$IMAGE,format=raw,if=virtio
# 清理 TAP 接口
ip addr flush dev $LAN
ip link set dev $LAN down
ip tuntap del mode tap dev $LAN
6. 在 Termux 中安装 VNC 与 XFCE 桌面
6.1 安装
pkg install x11-repo
pkg install tigervnc xfce4
6.2 启动 VNC
vncserver :1
6.3 关闭 VNC
vncserver -kill :1
pkill Xtightvnc
pkill Xvnc
rm -rf /tmp/.X*-lock
rm -rf /tmp/.X11-unix
rm -rf /root/.vnc # 可选,彻底清理
6.4 检查 DISPLAY 环境变量
echo $DISPLAY # 应返回空,表示未设置
7. 其他命令
查看支持的 CPU 类型(ARM)
qemu-system-aarch64 -cpu help
提示:若提示 wget 未安装,请先执行 pkg install wget。