OpenWrt系统开发笔记
openWrt英文官网: https://openwrt.org/ 中文官网: http://www.openwrt.org.cn/
一、开发环境及编译
在github上有两个源码使用的比较多
一个是lede,地址为:https://github.com/coolsnowwolf/lede
另一个为OpenWrt的官方源码:https://github.com/lede-project
下载lede的源码方法为:
git clone https://github.com/coolsnowwolf/lede
下载OpenWrt的官方源码方法为:
git clone https://github.com/openwrt/openwrt.git
二、编译模块
单独编译一个模块,以myapp_test为例
make package/myapp_test/clean // 清除编译生成的文件
make package/myapp_test/prepare // 编译准备,下载、解压缩、打补丁
make package/myapp_test/configure // 根据设置选项配置生成Makefile
make package/myapp_test/compile // 根据Makefile进行编译
make package/myapp_test/install // 生成安装包
三、源码目录
openWrt顶层目录含义:
config/ // 编译选项配置文件
docs/ // 文档目录
include/ // 包含准备环境脚本、下载脚本、编译Makefile以及编译指令
package/ // 各种功能的安装包
scripts/ // 包含准备环境脚本、下载脚本、编译Makefile以及编译指令
target/ // 嵌入式平台
toolchain/ // 编译器和C库等
tools/ // 通用命令,用来生成固件的辅助工具
在openWrt固件中,几乎所有的东西都是软件包(package),可以编译为 .ipk 结尾的安装包,这样就可以很方便的安装、升级和卸载。
openWrt编译生成目录含义:
dl/ // 编译时下载软件代码包临时目录
feeds/ // 扩展软件包目录
bin/ // 编译完成后的最终成果目录
build_dir/ // 编译中间文件目录
staging_dir/ // 编译安装目录
log/ // 如果打开了log选项,则编译log保存在该目录下
四、openWrt系统包管理
安装并进入openWrt系统后,openWrt包管理方法为:
4.1、软件包管理
opkg update // 更新可以安装的软件包列表
opkg install // 安装软件包,需要第三个参数传递一个软件包的名称。如 opkg install file
opkg remove // 卸载安装包,需要第三个参数传递一个软件包的名称。autoremove可以将不需要的安装包也删除。如 opkg remove file --autoremove
opkg upgrade // 升级软件包,需要第三个参数传递一个软件包的名称。一般只用来升级应用(非内核软件)。
4.2、查询信息:
opkg list // 列出所有可使用的软件包
opkg list-installed // 列出系统中已经安装的软件包
opkg list-changed-conffiles // 列出用户修改过的配置文件
opkg files <pkg> // 列出属于这个软件包中的所有文件
opkg search <file> // 列出提供file的软件包,需要传递文件的绝对路径
opkg find <regexp> // 列出软件包名称和regexp匹配的软件包
opkg info [pkg] // 显示已安装pkg软件包的信息
opkg download <pkg> // 将软件包pkg下载到当前目录
opkg print-architecture // 列出安装包的架构
opkg whardepends [-A] [pkg] // 针对已安装的软件包,输出依赖这个软件包的软件包
opkg命令选项:
-A 查询所有软件包
-d <dest_name> 使用dest_name作为软件包安装的根目录
-f <conf_file> 使用conf_file作为opkg的配置文件
--nodeps 不按照依赖来安装,只安装软件包自己
--autoremove 卸载软件包时自动卸载不再使用的软件包
--force-reinstall 强制重新安装软件包
五、openWrt系统配置(UCI接口)
MVC(Model-View-Control)模式是经典的Web开发编程模式。openWrt也是采用该设计模式,模型层采用统一配置接口 UCI (Unified Configuration Interface)。
openWrt系统的核心配置文件,都位于 /etc/config/ 目录下。
例如修改网络ip:
uci set network.lan.ipaddr=192.168.6.1
uci commit network
通过运行以下命令修改生效:
/etc/init.d/network restart
如图所示:
常用功能配置文件含义:
/etc/config/dhcp // dnsmasq软件包配置,包含dhcp和dns设置
/etc/config/dropbear // SSH服务器选项
/etc/config/firewall // 防火墙设置,包含网络地址转换、包过滤、端口转发等
/etc/config/network // 网络配置,包含桥接、接口、路由配置
/etc/config/system // 系统配置,包含主机名称、网络时间同步等
/etc/config/timeserver // rdate的时间服务列表
/etc/config/luci // 基本的LuCI配置
/etc/config/wireless // 无限设置和wifi网络定义
/etc/config/uhttpd // web服务器选项配置
/etc/config/upnpd // miniupnpd UPnP服务设置
/etc/config/qos // 网络服务质量的配置文件定义
六、openWrt内核配置
6.1、sysctl
sysctl.conf 是系统启动预加载的内核配置文件,sysctl.conf的文件位置在openwrt源码文件的目录为: package/base-files/files/etc/sysctl.conf。通过编译,在openwrt系统中生成/etc/sysctl.d/* 。
在openwrt系统中可以通过sysctl命令去读和设置。例如:
/sbin/sysctl -a # 显示所有的内核配置
/sbin/sysctl -n kernel.hostname # 查询kernel.hostname的值
/sbin/sysctl -w kernel.hostname="zhangsan" # 修改系统主机名称为zhangsan
/sbin/sysctl -p /etc/sysctl.conf # 加载配置
6.2、/proc/sys/ 目录
大部分可用的内核参数均在 /proc/sys/ 目录下。例如:
查询是否打开路由转发:
cat /proc/sys/net/ipv4/ip_forward
打开路由转发设置:
echo "1" > /proc/sys/net/ipv4/ip_forward
6.3、系统配置文件
系统配置文件介绍:
/etc/rc.local // 想要在开机后就执行的命令可以写入该文件
/etc/profile // 为系统的每个登陆用户设置环境变量
/etc/shells // openWrt采用的shell是 /bin/ash
/etc/fstab // 各种文件系统的描述信息
/etc/services // 互联网网络服务类型列表
/etc/protocols // 协议定义描述文件
相关文章:

OpenWrt系统开发笔记
openWrt英文官网: https://openwrt.org/ 中文官网: http://www.openwrt.org.cn/ 一、开发环境及编译 在github上有两个源码使用的比较多 一个是lede,地址为:https://github.com/coolsnowwolf/lede 另一个为OpenWrt的官方源码&#…...

实战 - Restful APi 格式规范
文章目录 1. 特征2. 优点3. 动作1. GET 获取资源2. POST 创建资源3. PUT 整体替换4. PATCH 部分替换5. DELETE 删除资源 4. 示例 RESTful是一种API的设计风格,他和GraphQL ,JSON-RPC,WebService类似,用于定义在CS、BS架构下暴露服…...

《Linux从练气到飞升》No.21 Linux简单实现一个shell
🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的…...

【iVX】iVX的低代码未来发展趋势:加速应用开发的创新之路
简介: 随着数字化转型的飞速发展,企业和组织对快速开发和交付高质量应用的需求越来越迫切。低代码开发平台作为一种创新的解决方案,极大地简化了应用程序的开发过程。在这一领域,iVX低代码平台作为领先的创业公司,正在…...
zookee 安装
1、下载安装包 weget https://downloads.apache.org/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz 方案1:wget是一个下载指令,后面可以跟下载连接去从服务器上下载东西。 方案2:也可以先下载到windows上,再通…...

OpenWrt编译自己的应用程序
编译OpenWrt的应用程序可以参考OpenWrt内部其他应用程序的例程,来编写成自己的应用程序 一、OpenWrt源代码获取与编译 1.1、搭建环境 下载OpenWrt的官方源码: git clone https://github.com/openwrt/openwrt.git1.2、安装编译依赖项 sudo apt update…...
MySQL 50 题。
MySQL 50 题。 文章目录 MySQL 50 题。数据库。sql。 数据库。 CREATE SCHEMA new_schema DEFAULT CHARACTER SET utf8mb4 ;Operation failed: There was an error while applying the SQL script to the database. Executing: CREATE SCHEMA new_schema DEFAULT CHARACTER SE…...
强化学习算法总结 (1)
强化学习算法总结 (1) 1.综述 强化学习是通过与环境进行交互,来实现目标的一种计算方法。 s − a 1 − r − s ′ s - a_1 - r- s s−a1−r−s′ 1.1强化学习优化目标 p o l i c y a r g m a x p o l i c y E ( a , s ) [ r e w a r d ( s , a ) ] policy ar…...

Qt应用开发(基础篇)——向导对话框 QWizard
一、前言 QWizard类继承于QDialog,为有向导界面需求的应用环境提供了一个框架。 对话框窗口 QDialog QWizard向导对话框是一个拥有队列界面的特殊对话框,向导的目的是引导用户一步一步的完成预设的流程。向导常用于软件安装界面向导、硬件线路安装向导、…...

Python类的方法
Python类的方法主要分为实例方法、类方法和静态方法三种。 1 实例方法 以self作为第一个参数的方法,就是类的实例方法。该方法由类的实例调用,Python会把调用该方法的实例对象传递给self。 如下代码定义了一个名为A的类。 class A:def __init__(self…...

变电站自动化监控系统
力安科技变电站自动化监控系统是以箱式变电站为管理对象,加装箱变网关,在完成箱变智能化改造的基础上,依托电易云,构建一体化智慧箱变及运维系统。智能箱式变电站被广泛应用于住宅小区、城市公用变压器、工厂、商场、机场、电站等…...

MySql学习笔记11——DBA命令介绍
DBA命令 数据导入 要进入Mysql 创建数据库 create database database_name;使用数据库 use database_name;初始化数据库 source .sql文件地址,不能加双引号;数据导出 要在windows的dos环境下进行 导出数据库 mysqldump database_name > 存放…...
Webpack 复习小结
nodejs学习参考 node常用命令: node xxx.js 执行js文件 npm init -y 初始化package.json npm i 软件包名 下载软件包到本地 npm i 软件包名 -g 下载软件包到全局 npm uni 软件包名 删除软件包 系统优化CDN使用 CDN for free 需求:开发模式使用本地第三…...

Laravel chunk和chunkById的坑
在编写定时任务脚本的时候,经常会用到chunk和chunkById的API。 一、前言 数据库引擎为innodb。 表结构简述,只列出了本文用到的字段。 字段类型注释idint(11)IDtypeint(11)类型mark_timeint(10)标注时间(时间戳) 索引&#x…...

从零开始学习 Java:简单易懂的入门指南之泛型及set集合(二十二)
泛型及set集合扩展 1.泛型1.1泛型概述 2.Set集合2.1Set集合概述和特点【应用】2.2Set集合的使用【应用】 3.TreeSet集合3.1TreeSet集合概述和特点【应用】3.2TreeSet集合基本使用【应用】3.3自然排序Comparable的使用【应用】3.4比较器排序Comparator的使用【应用】3.5两种比较…...

JVM----GC(垃圾回收)详解
一、Automatic Garbage Collection(垃圾回收)简介 Automatic Garbage Collection (自动垃圾回收)是JVM的一个特性,JVM会启动相关的线程,该线程会轮训检查heap memeory,并确定哪些是未被引用的(…...
数据库的三个范式
数据库的三个范式是关系数据库设计中的一组规范,用于确保数据的有效性和一致性。这三个范式分别是: 第一范式(1NF):要求数据库表中的每一列都是不可分割的原子值。换句话说,每个表中的每个字段不能包含多个…...

谷歌浏览器打开白屏 后台还有还有很多google chrome进程在运行
环境: Win10 专业版 谷歌浏览器 版本 116.0.5845.141(正式版本) (64 位) L盾加密终端 问题描述: 谷歌浏览器打开白屏 后台还有还有很多google chrome进程在运行,要全部结束谷歌浏览器进程&…...

Java EE 突击 15 - Spring Boot 统一功能处理
Spring Boot 统一功能处理 一 . 统一功能的处理1.1 初级阶段 : 不断重复1.2 中级阶段 : 集成方法1.3 高级阶段 : Spring AOP1.4 超高级阶段 : Spring 拦截器准备工作实现拦截器自定义拦截器将自定义拦截器加入到系统配置 拦截器实现原理扩展 : 统一访问前缀添加 二 . 统一异常的…...

JasperReport定义变量后打印PDF变量为null以及整个pdf文件为空白
问题1: JasperReport打印出来的整个pdf文件为空白文件; 问题2:JasperReport定义变量后打印PDF变量为null; 问题1原因是因为缺少数据源JRDataSource JasperFillManager.fillReport(jasperReport, params,new JREmptyDataSource());如果你打印…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...

HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...

LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...

解析“道作为序位生成器”的核心原理
解析“道作为序位生成器”的核心原理 以下完整展开道函数的零点调控机制,重点解析"道作为序位生成器"的核心原理与实现框架: 一、道函数的零点调控机制 1. 道作为序位生成器 道在认知坐标系$(x_{\text{物}}, y_{\text{意}}, z_{\text{文}}…...