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

标签: none

添加新评论