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

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

简述

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

  • 核心特点

    可写文件系统:采用OverlayFS与SquashFS/JFFS2结合,支持软件包自由扩展,无需重新编译固件 。

    模块化设计:通过OPKG包管理系统(类似APT)管理超过3000个软件包,支持动态加载驱动和功能插件 。 ‌

    开源协议:遵循GPL协议,代码基于Linux内核、BusyBox等开源项目 。 ‌

  • 应用场景

    路由器:支持IPv6、动态防火墙、多WAN口等高级功能,适用于家用或企业级网络 。 ‌

    嵌入式设备:广泛用于工控、智能家居、VOIP设备等,提供定制化开发环境 。 ‌

openwrt官网
https://openwrt.org/

编译环境安装依赖库

安装编译需要的依赖库:

bash 复制代码
sudo apt-get update

sudo 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

bash 复制代码
git clone  https://git.openwrt.org/openwrt/openwrt.git

cd openwrt
git branch -a # 查看远端分支
git checkout openwrt-24.10 # 切换到指定版本分支,这里使用最新版本

编译源码

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

安装LUCI

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

bash 复制代码
./scripts/feeds update packages luci
./scripts/feeds install -a -p luci

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

编译配置

bash 复制代码
make defconfig # 生成默认配置文件
make menuconfig # 配置主板

配置开启uhttpd

bash 复制代码
-> Network                
	-> Web Servers/Proxies   
  	<*> uhttpd

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

bash 复制代码
LuCI -->
          Collections -->
               < * > luci
          Applications-->
              <* > luci-app-ddns
              <* > luci-app-firewall
              <* > luci-app-ntpc
              <* > luci-app-samba 
<* > luci-app-uhttpd
          Themes-->全选
  • 编译固件
bash 复制代码
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地址

bash 复制代码
scp  openwrt-xxx-squashfs-sysupgrade.bin root@192.168.1.1:/tmp/

使用sysupgrade命令升级设备

bash 复制代码
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文件目录结构:

bash 复制代码
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
相关推荐
starvapour4 小时前
Ubuntu的桌面级程序开机自启动
linux·ubuntu
哇哈哈&5 小时前
gcc9.2的离线安装,支持gcc++19及以上版本
linux·运维·服务器
bubiyoushang8886 小时前
基于STM32F103与A3988驱动芯片的两相四线步进电机控制方案
stm32·单片机·嵌入式硬件
___波子 Pro Max.6 小时前
Linux快速查看文件末尾字节方法
linux
Caster_Z7 小时前
WinServer安装VM虚拟机运行Linux-(失败,云服务器不支持虚拟化)
linux·运维·服务器
少废话h8 小时前
Redis主从与集群搭建全指南
大数据·linux·redis·mysql
Cheadmaster8 小时前
20252820_进程管理实验
linux
model20059 小时前
Alibaba linux 3安装LAMP(5)
linux·运维·服务器
哇哈哈&9 小时前
安装wxWidgets3.2.0(编译高版本erlang的时候用,不如用rpm包),而且还需要高版本的gcc++19以上,已基本舍弃
linux·数据库·python
bai5459369 小时前
STM32 备份寄存器
stm32·单片机·嵌入式硬件