树莓派4B 折腾记 - Openwrt

Raspberry Pi 4B – OpenWRT

image-20231105154331378

前言

使用的设备:Raspberry Pi 4B (2GB RAM)

【2023-11-06】的折腾内容:

  • 刷回官方系统(现在官方系统有刷机工具了,Raspberry Pi Imager 选一选无脑刷就行)

  • 一行命令装 RaspAP:

    • 装了这个会把防火墙扬了,再开防火墙 RaspAP 会寄(也得研究防火墙配置了,对一堆需求的本懒人不友好)
  • 根据自身的需求分析一顿还是选择了直接刷 OpenWrt,需要的功能软件啥的 OpenWrt 都有软件包能干

  • 本人需求:

    • 组建一个个人局域网(有线+无线)(主机+移动设备):树莓派自带的就一个网口,要做 WAN 口用,自带无线网卡做 AP;再买一个 USB RJ45 转接口做 LAN 口
    • 挂载一个硬盘用来做 nas 当备份盘:luci-app-samba4
    • 自动接入网络,并能够根据网络通断状况调用脚本自动认证登录:luci-app-watchcat
    • 能网络唤醒主机并远程连接:luci-app-wolplus + NAT 端口转发
    • 接入私人局域网,在外访问管理页面:luci-app-zerotier
  • 刷系统,找工具,安装,配置,折腾一顿突然 DHCP 跟 DNS 寄了(原因未知)

    • 研究半天还是解决不了 (👴🏻属实搞不明白服务都开着就是不给 DHCP 响应
  • 于是决定重刷解决一切稀奇古怪问题

【2025-05-28更新】:由于原来的 OpenWRT 固件出现了稀奇古怪的问题,所以再次准备重新刷固件:

  1. 每次开机热点无法自动启动,需要手动重启网卡才能正常
  2. 树莓派本身 DNS 解析异常,能 ping 通外网IP,无法解析域名(但连接热点的设备网络正常)
  3. docker 容器无法访问外网(外部网关无法ping通),重置网络、重启无效

固件

在经历了找固件 -> 刷固件 -> 改配置 -> 寄 -> 找固件 的几轮循环后,👴🏻终究还是选择了自己编译😓

Github 仓库:https://github.com/coolsnowwolf/lede

跟随 LEDE 仓库的 README 编译命令说明操作即可:装依赖包 -> 下载源代码 -> 更新 feeds -> 选择配置 -> 下载 dl 库 -> 编译固件

主要关注选择配置(make menuconfig)这里,树莓派 4B 使用的是 Broadcom BCM2711,因此需要:

  • Target System 选择 Broadcom BCM27xx
  • Subtarget 选择 BCM2711 boards
  • Target Profile 选择 Raspberry Pi 4B

image-20250528172307031

Target Images 中指定内核以及根文件系统的大小(根据实际SD卡以及个人需求设置)。

其他的一些配置可以参考:https://www.bilibili.com/opus/489272396506904722

再者需要注意下载 dl 库的时候要开代理

然后便是漫长的编译。。。

关于最终输出的镜像文件(存放在 lede/bin/targets/bcm27xx/bcm2711 目录中):

1
2
3
4
├── openwrt-bcm27xx-bcm2711-rpi-4-ext4-factory.img.gz
├── openwrt-bcm27xx-bcm2711-rpi-4-ext4-sysupgrade.img.gz
├── openwrt-bcm27xx-bcm2711-rpi-4-squashfs-factory.img.gz
├── openwrt-bcm27xx-bcm2711-rpi-4-squashfs-sysupgrade.img.gz
对比项 squashfs ext4
文件系统类型 压缩只读 + OverlayFS 可写覆盖层 完全可读写
数据持久化方式 通过 /overlay 分区保存配置和新增文件 直接修改系统分区文件
安全性 ✅ 系统核心文件只读,不易被破坏 ⚠️ 系统文件可修改,误操作风险较高
升级便利性 ✅ 直接刷写新固件,保留配置 ⚠️ 需手动备份配置或重新设置
适用场景 路由器/网关、长期稳定运行 开发调试、频繁修改系统、挂载外部存储
存储空间占用 ✅ 压缩格式,节省空间 ⚠️ 未压缩,占用更多空间
SD卡寿命影响 ✅ 写入量少,延长寿命 ⚠️ 频繁写入可能缩短寿命(需搭配高耐久存储)
推荐用户 普通用户、网络设备部署 开发者、高级用户、需要深度自定义

没啥特殊需求就直接刷 openwrt-bcm27xx-bcm2711-rpi-4-squashfs-factory.img.gz 了(如果是升级则选择 openwrt-bcm27xx-bcm2711-rpi-4-squashfs-sysupgrade.img.gz

刷!

工具:

配置

  • 地址:192.168.1.1
  • 用户名:root
  • 密码:password

主题

  • 首先这个主题,感觉还是 Argon 好看:https://github.com/jerrykuku/luci-theme-argon

  • 其次主题有 bug – 换成 Design 主题之后,刷新访问就直接卡崩了,CPU 狂飙

    • 还好 SSH 服务正常, 可以进去修改 /etc/config/luci 中的 option mediaurlbase 设置

Docker

在树莓派上可以跑几个容器用来折腾好玩的:

  • idootop/mi-gpt : 用来给小爱音箱接入大语言模型
  • homeassistant/home-assistant:latest : 折腾智能家居自动化

插件推荐

  • luci-app-diskman 👉 https://github.com/lisaac/luci-app-diskman/
    • 磁盘管理
  • luci-app-samba4
    • SMB 文件共享:samba4 支持兼容 MacOS (配置 TimeMachine 更简单了)
  • luci-app-ddns-go
    • ddns-go 的 openwrt 插件
  • luci-app-wol
    • Wake On Lan 网络唤醒
  • luci-app-pushbot
    • 全能推送 (IOS 上使用 Bark 推送很香)
  • luci-app-watchcat
    • 可以配合自动登录校园网脚本实现掉线自动重新登录
      • 检测到外网主机无法 ping 通时自动执行脚本

【2023-11-06】安装命令存档

1
opkg update && opkg install ca-certificates zsh curl git-http vim-full luci-app-ddns-go luci-app-netdata luci-app-nginx-manager luci-app-kodexplorer luci-app-watchcat luci-app-zerotier luci-app-pushbot luci-app-wolplus luci-app-frpc luci-app-openvpn-client luci-app-diskman luci-app-unblockmusic luci-app-ttyd luci-app-vlmcsd luci-app-uugamebooster luci-app-wrtbwmon luci-app-ttyd

踩坑

  • 编译安装

    • 选择 luci-app-samba4-server 时需要确保 Network -> Filesystem -> samba4-libs 是选中的
    • samba36-serversamba4-server 不能同时选中安装
  • 刷机完成建议先连接无线热点进管理页去配置

    • 默认 wlan0 和 eth0 都属于 br-lan 网络
  • samba4 指定用户需要先在 /etc/passwd 中添加

    • 然后 smbpasswd -a username 添加 samba 用户
    • 勾选强制 root 才有权限写
  • 如果遇到 netdata 报错:Access to file is not permitted: /usr/share/netdata/web//index.html

  • 关于开启 ipv6: https://doc.openwrt.cc/1-General/5-IPV6-Guide/

  • 🧨 莫名其妙突然 DHCP 和 DNS 失效 👉【2025-05-28】重新刷固件

  • 🔥 重启遇到无线网卡第一时间无法识别导致 AP 无法开启 👉 【2025-05-28】重新刷固件

挖坑

  • IPv6 【2025-05-28:继续拖着吧,目前还是用不到】