Ubuntu下OpenWRT环境、下载、配置、运行记录

发布时间 2023-05-25 16:12:56作者: ArnoldLu

简单记录Ubuntu下OpenWRT开发环境配置,版本下载和编译,以及通过QEMU运行OpenWRT并和Host进行ssh通信。

1. 环境安装和版本下载

编译环境设置:

sudo apt update
sudo apt install build-essential ccache ecj fastjar file g++ gawk \
gettext git java-propose-classpath libelf-dev libncurses5-dev \
libncursesw5-dev libssl-dev python python2.7-dev python3 unzip wget \
python3-distutils python3-setuptools python3-dev rsync subversion \
swig time xsltproc zlib1g-dev

 下载openwrt 22.03版本:

git clone https://git.openwrt.org/openwrt/openwrt.git -b openwrt-22.03

更新并安装软件包:

./scripts/feeds update -a
./scripts/feeds install -a

2. 编译OpenWRT QEMU CA15版本

通过make menuconfig配置OpenWRT:

 具体如下:

Target System (QEMU ARM Virtual Machine)  --->                                               │ │  目标系统配置,和下面Subtarget组合选择硬件配置。
Subtarget (QEMU ARM Virtual Machine (cortex-a15))  --->                                      │ │  
Target Profile (Default)  --->                                                               │ │  
Target Images  --->                                                                          │ │  目标镜像格式配置。
Enable experimental features by default                                                      │ │  
Global build settings  --->                                                                  │ │  关于编译的一些配置,比如是否加调试信息,是否裁剪未使用函数等。
Advanced configuration options (for developers)  ----                                        │ │  增加一些高级配置选项,比如工具链选项配置、Kernel CFLAGS等。
Build the OpenWrt Image Builder                                                              │ │  
Build the OpenWrt SDK                                                                        │ │  
Package the OpenWrt-based Toolchain                                                               将工具链重新打包。
Image configuration  --->                                                                    │ │  
Base system  --->                                                                            │ │  OpenWRT基本组件配置。
Administration  --->                                                                         │ │  OpenWRT管理工具配置。
Boot Loaders  ----                                                                           │ │  
Development  --->                                                                            │ │  OpenWRT开发工具配置。
Extra packages  --->                                                                         │ │  
Firmware  --->                                                                               │ │  OpenWRT所需固件配置。
Fonts  --->                                                                                  │ │  OpenWRT字体选择。
Kernel modules  --->                                                                         │ │  Linux kernel相关模块功能配置。
Languages  --->                                                                              │ │  OpenWRT中所需要支持的脚本语言。
Libraries  --->                                                                              │ │  各种功能库文件。
LuCI  --->                                                                                   │ │  Lua配置接口。
Mail  --->                                                                                   │ │  邮件功能相关配置。
Multimedia  --->                                                                             │ │  多媒体功能相关配置。
Network  --->                                                                                │ │  网络功能相关配置。
Sound  --->                                                                                  │ │  声音相关功能配置。
Utilities  --->                                                                              │ │  除了以上功能之外的各种小工具。
Xorg  --->                                                                                        Xorg相关配置,仅有字体相关内容。

编译:

make V=s -j8

3. 使用OpenWRT

qemu启动OpenWRT:

qemu-system-aarch64 -m 1024 -smp 2 -cpu cortex-a57 -M virt -nographic -kernel openwrt-armvirt-64-Image-initramfs \
-drive if=none,file=disk.img,id=hd0 -device virtio-blk-device,drive=hd0 \ -device virtio-net,netdev=net0 -netdev user,id=net0,net=192.168.1.0/24,hostfwd=tcp:127.0.0.1:1122-192.168.1.1:22 \ -device virtio-net,netdev=net1 -netdev user,id=net1,net=192.0.2.0/24

此处创建了两个网络接口:

  • eth0(LAN):在使用qemu时,客户机(虚拟机)与主机之间通讯可通过hostfwd参数指定转发端口来实现,-netdev user,id=n0,hostfwd=[tcp|udp]:[主机ip]:主机端口-[客户机ip]:客户机端口。这里将主机对127.0.0.1::1122的访问转到对OpenWRT的192.168.1.1:22的访问。
  • eth1(WAN):qemu的dhcp-server会给OpenWRT分配192.0.2.15,并提供IPv4的网络访问。

登录结果如下,查看网络接口信息:

 输入ssh -p1122 root@127.0.0.1,可以从host登录OpenWRT:

 从OpenWRT访问Host,可以通过:

ssh al@192.168.1.2--通过eht0。
ssh al@192.0.2.2--通过eth1。

 参考文档:

[OpenWrt Wiki] OpenWrt in QEMU

ARM平台使用qemu运行OpenWrt虚拟机 | SDNLAB | 专注网络创新技术

基于Openwrt + Qemu进行内核源码级调试