当前位置: 首页 > news >正文

openwrt源码编译环境搭建-安装Luci

openwrt系统源码编译环境搭建并安装Luci

  • 简述
  • 编译环境安装依赖库
    • 安装编译需要的依赖库:
    • 下载源码
    • 编译源码

简述

OpenWrt是一个基于Linux内核的开源嵌入式操作系统,专为路由器和嵌入式设备设计,具有高度模块化、可定制性和丰富的网络功能。

  • 核心特点
    可写文件系统:采用OverlayFS与SquashFS/JFFS2结合,支持软件包自由扩展,无需重新编译固件 。
    模块化设计:通过OPKG包管理系统(类似APT)管理超过3000个软件包,支持动态加载驱动和功能插件 。 ‌
    开源协议:遵循GPL协议,代码基于Linux内核、BusyBox等开源项目 。 ‌

  • 应用场景
    路由器:支持IPv6、动态防火墙、多WAN口等高级功能,适用于家用或企业级网络 。 ‌
    嵌入式设备:广泛用于工控、智能家居、VOIP设备等,提供定制化开发环境 。 ‌

openwrt官网
https://openwrt.org/

编译环境安装依赖库

安装编译需要的依赖库:

sudo apt-get updatesudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install binutils
sudo apt-get install patch
sudo apt-get install bzip2
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install make
sudo apt-get install autoconf
sudo apt-get install gettext
sudo apt-get install texinfo
sudo apt-get install unzip
sudo apt-get install sharutils
sudo apt-get install subversion
sudo apt-get install libncurses5-dev
sudo apt-get install ncurses-term
sudo apt-get install zlib1g-dev
sudo apt-get install gawk
sudo apt-get install asciidoc
sudo apt-get install libz-dev
sudo apt-get install libssl-dev
sudo apt-get install ocaml-nox

下载源码

git克隆地址
https://git.openwrt.org/openwrt/openwrt.git

git clone  https://git.openwrt.org/openwrt/openwrt.gitcd openwrt
git branch -a # 查看远端分支
git checkout openwrt-24.10 # 切换到指定版本分支,这里使用最新版本

编译源码

cp feeds.conf.default feeds.conf # 拷贝fedd配置文件,后面有新的src-git可添加到此文件
./scripts/feeds update -a # 更新feed
./scripts/feeds install -a # 安装feed 依赖包

安装LUCI
openwrt默认没有安装LuCI,按装luci

./scripts/feeds update packages luci
./scripts/feeds install -a -p luci

openwrt源码编译环境搭建-安装Luci

  • 简述
  • 编译环境安装依赖库
    • 安装编译需要的依赖库:
    • 下载源码
    • 编译源码

编译配置

make defconfig # 生成默认配置文件
make menuconfig # 配置主板

配置开启uhttpd

-> Network                -> Web Servers/Proxies   <*> uhttpd

配置uhttpd后才可以看到luci, 配置luci选项:

LuCI -->Collections -->< * > luciApplications--><* > luci-app-ddns<* > luci-app-firewall<* > luci-app-ntpc<* > luci-app-samba 
<* > luci-app-uhttpdThemes-->全选
  • 编译固件
make download # 预先获取依赖包(可选但推荐)
make V=s # 编译固件,第一次编译,不推荐使用-j多线程选项
make -j$(nproc) V=s # 编译固件,之后可以使用-j选项加速
  • 烧录固件scp+sysupgrade命令

编译完成在/openwrt/bin/targets/XXX/xxx/目录下生成
文件结尾是-initramfs-kernel.bin用于跑RAM的固件
文件结尾是-squashfs-sysupgrade.bin用于跑升级的固件

用scp命令把xxx-sysupgrade.bin文件拷贝到设备/tmp目录下,root@192.168.1.1 为设备的IP地址

scp  openwrt-xxx-squashfs-sysupgrade.bin root@192.168.1.1:/tmp/

使用sysupgrade命令升级设备

sysupgrade /tmp/ openwrt-xxx-squashfs-sysupgrade.bin
  • 烧录固件tftpd工具
  1. 先把本机IP设置为192.168.1.2,只要和设备的IP在一个段域内即可。
  2. 设备连接串口工具如Xshell,SecureCRT等软件,设备上电后根据提示输入任意键进入Uboot界面,设置当前环境变量(即设置服务器IP和开发板本地客户端IP):
    setenv serverip 192.168.1.2
    setenv ipaddr 192.168.1.1(若与自己路由器ip冲突可以另外设置)
  3. 打开tftpd软件设置下烧写bin文件,以及当前服务器IP地址(即PC的本地IP):
  4. 串口工具uboot界面输入tftp命令传输bin文件到设备指定RAM地址:
    tftp 0x80000000 openwrt-xxx-squashfs-sysupgrade.bin
  5. 擦出Flash原有固件区域:
    erase 0x9f020000 +0x7c0000,
  6. 将tftp命令存储到RAM地址的固件数据写入刚擦除的原固件区域:
    cp.b 0x80000000 0x9f020000 0x7c0000
  7. reset命令重启或重新上电设备

SDK文件目录结构:

openwrt
├── bin # 编译固件存放目录
├── BSDmakefile
├── build_dir
├── config
├── Config.in
├── COPYING
├── dl
├── feeds
├── feeds.conf
├── feeds.conf.default
├── include
├── LICENSES
├── Makefile
├── package
├── README.md
├── rules.mk
├── scripts
├── staging_dir
├── target
├── tmp
├── toolchain
└── tools
http://www.dtcms.com/a/613906.html

相关文章:

  • synchronized全解析:从锁升级到性能优化,彻底掌握Java内置锁
  • FPGA工程师12实战项目-基于PCIe的高速ADC采集项目
  • Linux驱动开发实战指南-中
  • 网站的开发环境是什么个人制作个网站
  • 减速机在不同工况下如何安装才更稳?
  • 哪个网站可以做线上翻译赚钱织梦系统seo网站模板
  • RocketMq面试
  • 如何在建设银行网站预约纪念币黄石有哪些做视觉网站的公司
  • 手机购物网站模板如何做好专业类网站
  • 帮企业建网站wordpress google open sans
  • AI 基础与应用开发专栏搬家说明
  • GeoSeg 框架解析
  • 预训练语言模型(Pre-trained Language Model, PLM)介绍
  • 免费域名注册网站怎么登录网站运营一个月多少钱
  • 抚顺市营商环境建设局网站公众号后台登录
  • Vue2 学习记录--路由
  • Spring Boot 热部署
  • 非易失性存储器·W25Q64使用手册解读
  • 网站统计关键词重庆市建设局网站
  • 分布式缓存技术选型指南
  • mysql主从复制配置
  • html网站模板建站手机建网站推广
  • Vue 项目实战《尚医通》,预约挂号的路由与静态搭建,笔记36
  • 网站建设 风险防控网站首页的head标签内
  • 多用户跨学科交流系统(3):评论模块与 Spring Boot 全局异常处理
  • 前后端分离部署学之思在线考试系统
  • 在树莓派4B上部署ONNX格式的YOLOv8-Pose
  • websocket和传统socket有何差别?是属于一个子集还是完全不同?
  • 双指针问题2(c++)
  • 龙岩市城乡规划建设局网站三只松鼠的网络营销方式