openwrt编译x86固件

2023-11-02

x86 openwrt固件编译

2017年十月四日我在珠海,中秋之际写下这篇文章,祝各位看官花好月圆,有情人终成眷属。

最近一直在玩Openwrt,以前上学的时候接触一丁丁,但是只限于烧写别人编译好的固件,这次要真刀实干了,学习了一周各种百度,终于在虚拟机中把openwrt跑起来了,写下此篇留念,后续将会陆续更新。

  • 开发环境的安装
  • Openwrt的准备
  • openwrt配置编译
  • 编译openwrt

开发环境的安装

openwrt的内核是Linux内核,所以整个开发是基于Linux平台上的开发,因为我们大多数人使用的是windows系统,我选择使用虚拟机来安装Linux系统。单击下面的链接即可以下载VM

此时还需要一个Linux镜像文件,单击下载Linux
Linux的安装过程我就不详细说了,安装完成的界面如下图所示《建议配置》:
这里写图片描述

这里写图片描述


进如Ubuntu桌面,按住ctr+alt+T进入命令行模式,至此虚拟机搭建完成。
这里写图片描述


Openwrt的准备

首先需要下载Openwrt的源代码,SVN已经停用了,现在只能够从git上获取源代码。再此之前你需要为Ubuntu安装更新先输入 sudo apt-get update 输入密码,再输入 sudo apt-get upgrade 直到安装更新完成!
这里写图片描述

接下来要获取源码了,首先需要安装必要的支持库,以及支持的各种依赖包
sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip

这是很多条命令,建议一条一条的输入,方面查找错误。官网参考

接下来下载Openwrt源码:
在当前用户目录下输入
mkdir openwrt
创建openwrt文件夹
输入 cd openwrt
进入openwrt文件夹

输入命令(以下命令均用非管理员权限):
git clone https://github.com/openwrt/openwrt.git
获取Openwrt源码!等待结束!
这里写图片描述
因为我已经有openwrt目录了,所以我用op文件夹演示!

输入 ls ,查看op目录下,有openwrt文件夹,你们的应该是在openwrt目录下有一个openwrt文件夹,内部的这个文件夹就是源码包!
输入
cd openwrt
切换至openwrt目录,
输入 ls命令,文件夹组成如下:
这里写图片描述

现在更新源码包!

./scripts/feeds update -a
这里写图片描述

安装feeds更新,更新呢完成之后输入下一跳命令安装,假如你不安装的话就没有第三方源码包给你选了!
./scripts/feeds install -a
这里写图片描述
安装更新之后,输入
make defconfig
检查编译前的环境

这里写图片描述

好了,现在可以来配置编译了!
输入 make menuconfig

这里写图片描述

targetsystem选择x86,target img选择生成 vbox或者vmware镜像文件,我都选了,嘻嘻!
这里写图片描述
好了,现在保存退出。
下面就是见证奇迹的时刻了!

No ,差点忘了还要把luci配置进去
luci>collection>下面的都选中!
luci>aplycation下面选中 luci-app-uhttpd……………………… uHTTPd Webserver Configuration
(其实target imge里面那些你都可以试一试,target profile 选择默认的吧,我没选,你可以试一下要不要选择成X86_x64,我想选了应该没影响)
好了,保存退出!

编译openwrt

编译,输入
make V=99
当然还有其他的一些命令,我就不详细说明了,那些大牛已经有非常详细说明啦!
慢慢等着吧,快的半个小时,慢的等到你怀疑人生!
编译成功会生成镜像: openwrt-x86-generic-combined-ext4.vmdk
那个ext4指的是文件系统,看你是选择了那个文件系统!


不足之处还请指正!
参考博文一
参考博文二
参考博文二

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

openwrt编译x86固件 的相关文章

  • 字大小及其指示

    请参阅下面关于各种指令集架构中的字长以及它与汇编语言的关系的问题 感谢您提供的所有帮助 先说几个事实 如有错误 请指正 处理器架构的字长表示 编辑 其中一些是错误的 请参阅下面 Seva 的帖子 每个寄存器的最大尺寸 每个内存地址的最大尺寸
  • x86 汇编中 cmove 指令的用途?

    反汇编可执行文件时我遇到了cmove操作说明 我已经在互联网上搜索过 但我只发现这是一个有条件的移动 如果源和目的地相等mov发生 我还不明白为什么我需要它 因为它不会改变操作数 它的目的是什么 The CMOVcc指令不比较源和目标 它们
  • 汇编编程语言:程序仅当输入为 ESC 时退出,并在退出前要求确认(y/n),否则循环

    我只是汇编语言编程的初学者 我们的第一个任务是让程序仅在输入为 ESC 时退出 退出之前请求确认 y n 否则循环 我知道 ESC 在 ASCII 代码中具有等效值 但我对插入位置或是否需要添加更多内容感到困惑 请帮我 这是程序 model
  • 如何在 Ubuntu 14.04 LTS 中安装 ia32-libs (Trusty Tahr)

    我昨天安装了 Ubuntu 14 04 Trusty Tahr 一切看起来都还好 但是当我尝试编译一些C代码时 我遇到了以下错误 该错误似乎是由于操作系统缺乏 32 位架构支持造成的 错误输出如下 usr bin ld i386 archi
  • C/C++ 中的简单“Hello World”内联汇编语言程序

    我使用 devcpp 和 borland c 编译器 asm mov ax 4 I O Func mov bx 1 Output func mov cx name address of the string mov dx 6 length
  • 为什么这个“std::atomic_thread_fence”起作用

    首先我想谈一下我对此的一些理解 如有错误请指正 a MFENCE在x86中可以保证全屏障 顺序一致性可防止 STORE STORE STORE LOAD LOAD STORE 和 LOAD LOAD 重新排序 这是根据维基百科 https
  • 为 Visual Studio 应用程序设置平台目标的目的是什么?

    对于任何 VS 项目 都可以在该项目的构建属性中设置平台目标 您可以将其设置为任何 CPU x86 x64 或 Itanium 我的问题是 如果我将此值设置为 x86 是否意味着我无法在 x64 计算机上运行该项目 如果是这样 为什么还要使
  • orpd等SSE2指令有什么意义?

    The orpd指令是 压缩双精度浮点值的按位逻辑或 这不是做完 全相同的事情吗por 按位逻辑或 如果是这样 拥有它还有什么意义呢 请记住 SSE1orps https www felixcloutier com x86 orps首先 实
  • 从汇编程序获取命令行参数

    通读 专业汇编语言书籍 似乎它提供了用于读取命令行参数的错误代码 我纠正了一点 现在它从段错误变成了读取参数计数 然后是段错误 这是完整的代码 data output1 asciz There are d params n output2
  • 在 x86-64 CPU 上通过交叉修改代码重现意外行为

    Question 对于可能在 x86 或 x86 x64 系统上触发意外行为的交叉修改代码有哪些想法 在这些系统中 交叉修改代码中的所有操作均已正确完成 但在执行处理器之前执行序列化指令除外修改代码 如下所述 我有一个 Core 2 Duo
  • Nasm 打印到下一行

    我用 nasm Assembly 编写了以下程序 section text global start start Input variables mov edx inLen mov ecx inMsg mov ebx 1 mov eax 4
  • 如何知道寄存器是否是“通用寄存器”?

    我试图了解寄存器必须具备什么标准才能被称为 通用寄存器 我相信通用寄存器是一个可以用于任何用途的寄存器 用于计算 将数据移入 移出等 并且是一个没有特殊用途的寄存器 现在我读到了ESP寄存器是通用寄存器 我猜是ESP寄存器可以用于任何事情
  • 程序集比较标志理解

    我正在努力理解汇编程序中的以下代码片段 if EAX gt 5 EBX 1 else EBX 2 在汇编程序中 可以写如下 根据我的书 模拟jge操作说明 https www felixcloutier com x86 jcc您通常会使用
  • CPU寄存器和多任务处理

    我目前正在学习汇编 我很困惑 CPU 寄存器如何与多任务一起工作 所以在多任务系统中 CPU可以随时暂停某个程序的执行并运行另一个程序 那么在这一步中寄存器值是如何保存的呢 寄存器是压入堆栈还是以其他方式 CPU 寄存器如何与多任务一起工作
  • 为什么 FMA _mm256_fmadd_pd() 内在函数有 3 个 asm 助记符:“vfmadd132pd”、“231”和“213”?

    有人可以向我解释一下为什么融合乘法累加指令有 3 种变体 vfmadd132pd vfmadd231pd and vfmadd213pd 而只有一个 C 内在函数 mm256 fmadd pd 为了简单起见 在 AT T 语法中 有什么区别
  • Visual Studio 2012 本机 C++ DLL x86 编译

    我最近将我的工具集从 Win 7 x86 Visual Studio 2010 升级到 Win 8 x64 Visual Studio 2012 但是 现在我的本机 C dll 编译为 x64 而不是 x86 除了将代码移至新操作系统并将其
  • 安装“opkg”?

    我正在尝试将软件包安装到我的 OpenWrt SDK 中 为此 您必须通过键入以下内容来使用 OPKG 包管理器 opkg update opkg install
  • movzbl(%rdi, %rcx, 1), %ecx 在 x86-64 汇编中意味着什么?

    我想我明白 movzbl rdi rcx 1 ecx 意思是 将零扩展字节移至长整型 并表示将 ecx 扩展为 32 位 但我不完全确定语法 rdi rcx 1 指的是什么 我在某处看到该语法指的是 Base Index Scale 但我找
  • 英特尔的最后分支记录功能是英特尔处理器独有的吗?

    最后分支记录是指存储与最近执行的分支相关的源地址和目标地址的寄存器对 MSR 的集合 它们受英特尔酷睿 2 英特尔至强和英特尔凌动处理器系列的支持 http css csail mit edu 6 858 2012 readings ia3
  • 当前的 x86 架构是否支持非临时加载(来自“正常”内存)?

    我知道有关此主题的多个问题 但是 我没有看到任何明确的答案或任何基准测量 因此 我创建了一个处理两个整数数组的简单程序 第一个数组a非常大 64 MB 第二个数组b很小 无法放入 L1 缓存 程序迭代a并将其元素添加到相应的元素中b在模块化

随机推荐

  • 并发编程系列之Fork/Join

    前言 上节我们讲了阻塞队列 Java中的并发容器就算有了个基本的认识 今天我们来介绍一种线程工作模式 叫Fork Join 他是JDK7之后提供的一个并行执行框架 主要的思想我觉得是分而治之 将一个大的任务分成多个小的任务并行执行 然后等所
  • 成为技术传播者(二):Why and Why NOT

    前文 成为技术传播者 一 写在前面 Contributing to Eclipse的开篇第一句话说得很有味道 Humans need to feel nurtured and cared for Humans also need to nu
  • 关于vs编译错误CL.exe已退出的解决方案

    IDE问题 VS2010突然无法编辑C 项目 会报错误 30 error MSB6006 CL exe 已退出 代码为 1073741701 这个问题是 我也碰到了 你改一下设置就好了 一劳永逸 随便打开一个项目 点击 视图 gt 属性管理
  • Vue 项目打包之后,CSS 找不到问题

    Vue 项目打包之后 CSS 找不到问题 记录日常开发中遇到的 坑 问题 我把vue项目打包之后放在本地的web环境下可以正常显示 但是我放到 nginx 服务器之后 找不到 css 文件 当时配置如下图 解决办法 我将 打包的路径从 v4
  • fastx常用控件

    目录 表格控件 bootstrap table 日历控件 bootstrap datepicker 通用帮助框 单选 多选 bootstrap标签页 通过设置数据字典来设置下拉框的值 表格控件 bootstrap table 自带搜索框 等
  • c++文件读写操作

    1 声明头文件 include 2 实例化对象 ifstream fin ifstream是中的一个类 fin是一个实例化对象 之所以起这个名字是类比cin 实际上他们有很多相似的地方 3 fin open 文件名 打开方式 本文的打开方式
  • 【机器视觉】——裂纹检测笔记

    目录 传统算法处理裂缝的基本思路 第一种思路 第二种思路 第三种思路 CPP代码 halcon代码 python代码 Matlab代码 深度学习缺陷检测 裂缝检测文献 传统算法处理裂缝的基本思路 第一种思路 1 先转换彩色图为灰度图 2 进
  • MySQL 8.0 隐藏索引

    隐式索引 最明显的一个作用类似 索引回收站 例如数据库长时间运行后 会积累很多索引 做数据库优化时 想清理掉没什么用的多余的索引 但可能删除某个索引后 数据库性能下降了 发现这个索引是有用的 就要重新建立 对于较大的表来说 删除 重建索引的
  • python筑基——基础知识作业汇总,学习笔记

    作业一 语法 变量 输 输出 基本运算 基本数据类型 字符串 类型转换 1 计算整型50乘以10再除以5的商并使用print输出 result 50 10 5 print result 2 判断整型8是否大于10的结果并使用print输出
  • codeforces 825 E Minimal Labels

    Problem codeforces com contest 825 problem E Reference 看第 5 条评论 Meaning 给出一个n个结点的DAG 找一个给结点编号的序列 且满足3个条件 编号为 1 n 每个编号出现且
  • 第三章:Linux环境基础开发工具使用

    系列文章目录 文章目录 系列文章目录 前言 一 yum 1 三板斧 2 扩展 3 软件包名称 二 vim 1 vim基本模式 2 vim基本操作 插入模式 命令模式 底行模式 注释 三 gcc g 1 预处理 2 编译 3 汇编 4 链接
  • Python opencv 机器学习 2.knn k近邻 ocr识别数字 使用digits.png(opencv自带)

    import cv2 import numpy as np from matplotlib import pyplot as plt 识别数字OCR img cv2 imread digits png gray cv2 cvtColor i
  • 见习网工之综合实验

    需求一 信息中心配置Eth trunk实现链路冗余 SW1 interface Eth Trunk1 mode lacp static least active linknumber 1 trunkport GigabitEthernet
  • 【每日一练】在JSX中使用条件渲染

    条件渲染 技术方案 三元表达式 逻辑 运算 1 三元表达式 满足条件才渲染一个span标签 const flag true function App return div flag div h1 span 我是JackWoot span h
  • 自动化测试如何做?接口自动化测试如何才能做好?

    前言 接口自动化测试常用框架 Python requests pytest yaml alluer Jenkins 接口自动化测试的目的 自动化测试的主要目的是用来回归测试的 当代码有变化时 有可能影响不应该变化的逻辑 这个时候为了确认这种
  • There was a problem importing one of the Python modules required to run yum

    为什么80 的码农都做不了架构师 gt gt gt 最近从python 2 6 升级到python2 7 导致 yum 不可用 原因主要是yum 不支持python27 因此需要更改yum的可用路径 which yum 查看下yum的安装路
  • js拖拽实现

  • 强化学习的A3C算法应用(训练Atari游戏)

    A3C算法的全称是Asynchronous Advantage Actor Critic 异步优势执行者 评论者算法 这个算法和优势执行者 评论者算法的区别在于 在执行过程中不是每一步都更新参数 而是在回合结束后用整个轨迹进行更新 因此可以
  • 多个git合并,并保留log历史记录

    面临的需求是 将多个git仓库作为一个单独目录 整合到一个新的git仓库中 并且保留历史记录 1 新建一个summary仓库 新建一个summary仓库 用于整合一系列git仓库 git clone
  • openwrt编译x86固件

    x86 openwrt固件编译 2017年十月四日我在珠海 中秋之际写下这篇文章 祝各位看官花好月圆 有情人终成眷属 最近一直在玩Openwrt 以前上学的时候接触一丁丁 但是只限于烧写别人编译好的固件 这次要真刀实干了 学习了一周各种百度