OpenWrt routing 开发
文章平均质量分 66
openWrt的系统构建、内核驱动、用户空间包、bsp移植
老理说的好
技术也修行!
展开
-
OpenWRT 系统增加自定义 machine 型号名称
记录在 mtk7688 平台上、修改 machine 名称,配置系统网卡数量,如何在 mtk 平台、通过设备树方式添加 RTC 时钟过程。本篇内容是工作笔记,以做备忘。setp 1>. setNetmode file configopenwrt 系统启动时会读取 etc/init.d/setnetmode 脚本,根据脚本配置内容,配置网络 switch 芯片 phy 接口数量和类型。下面时修改 mtk7688 仅有 wan 接口的设置方法,内容如下。@ package/base-file原创 2022-03-20 21:56:54 · 6924 阅读 · 0 评论 -
C 语言中获取 Luci 配置内容实战记录(openwrt )
本篇记录是续上一篇、openWRT 中 Web 配置参数的延续,系统中有web的配置方法,程序中需要获取配置内容,更新程序运行状态。下面直接把程序贴上来,不解释什么了。#include <chrono>#include <iostream>#include <thread>#include <mutex>#include <fstream>#include <stdint.h>#include <unistd.h原创 2022-03-05 18:55:37 · 766 阅读 · 0 评论 -
OpenWRT 添加 WEB 配置界面实战记录
本篇是记录在 Openwrt 镜像中添加 自定义的 web 配置界面过程,编译进 openwrt 的系统镜像中。第一步 建立项目文件目录mkdir -p feeds/luci/applications/luci-app-Gatewaymkdir -p feeds/luci/applications/luci-app-Gateway/config mkdir -p feeds/luci/applications/luci-app-Gateway/luci mkdir -p feeds/luci/ap原创 2022-03-05 17:46:04 · 5725 阅读 · 0 评论 -
42 --> OpenWRT 添加非 C语言文件打包至镜像,VUE + nginx 打包至镜像
配置 vue 源文件路径,和打包路径在OpenWRT的源码文件路径:在 /package/base-files/files 中,建立 www/dist 文件夹,并把 vue 打包内容拷贝至此文件夹中,在编译 OpenWRT的镜像时, 编译脚本会自动在 OpenWRT 系统根目录 /www下 建立dist文件,并拷贝vue源文件至dist中。└── www└── dist├── index.html└── static├── css├── fonts└── js配置 nginx.conf原创 2021-08-23 15:19:07 · 648 阅读 · 0 评论 -
41 --> OpenWrt 路由系统修改镜像中system.conf、resolv.conf参数方法记录
1. 修改 system.conf 配置文件内容方法配置文件路径如下$ vim package/base-files/files/bin/config_generate修改内容如下generate_static_system() { uci -q batch <<-EOF delete system.@system[0] add system system set syste原创 2021-08-10 16:30:35 · 1443 阅读 · 2 评论 -
40 --> OpenWrt 路由系统 gpio-button-hotplug 与 内核模块gpio-button-hotplug 之间关系
gpio-keys-polled 驱动裁剪注意事项内核模块的 “gpio-keys-polled”,驱动位于drivers/input/keyboard/ 路径下,路由系统的 “gpio-keys-polled”,驱动位于 openWrt源码的 package/kernel/gpio-button-hotplug/路径下,由此得出 内核模块与路由系统的"gpio-keys-polled"是互斥,因此我们选择路由系统的gpio-keys-polled驱动,保证路由系统功能完整性。gpio-keys-原创 2021-08-09 18:32:57 · 1821 阅读 · 0 评论 -
39 --> 详解 OpenWRT 软件组件之 hotplug、coldplug 模块
OpenWrt 内部消息总线 ubus 是支撑 该系统核心,系统软件模块之间关系图如下:此图仅是把部分软件模块标识出来,其中还有很多软件模块如:uhttpd、rpcd、mwan3、hotplug、coldplug等等模块,都是依托openWRT的系统ubus总线来构建。此框图非常重要、能够快速建立系统软件组件之间关系。热插拔与冷插拔入口调用 openWRT的state_enter() 状态机函数,此函数中,在系统early阶段初始 hotplug()、procd_coldplug()函数。注册RPC原创 2021-08-06 19:18:50 · 1706 阅读 · 0 评论 -
38 --> 详解 OpenWRT RESET按键、键盘响应逻辑
OpenWRT 系统中的按键处理方法如下:在 etc/rc.button/ 文件夹下有热拔插事件响应脚本按键热拔插事件、触发etc/rc.button/ 对应的按键响应脚本系统按键响应逻辑是,执行响应脚本文件,用户可以直接修改脚本文件,来修订键盘处理响应逻辑。查看 rc.button/内容如下root@LEDE:/# ls /etc/rc.button/failsafe power reset rfkill响应脚本内容,分别如下:电源按键/# cat etc/原创 2021-08-05 17:04:23 · 5730 阅读 · 0 评论 -
37 --> 详解 OpenWRT系统框架基础软件模块之 procd
一、简介OpenWrt路由操作系统的框架基础软件有很多,大部分是通用的软件模块,如 dhcp 、dnsmasq、iproute、cmwp、vpn、ipsec等等;OpenWrt还集成部分具有专属特征软件模块,也是OpenWRT系统核心框架软件组件,从此篇开始分析 《OpenWrt系统框架基础软件模块》系列文章。OpenWrt 核心软件:procd、uci、libubox、ubus、ubox、luci、netifd 软件组件内容,此部分软件模块是构成OpenWrt框架基础软件。procd 部分源码内容涉原创 2021-08-04 19:12:11 · 3563 阅读 · 1 评论 -
36 --> OpenWRT 移植 nginx、 测试 Vue 前端打包项目的实践
本篇记录 nginx 移植到 OpenWRT 19.07 中,配置nginx参数,运行 Vue 前端打包项目的实践过程。移植 nginxmake menuconfig搜索 nginx 关键词,把nginx相关服务都选择上,本次实践选择如下:Network —>Web Servers/Proxies —><> nginx-all-module… Nginx web server with ALL module selected-- nginx-mod-luci… Su原创 2021-07-28 18:41:41 · 1333 阅读 · 0 评论 -
35 --> OpenWRT 嵌入式 go1.15.14版本、测试 gin 框架和源码分享
此篇文章是对 《34 --> OpenWRT 嵌入式mips环境的go 环境搭建、gin验证测试代码分享》文章的补充,因为测试的时候,发现一个关于 protobuf 库依赖错误问题,go wiki 上说 go1.11 版本就存在此问题,所以此篇属于填补上一篇承诺分享 gin框架和源码诺言的实现。第一步 下载 go1.15.141.1 编译go交叉编译环境curl -# -O https://dl.google.com/go/go1.15.14.src.tar.gztar -zxvf go1.11原创 2021-07-24 16:37:19 · 806 阅读 · 3 评论 -
34 --> OpenWRT 嵌入式mips环境的go 环境搭建、gin验证测试代码分享
笔者早期在嵌入式上、 http server的程序,实现静态网页相关功能,采用的第三方 goahead 组件,纯C语言实现,编写应用还是比较麻烦的。go语音被称作互联网时代的"C" 。简单和高效率,跨平台功能也非常强大,本次项目中再次需要搞嵌入式的WEB服务,并且还需要提供接口API功能,把设备功能向第三方开放,就采用go 语言来承担此次研发语言。在工作之余分享一下go语言相关的体会,首先我们需要一个嵌入式开放环境,本篇就作为 go 专栏的开篇文章吧。第一步 安装 go1.4 编译环境c原创 2021-07-24 14:27:59 · 1942 阅读 · 0 评论 -
33 --> OpenWRT-19.07 的设备树增加gpio-export,name 时内核bug的修复
一、bug现象描述内核版本: Linux version 4.14.200OpenWRT-19.07硬件平台:mtk7621a在设备树中增加 hua_hand 的io设备,设备树内容如下: gpio-export { compatible = "gpio-export"; #size-cells = <0>; modem-reset {原创 2021-07-23 19:16:08 · 1367 阅读 · 0 评论 -
32 --> 详解 OpenWRT系统框架基础软件模块之netifd
一、简介OpenWrt路由操作系统的框架基础软件有很多,大部分是通用的软件模块,如 dhcp 、dnsmasq、iproute、cmwp、vpn、ipsec等等;OpenWrt还集成部分具有专属特征软件模块,也是OpenWRT系统核心框架软件组件,从此篇开始分析 《OpenWrt系统框架基础软件模块》系列文章。OpenWrt 核心软件:procd、uci、libubox、ubus、ubox、luci、netifd 软件组件内容,此部分软件模块是构成OpenWrt框架基础软件。因为OpenWRT是小型软原创 2021-07-22 14:31:31 · 10116 阅读 · 1 评论 -
31 --> 详解 OpenWRT系统框架基础软件模块之libblobmsg_json
一、简介OpenWrt路由操作系统的框架基础软件有很多,大部分是通用的软件模块,如 dhcp 、dnsmasq、iproute、cmwp、vpn、ipsec等等;OpenWrt还集成部分具有专属特征软件模块,也是OpenWRT系统核心框架软件组件,从此篇开始分析 《OpenWrt系统框架基础软件模块》系列文章。OpenWrt 核心软件:procd、uci、libubox、ubus、ubox、luci、netifd 软件组件内容,此部分软件模块是构成OpenWrt框架基础软件。因为OpenWRT是小型软原创 2021-07-15 15:15:30 · 2666 阅读 · 4 评论 -
30 --> 详解 OpenWRT系统框架基础软件模块之ubus
一、简介OpenWrt路由操作系统的框架基础软件有很多,大部分是通用的软件模块,如 dhcp 、dnsmasq、iproute、cmwp、vpn、ipsec等等;OpenWrt还集成部分具有专属特征软件模块,也是OpenWRT系统核心框架软件组件,从此篇开始分析 《OpenWrt系统框架基础软件模块》系列文章。OpenWrt 核心软件:procd、uci、libubox、ubus、ubox、luci、netifd 软件组件内容,此部分软件模块是构成OpenWrt框架基础软件。因为OpenWRT是小型软原创 2021-07-14 17:19:28 · 6001 阅读 · 0 评论 -
29 --> 详解 OpenWRT系统框架基础软件模块之ubox
一、简介OpenWrt路由操作系统的框架基础软件有很多,大部分是通用的软件模块,如 dhcp 、dnsmasq、iproute、cmwp、vpn、ipsec等等;OpenWrt还集成部分具有专属特征软件模块,也是OpenWRT系统核心框架软件组件,从此篇开始分析 《OpenWrt系统框架基础软件模块》系列文章。OpenWrt 核心软件:procd、uci、libubox、ubus、ubox、luci、netifd 软件组件内容,此部分软件模块是构成OpenWrt框架基础软件。因为OpenWRT是小型软原创 2021-07-14 11:27:11 · 2198 阅读 · 1 评论 -
28 --> 详解 OpenWRT系统框架基础软件模块之libubox
一、简介OpenWrt路由操作系统的框架基础软件有很多,大部分是通用的软件模块,如 dhcp 、dnsmasq、iproute、cmwp、vpn、ipsec等等;OpenWrt还集成部分具有专属特征软件模块,也是OpenWRT系统核心框架软件组件,从此篇开始分析 《OpenWrt系统框架基础软件模块》系列文章。OpenWrt 核心软件:procd、uci、libubox、ubus、ubox、luci、netifd 软件组件内容,此部分软件模块是构成OpenWrt框架基础软件。因为OpenWRT是小型软原创 2021-07-13 19:19:21 · 2601 阅读 · 1 评论 -
27 --> OpenWRT 应用程序自启动脚本、镜像发布、编写应用程序service 启动脚本
openWRT中用户的应用程序如需要开机自启动的话,就需要编写开机自启动。openWRT的中procd是应用程序托管线程,如果用户应用程序宕掉,procd会自动重启服务。一、openWRT启动流程openWRT 是一款基于主线linux路由功能的操作系统,系统启动流程:(1). uboot 引导(2). 启动内核(3). 预初始化 /etc/preinit操作系统启动环境初始化(4). busybox应用启动shell环境的初始化,/sbin/init 。(5). /etc/ini原创 2021-06-30 23:32:01 · 1318 阅读 · 0 评论 -
26. 详解 OpenWRT VLan 参数配置、VLan DHCP 地址池参数配置
本篇分享 mtk7621 路由板的 vlan 参数配置、vlan DHCP 地址池的参数配置。环境简介mtk7621 路由板原创 2021-06-20 23:02:02 · 6795 阅读 · 0 评论 -
25. OpenWRT 日志自动上报 syslog / rsyslog 配置详解
调试 OpenWRT 网络组件和用户软件时,需要通过日志信息的分析,来解决系统问题;产品上线质量跟踪也需要日志信息来分析产品bug,因此系统日志使用非常重要,本篇记录 OpenWRT-19.07 版本日志开启和日志自动上报至服务器的过程。1. 运行环境说明服务器端 采用 ubuntu-16.04 系统自动安装的 rsyslog 组件;OpenWRT -19.07 系统移植 syslog 组件;客户端 采用 mtk7621 路由器。2. 服务端 ubuntu16 系统 rsyslog 参数配置原创 2021-06-17 16:37:52 · 6228 阅读 · 2 评论 -
24. 详解 FRRouting 之 EBGP 协议配置
FRRouting 简介FRRouting (FRR) is a free and open source Internet routing protocol suite for Linux and Unix platforms. It implements BGP, OSPF, RIP, IS-IS, PIM, LDP, BFD, Babel, PBR, OpenFabric and VRRP, with alpha support for EIGRP and NHRP.官方网站链接。 如何移植 FR原创 2021-06-17 15:03:08 · 1232 阅读 · 0 评论 -
23. 详解 FRRouting 的 IBGP 应用配置
FRRouting 简介FRRouting (FRR) is a free and open source Internet routing protocol suite for Linux and Unix platforms. It implements BGP, OSPF, RIP, IS-IS, PIM, LDP, BFD, Babel, PBR, OpenFabric and VRRP, with alpha support for EIGRP and NHRP.官方网站链接。 如何移植 FR原创 2021-06-15 18:56:51 · 1164 阅读 · 2 评论 -
22. 详解 FRRouting --> OSPF 配置
FRRouting 简介FRRouting (FRR) is a free and open source Internet routing protocol suite for Linux and Unix platforms. It implements BGP, OSPF, RIP, IS-IS, PIM, LDP, BFD, Babel, PBR, OpenFabric and VRRP, with alpha support for EIGRP and NHRP.官方网站链接。 如何移植 FR原创 2021-06-14 23:34:36 · 7037 阅读 · 5 评论 -
21. uci 配置路由与 iproute 配置区别
1.1 路由 (Routing)设置和查看路由表都可以用 route 命令,设置内核路由表的命令格式是:route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]其中:add : 添加一条路由规则,del : 删除一条路由规则,-net : 目的地址是一个网络,-host : 目的地址是一个主机,target : 目的网络或主机netmask : 目的地址的网络掩码,gw : 路由数据包通过的网关,dev :原创 2021-04-05 17:11:20 · 1891 阅读 · 0 评论 -
20. 详解 OpenWrt 防火墙配置、NAT配置
1 OpenWrt 内置防火墙介绍Openwrt 是一个 GNU/Linux 的发行版, Openwrt 的防火墙实现与Linux的防火墙是通过netfilter内核模块,加上用户空间的iptables管理工具;同样是五链四张表、五元素的管理框架。OpenWRT开发了一套与iptables同地位的netfilter管理工具fw3,这个工具侧重于从uci格式的配置文件中获取过滤信息下发到内核的netfilter中去。防火墙文件总会在/etc/init.d/firewall 启动的时候由 UCI 解码并且原创 2021-06-12 00:14:55 · 29325 阅读 · 3 评论 -
19 -->ubuntu系统 搭建MTK7621平台的 OpenWRT 交叉编译环境
本篇记录 ubuntu16.04 系统,搭建 mpis指令集的 mtk7621 - OpenWRT 交叉编译环境过程,以及验证编译环境,总共分为 5 步 进行,分别是: 编译目标板镜像、配置交叉编译链环境变量、编译测试代码、FTP 下载可执行文件和验证程序运行情况。第一步 编译目标板 openWrt 镜像make menuconfig 选择 toolchain 和 FTP 组件功能<> Package the OpenWrt-based Toolchain 工具链> N原创 2021-06-07 11:42:41 · 2429 阅读 · 5 评论 -
18 --> 详细讲解如何制作 openWRT 的docker 镜像
本文记录 制作openWRT 的 docker 镜像,自动化启动 docker 镜像开启 zabbix-agent 批量监控线路状态。本文使用的环境:主机: ubuntu 16.04openWRT版本: 19.07镜像类型: x86-64分为如下步骤:第一步 安装 dockersudo apt-get install docker.io第二步 编译 openwrt 镜像make menuconfigTarget Images[*] tar.gzmake -j4 V=scx86原创 2021-06-01 17:40:50 · 7191 阅读 · 1 评论 -
17 -> 详解 openWRT 的 gpio 配置关系说明
OpenWRT 系统的 gpio 可用配置为键盘输入、led输出、控制输出等,以 mt7621 为例,相互关系说明如下:第一步 查看设备树配置文件/OpenWrt/mtk7621-19.07$ ls target/linux/ramips/dts/ | grep 7621AP-MT7621A-V60.dtsMT7621.dtsmt7621.dtsi #(1) mt7621 芯片资源的基本配置文件U7621-06-256M-16M.dts # (3)原创 2021-05-29 18:13:22 · 3408 阅读 · 0 评论 -
16 --> openwrt 编译 libevent2 报错误 libevent_pthreads-2.1.so.*
在编译 OpenWrt-19.09 时候,编译过程报错如下:错误内容 libevent_pthreads-2.1.so.*install -d -m0755 /home/robot/OpenWrt/LS1046A-19.07/build_dir/target-aarch64_generic_glibc/libevent-2.1.11-stable/ipkg-aarch64_generic/libevent2-pthreads/usr/libcp -fpR /home/robot/OpenWrt/LS1原创 2021-05-27 16:30:09 · 669 阅读 · 2 评论 -
15 --> OpenWrt 实现双 4G 通道拨号上网、实现负载均衡和主备
第一步 配置 4G 模块参数配置文件路径:robot@ubuntu:~/OpenWrt/mtk7621-19.07/package$ vim base-files/files/etc/board.d/99-default_networkucidef_set_interface 'wwan1'ucidef_set_interface 'wwan2'第二步 在镜像打包前、修改 mwan3 配置文件robot@ubuntu:~/OpenWrt/mtk7621-19.07/package/feeds/原创 2021-05-20 19:04:04 · 2631 阅读 · 0 评论 -
14 --> 搭建 OpenWrt 开发环境编译开源 uboot 源码
第一步编译 openWrt 时选择编译 openwrt-toolchain 工具链;第二步解压 编译好的 toolchain 工具链;robot@ubuntu:~/OpenWrt/mtk7621-19.07$ cd bin/targets/ramips/mt7621/robot@ubuntu:~/OpenWrt/mtk7621-19.07/bin/targets/ramips/mt7621$ sudo tar xjf openwrt-toolchain-ramips-mt7621_原创 2021-05-19 11:16:22 · 1927 阅读 · 0 评论 -
13 --> 制作 OpenWrt X86 image 镜像、导入到 ProxMox 集群
在使用 OpenWrt-X86-image 时,需要部署到Proxmox的生产环境虚机中,以防备忘。导入过程分为如下几步:第一步 把 openWrt-image.vmdk 格式镜像,通过VMware工具转化成 ovf 格式;如何把 OpenWrt 编译镜像安装到 VMware 中,请参考此链接。选择 VMware 的文件–> 导出为 OVF ,选择合适保持文件路径。第二步 使用 qemu 把 OVF 格式镜像、转换成 qcow2 格式的虚拟机;把 OVF 文件拷贝至 Proxmox 主机的原创 2021-04-26 18:22:59 · 815 阅读 · 0 评论 -
12 --> UCI 配置命令说明汇总
UCI是简单、实用、直接了当的。UCI是OpenWrt上面主要的配置用户接口,用来作为主要的系统设置,这些设置通常对设备是至关重要的,例如网络接口、无线设置、远程登陆权限设置等都是通过UCI来实现配置的。他是构建一整套系统的必须部分。(1). 网络常用配置文件汇总表FileDescription/etc/config/dhcpDnsmasq configuration and DHCP settings参考链接:https://oldwiki.archive.openwrt原创 2021-04-21 19:26:51 · 791 阅读 · 0 评论 -
11 --> openWRT 编译 CLI 包错误 undefined reference to symbol ‘dlsym@@GLIBC_2.2.5‘
本篇博客记录 编译 OpenWRT x86-64 的sysupgrade 包出错解决方法,备忘记录。增加 Attended sysUpgrade 包,make menuconfig -> Base system --> <*> auc............ Attended sysUpgrade CLI (EXPERIMENTAL)编译出错信息如下:.......[100%] Linking C executable auc/home/robot/OpenWr原创 2021-02-21 20:17:38 · 1510 阅读 · 0 评论 -
备忘:openWRT 的TFTP方式烧写程序使用记录
备忘:openWRT 的TFTP方式烧写程序使用记录注:此文章为使用备忘记录。1).TFTP 服务器安装及配置参考说明 ubuntu16.04 - 64 $ sudo apt install tftp-hua tftpd-hua $ cat /etc/default/tftpd-hpa # /etc/default/tftpd-hpa TFTP_USERNAME="tftp" TFTP_DIRECTORY="/var/lib/tftpboot" #服务器文件存放的位置原创 2020-11-12 10:01:11 · 1258 阅读 · 0 评论 -
10 --> 制作 OpenWRT 镜像 和 VMware 安装与使用
一、制作VMware 的 OpenWRT 镜像文件环境说明:ubuntu 16.04 、OpenWRT编译X86的输出文件;内容如下:(1). 安装 镜像转换工具 qemu-imgsudo apt-get install qemu-utils(2). 把 *.img 转换成VMware的硬盘文件$ sudo qemu-img convert -f raw openwrt-19.07-snapshot-unknown-x86-64-combined-squashfs.img -O vmdk ope原创 2021-02-12 09:33:41 · 2321 阅读 · 0 评论 -
09 --> OpenWRT 的 linux内核patch方法,添加5G模块驱动
1.准备内核源码树使用如下命令make target/linux/clean V=s QUILT=1make targe/linux/prepare V=s QUILT=12.进入kernel源码树目录/OpenWrt/LS1046A-19.07/build_dir/target-aarch64_generic_glibc/linux-layerscape_armv8_64b/linux-4.14.200$ lsarch certs CREDITS Documentation f原创 2021-01-23 12:47:39 · 3188 阅读 · 1 评论 -
08 --> OpenWRT 解决 /usr/lib/liblua.so: undefined reference to `asinh‘ 编译错误
移植 FRR 包时,缺乏依赖库文件,调整编译选项配置为glibc 模式,再次编译时报错内容如下cd /home/robot/OpenWrt/LS1046A-19.07/build_dir/target-aarch64_generic_glibc/libuhttpd-nossl/libuhttpd-2.2.2/example && /home/robot/OpenWrt/LS1046A-19.07/staging_dir/host/bin/cmake -E cmake_link_script原创 2021-01-21 11:54:56 · 682 阅读 · 0 评论 -
7 --> UCI 接口的应用
一、 UCI 简介统一配置接口(Unified Configuration Interface,UCI),是OpenWrt成功的关键技 术之一,已经移植支持数千个软件。它采用纯文本文件来保存配置,并提供命令 行和 C 语言编程调用接口进行管理。UCI的目的在于集中OpenWrt系统的配置。这样每一个开发人员只需学习一次即可, 减少了学习成本。UCI是简单、实用、直接了当的。UCI是OpenWrt上面主要的配置用户接口,用来作为主要的系统设置,这些设置通常对设备是至关重要的,例如网络接口、无线设置、远程登原创 2021-01-20 12:52:40 · 822 阅读 · 0 评论