调试笔记-系列文章目录
调试笔记-20240521-Linux-编译 QEMU/x86_64 可运行的 OpenWrt 固件
文章目录
- 调试笔记-系列文章目录
- 调试笔记-20240521-Linux-编译 QEMU/x86_64 可运行的 OpenWrt 固件
- 前言
- 一、调试环境
- 操作系统:Ubuntu 22.04.4 LTS
- 编译环境
- 调试目标
- 二、调试步骤
- 预置条件
- 安装 OpenWrt 编译工具
- 打开 PuTTY 终端连接开发主机
- 安装编译工具
- 准备 openwrt 构建系统
- 下载 openwrt 构建系统
- 配置 openwrt 编译选项
- 构建 openwrt 发行版本 qkd-base
- 使用 QEMU 运行 OpenWrt x86_64 固件
- 三、应用场景
- 免硬件开发软路由功能模块
- 四、参考资料
- 总结
前言
本文记录在 Linux 环境下编译运行 QEMU/x86_64 虚拟机系统可运行的 OpenWrt 固件。
实验使用的电脑如下:
CPU:
Intel(R) Core(TM) i5-6600K CPU @ 3.50GHz
操作系统:
Ubuntu 22.04.4 LTS
一、调试环境
操作系统:Ubuntu 22.04.4 LTS
操作系统详细信息如下:
Kernel : Linux 6.5.0-35-generic (x86_64)
Version : #35~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue May 7 09:00:52 UTC 2
C Library : GNU C Library / (Ubuntu GLIBC 2.35-0ubuntu3.7) 2.35
Distribution : Ubuntu 22.04.4 LTS
编译环境
- Windows 工作主机通过 PuTTY 远程连接 Linux 开发主机,Linux 开发主机安装 Ubuntu 22.04 LTS 发行版本
参考【安装笔记-20240519-Windows-安装测试 PuTTY】
调试目标
编译生成能在 Windows / QEMU 8.2 软件上运行的 OpenWrt 固件。
二、调试步骤
预置条件
1、参考【安装笔记-20240519-Windows-安装测试 PuTTY】准备好 Ubuntu 22.04 LTS 工作环境
2、下载 OpenWrt 构建系统
下载链接:https://gitee.com/david921518/openwrt
安装 OpenWrt 编译工具
参考 Build system setup
打开 PuTTY 终端连接开发主机
- 在 Windows 点击 PuTTY 图标,连接开发主机,输入用户名和密码
安装编译工具
- 在 PuTTY 窗口执行以下命令:
sudo apt update
sudo apt install build-essential clang flex bison g++ gawk
sudo apt install gettext git libncurses-dev libssl-dev
sudo apt install sudo apt install python3-distutils rsync unzip zlib1g-dev file wget
准备 openwrt 构建系统
下载 openwrt 构建系统
- 进入工作目标并下载 openwrt 构建系统,执行以下命令:
cd wks/gitee
git clone -b openwrt-23.05 https://gitee.com/david921518/openwrt.git
git clone -b openwrt-23.05 https://gitee.com/david921518/openwrt_qkd.git
配置 openwrt 编译选项
- 复制 base 发行版本配置文件到 openwrt 构建系统目录,执行以下命令:
cp openwrt_qkd/conf/feeds.conf.base openwrt/feeds.conf
- 进入 openwrt 构建系统目录并配置编译选项,执行以下命令:
cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
- 选择目标系统 x86,目标子系统 x86_64
- 选择 “Exit” 退出并保存配置
构建 openwrt 发行版本 qkd-base
- 选择 “Exit” 退出并保存配置
make V=s
成功编译后信息如下:
在 /bin/target/ 目录中保存构建的目标镜像文件。
使用 QEMU 运行 OpenWrt x86_64 固件
- 将生成的固件镜像文件复制到 Windows 主机上,运行以下命令:
qemu-system-x86_64 -m 256M -bios "data\ovmf.fd" -debugcon "file:debug.log" -global "isa-debugcon.iobase=0x402" -hda openwrt-x86-64-generic-ext4-combined-efi.img
- OpenWrt 系统成功启动,启动后信息如下:
需要注意,系统内存需要设置不少于 192M,默认 128M 内存在启动时会报 “out of memory” 错误。
三、应用场景
免硬件开发软路由功能模块
利用 QEMU 仿真目标机器,在本机开发、编译并在本机仿真运行,节省了传统嵌入式开发固件烧录的时间。
四、参考资料
1、Build system setup
2、OpenWrt in QEMU
总结
本文介绍了在 Ubuntu 22.04 中编译 QEMU 可运行的 OpenWrt 固件的步骤,并指出过程中遇到的问题及解决方法。