【调试笔记-20240521-Linux-编译 QEMU/x86_64 可运行的 OpenWrt 固件】

news2024/9/21 4:37:03

调试笔记-系列文章目录

调试笔记-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 固件的步骤,并指出过程中遇到的问题及解决方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1696936.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

etcd基础知识总结

文章目录 核心概念什么是etcd为什么需要etcd分布式中CAP理论etcd中常用的术语etcd的特性etcd的应用场景etcd的核心架构小结 etcd搭建小结 Etcdctl小结 etcd网关和grpc-GetwayEtcd 网关模式grpc-Geteway小结 etcd读请求执行流程Etcd 写请求执行流程写请求之QuotaKVServer模块写请…

晶圆厂的PE转客户工程师前景怎么样?

知识星球(星球名: 芯片制造与封测技术社区,星球号: 63559049)里的学员问: 目前在晶圆厂做PE,倒班oncall压力太大把身体搞坏了,现在有一个design house的CE客户工程师的offer&…

绘唐科技绘唐ai工具邀请码

绘唐科技绘唐ai工具邀请码 绘唐AI工具 https://qvfbz6lhqnd.feishu.cn/wiki/QBr4wOAz2ilF4NknrqbcoKRhn2c TensorFlow是一个开源的机器学习框架,由Google开发并维护。它提供了一个灵活且高效的接口,用于构建和训练各种机器学习模型。 TensorFlow的基本概念包括: 1. 张量(…

Qt Creator(1)【概述篇】

阅读导航 引言一、Qt概述1. 什么是Qt2. Qt的发展史3. Qt支持的平台4. Qt的优点5. Qt的应用场景 二、Qt下载安装 引言 在探索编程和软件开发的旅程中,我们已经奠定了坚实的基础,通过学习C语言和C,我们不仅掌握了结构化编程和面向对象编程的核…

[数组查找]2.图解二分查找及其代码实现

二分查找 二分查找也是一种在数组中查找数据的算法。和线性查找不同,它只能查找已经排好序的数据。二分查找通过比较数组中间的数据与目标数据的大小,可以得知目标数据是在数组的左边还是右边。因此,比较一次就可以把查找范围缩小一半。重复执…

天工 AI 3.0,彻底爆了!

作为一名 AI 博主,深知一个优秀的AI工具能大大提高我们日常学习、工作效率,比如我之前学习一些AI方向的算法知识,需要搜索大量博客、付费购买专业课程等。光在找到有用的资料就耗费不少时间了,更何况需要阅读全文去整理汇总&#…

1.2 程序员职业发展

目录 1 程序员职业发展方向 2 计算机研究生为何青睐AI赛道 1 程序员职业发展方向 2 计算机研究生为何青睐AI赛道 计算机类研究生,大部分以人工智能作为主赛道,原因如下: 广阔的就业前景:人工智能是当今科技发展的前沿领域&…

专业渗透测试 Phpsploit-Framework(PSF)框架软件小白入门教程(十二)

本系列课程,将重点讲解Phpsploit-Framework框架软件的基础使用! 本文章仅提供学习,切勿将其用于不法手段! 接上一篇文章内容,讲述如何进行Phpsploit-Framework软件的基础使用和二次开发。 我们,继续讲一…

SVM兵王问题

1.流程 前面六个就是棋子的位置,draw就是逼和,后面的数字six就代表,白棋最少用六步就能将死对方。然后呢,可以看一下最后一个有几种情况: 2.交叉测试 leave one out: 留一个样本作测试集,其余…

VUE3.0学习-模版语法

安装Node.js的过程相对直接,以下是详细的步骤指导,适用于大多数操作系统: ### 1. 访问Node.js官方网站 首先,打开浏览器,访问 [Node.js 官方网站](https://nodejs.org/)。 ### 2. 选择合适的版本下载 在Node.js官网上…

精品PPT | 精益生产管理中MES系统的实现与应用(免费下载)

【1】关注本公众号,转发当前文章到微信朋友圈 【2】私信发送 MES系统的实现与应用 【3】获取本方案PDF下载链接,直接下载即可。 如需下载本方案PPT/WORD原格式,请加入微信扫描以下方案驿站知识星球,获取上万份PPT/WORD解决方案&…

将已克隆的Git仓库推送到内网服务器

一、需求背景 我们公司用gitea搭建了一个git服务器,其中支持win7的最高版本是v1.20.6。 我们公司的电脑在任何时候都不能连接外网,但是希望将一些开源的仓库移植到内网的服务器来,一是有相关代码的使用需求,二是建设一个内网可以…

DI-engine强化学习入门(三)DI-ZOO强化学习环境搭建与示例运行——Atari

Atari是一家知名的电子游戏公司,成立于1972年,是早期电子游戏产业的先驱之一。在强化学习领域,提到Atari通常指的是Atari 2600游戏的一系列环境,这些环境是用于开发和测试强化学习算法的标准平台。 Atari 2600 强化学习环境概述 …

手写tomcat(Ⅲ)——tomcat动态资源的获取

仿写tomcat的Servlet接口体系 之前写过一篇博客,Tomcat的Servlet-GenericServlet-HttpServlet体系的具体结构,以及Servlet的生命周期 Servlet讲解 想要模仿tomcat获取动态资源,就需要我们自己仿写一个Servlet接口体系 主要包括&#xff1a…

第15篇:JTAG UART IP应用<二>

Q:如何通过C库函数访问JTAG UART? A:创建Quartus硬件工程以及Platform Designer系统,这与我们之前创建的第一个Nios II工程--Hello_World的Quartus硬件工程一样,IP组件有Clock Source、Nios II Professor、On-Chip Me…

机器重启oracle数据库自动启动异常

业务连接报ora-01033: 检查服务器,发现有重启记录,oracle进程存在,数据库状态处于mount状态,检查日志,发现在数据库启动时没有正常open: 连入数据库:Select * from v$backup 发现数…

SpringBoot集成Logback将日志写入文件夹

一、logback简介: 目前比较常用的ava日志框架:Logback、log4j、log4j2、JUL等等。 Logback是在log4j的基础上重新开发的一套日志框架,是完全实现SLF4J接口API(也叫日志门面)。 Logback 的架构非常通用,可以应用于不同的环境。目前logback分为…

数据分析项目有哪些实施流程?揭示从数据准备到解决方案全过程

在当今数据驱动的商业环境中,数据分析项目的成功实施对于企业洞察市场趋势、优化产品服务、提升用户体验以及增强竞争力具有至关重要的作用。特别是对于直播类应用软件这样的快速增长领域,如何通过数据分析来扩大付费用户基础、提高用户留存率&#xff0…

OceanBase的存储架构与传统LSM-Tree架构的异同|OceanBase数据转储合并技术解读(二)

前篇博文将OceanBase的存储架构巧妙地与自然界中的“水生态”进行了类比,今日我们转变视角,聚焦在与拥有相同LSM-Tree架构的其他产品的比较,深入探讨OceanBase相较于它们所展现出的独特性能。 众所周知,OceanBase数据库的存储引擎…

aws eks理解和使用podidentity为pod授权

参考链接 https://www.amazonaws.cn/new/2024/amazon-eks-introduces-eks-pod-identity/https://aws.amazon.com/cn/blogs/aws/amazon-eks-pod-identity-simplifies-iam-permissions-for-applications-on-amazon-eks-clusters/ 先决条件 集群版本需要符合要求,如果…