自编译 OpenWrt R9.1.1 固件,支持 Raspberry Pi 2B/3B/3B+

文章更新

  20190107 初次成文

写在前面

  OpenWrt 是适合于嵌入式设备的一个 Linux 发行版,今天小苏为大家带来的是自己编译的 OpenWrt 固件,为了尽可能兼容更多树莓派设备,小苏选择了 32位 平台进行编译,因此此固件适用于 树莓派 2B/3B/3B+。

  编译 OpenWrt 采用的源码来自 Lean 大的 Openwrt 项目:

  https://github.com/coolsnowwolf/lede

  在此特别感谢 Lean 大~

固件说明

  由于树莓派的性能要比普通的路由器高很多,并且树莓派采用 SD 卡作为存储介质,所以在编译时不必过多考虑固件大小及插件对设备造成的影响 ,为了更有效地利用树莓派“优秀”的硬件性能(当然是相对于普通路由器而言) ,小苏在编译时采用了比较“激进”的方式:尽可能编译“更多”插件以满足使用者各种各样的需求。

  此固件在编译时加入了大多数有线网卡支持,同时默认支持板载网卡,如果插入网卡后出现不兼容的情况(在“网络 - 接口 - 添加新接口”界面没有出现新网卡)请自行谷歌并安装适用于此网卡的驱动(前提是此网卡有驱动,小苏的绿联有线网卡,芯片 AX88772 完美支持)。

  为了方便使用者配置和使用,固件在编译时加入了一些常用工具,比如 adb, bzip, gzip, htop, nano, resize2fs, tmux, unzip, vim,固件原生支持 exfat, ext4, f2fs, fat32, ntfs, squashfs, fuse 等文件系统。并且加入了 automount 支持,即外部可存储设备插入 USB 接口时,若文件系统支持,可以自动挂载设备。

  为了满足使用者的各种需求,小苏为大家提供了两种格式的固件:ext4 格式和 squashfs 格式。这两种固件的区别是,ext4 格式的固件更适合熟悉 Linux 系统的用户使用,可以比较方便地调整 ext4 分区的大小,而 squashfs 格式的固件适用于“不折腾”的用户,其优点是可以比较方便地进行系统还原(你没听错,在控制面板里面点击一下“恢复出厂设置”按钮就可以回到刚刷入固件时的状态了,就像长按路由器后面的 Reset 按钮的效果一样),哪怕你一不小心玩坏固件,只要还能进入控制面板,就可以很方便地进行“系统还原操作”。相应的,在编译固件时小苏为 ext4 或 squashfs 根分区留出了 500M 的空间,一般来说这 500M 根分区空间足够你各种折腾了(毕竟固件本身才不到 100M),SD卡 剩余的空闲空间可以在 Windows 下使用 DiskGenius 新建一个分区继续折腾。当然,如果 500M 的根分区空间还是不够你折腾,你也可以选用 ext4 格式的固件刷入 SD卡 然后使用 fdisk(需要 opkg install fdisk 安装) e2fsck 和 resize2fs 命令来扩展根分区(方法详见参考资料最后一项)。

初始设置

  刷入固件通电开机后,稍等 30秒 你将可以搜索到一个 SSID 为: Openwrt 的 WIFI 热点,连接此热点,在浏览器地址栏输入:

  http://192.168.1.1

  即可进入 Luci 控制面板。同时你也可以选择用网线连接树莓派和电脑,在浏览器输入相同的地址来进入控制面板。登陆控制面板时用户名默认为 root,密码默认为 password。登陆面板时,你会发现控制面板采用 https 作为连接协议,这可能会导致浏览器弹出“https证书不被信任”的提示,为了解决这个问题,你可以在“系统 - WEB 管理”中进行如下设置,保存并应用,清除浏览器缓存后即可使用默认的 http 协议访问控制面板:

WEB管理界面

网口设置

  刷入固件后树莓派的网口默认为 Lan 口,如果你有拨号需求或者需要将树莓派设置为子路由的话,需要将树莓派的网口改为 Wan 口,配置方法是 SSH 或者控制面板中的 TTYD 网页终端(系统 - TTYD 终端)连接到树莓派(用户名和密码与控制面板相同),使用 nano或者vim编辑 /etc/config/network文件,将 Lan 配置中的 option ifname行注释,并且在文件下方加入如下 Wan 配置,重启后生效(好像不重启也是可以的):

config interface 'lan'
        option type 'bridge'
        # option ifname 'eth0'        # 注释该行
        option proto 'static'
        option ipaddr '192.168.1.1'
        option netmask '255.255.255.0'
        option ip6assign '60'

config interface 'wan'
        option proto 'dhcp'
        option ifname 'eth0'

  值得一提的是,如果你是使用网线方式连接电脑和树莓派的话,当你把树莓派的网口改为 Wan 口后,你将无法通过浏览器进入 Luci 控制面板,但是使用无线方式连接到树莓派还是可以正常进入控制面板的,所以当你发现电脑无法进入控制面板后,不要惊慌,拔掉网线连接树莓派的无线热点即可正常进入控制面板~

开启神秘功能

  本固件自带 ShadowSocksR 客户端,但是因为蜜汁原因,刷好固件后 ShadowSocksR 的控制面板默认隐藏,我们可以在 SSH 或者 TTYD 终端中执行以下命令开启这个十分重要的功能(来自:https://github.com/coolsnowwolf/lede/issues/881#issuecomment-444450163

echo 0xDEADBEEF > /etc/config/google_fu_mode

ShadowSocksR控制面板

功能展示

  看到这里,你可能会说:小苏你自卖自夸了这么长时间,这个固件究竟有哪些功能呢?别着急,有图有真相:

控制面板首页

控制面板首页

软件包控制面板

软件包控制面板

ShadowSocksR Plus+

ShadowSocksR Plus+ (同时支持 V2Ray 和 SS)

Adbyby Plus+

Adbyby Plus+ 去广告程序

Frpc 内网穿透客户端

Frpc 内网穿透客户端

Aria2

Aria2 配置

Aria2 Web-UI

Aria2 Web-UI

Samba

Samba 4.0

Transmission

Transmission

Transmission Web 界面

Transmission Web Interface

SSR Python 服务器

SSR Python 服务器

Turbo ACC 网络加速

Turbo ACC 网络加速(支持 BBR 加速)

多线多拨

多线多拨

负载均衡

负载均衡

统计图表

统计图表

固件功能列表

OpenWrt
├── 状态
│  ├── 内核日志
│  ├── 实时信息
│  ├── 概览
│  ├── 系统日志
│  ├── 负载均衡
│  ├── 路由表
│  ├── 进程
│  ├── 释放内存
│  └── 防火墙
├── 系统
│  ├── LED 配置
│  ├── TTYD 终端
│  ├── Web 管理
│  ├── 双分区启动切换
│  ├── 启动项
│  ├── 备份升级
│  ├── 定时重启
│  ├── 挂载点
│  ├── 文件传输
│  ├── 时间同步
│  ├── 管理权
│  ├── 系统
│  ├── 自定义命令
│  ├── 计划任务
│  ├── 软件包
│  └── 重启
├── 服务
│  ├── ACME certs
│  ├── Asterisk
│  ├── CalDAV/CardDAV
│  ├── DNSCrypt-Proxy
│  ├── Dnsforwarder
│  ├── Frp 内网穿透
│  ├── KMS 服务器
│  ├── MWAN3 分流助手
│  ├── OpenConnectVPN
│  ├── OpenVPN
│  ├── PPPoE 穿透
│  ├── Privoxy
│  ├── RecursiveDNS
│  ├── RP-PPPoE-Server
│  ├── ShadowSocksR Plus+
│  ├── Shairplay
│  ├── Squid
│  ├── Tinyproxy
│  ├── Travelmate
│  ├── udpxy
│  ├── uHTTPd
│  ├── UPnP
│  ├── V2Ray Pro
│  ├── WatchCat
│  ├── WiFi 计划
│  ├── 上网时间控制
│  ├── 动态 DNS
│  ├── 广告屏蔽大师 Plus+
│  ├── 网络代理
│  ├── 网络共享
│  ├── 网络唤醒
│  ├── 迅雷快鸟
│  └── 阿里 DDNS 客户端
├── 网络存储
│  ├── aMule设置
│  ├── Aria2配置
│  ├── FTP服务器
│  ├── miniDLNA
│  ├── MJPG-streamer
│  ├── Transmission
│  ├── USB打印服务器
│  └── 硬盘休眠
├── VPN
│  ├── N2N v2 VPN
│  ├── OpenVPN 服务器
│  ├── PPTP VPN 服务器
│  ├── SSR Python 服务器
│  └── ZeroTier
├── 网络
│  ├── AHCP 服务器
│  ├── CloudShark
│  ├── DHCP/DNS
│  ├── IP/MAC 绑定
│  ├── QoS
│  ├── SQM-QoS
│  ├── Turbo ACC 网络加速
│  ├── 主机名
│  ├── 动态 DNSPOD
│  ├── 多线多拨
│  ├── 接口
│  ├── 无线
│  ├── 访客网络
│  ├── 诊断
│  ├── 负载均衡
│  ├── 配置诊断
│  ├── 防火墙
│  └── 静态路由
├── 带宽监控
│  ├── 备份
│  ├── 实时流量监测
│  ├── 显示
│  └── 配置
├── 统计
│  ├── 图表
│  └── 设置
└── Asterisk
   ├── Call Routing
   ├── MeetMe
   ├── Phones
   ├── Trunks
   └── Voicemail

下载和安装

  下载固件到本地并解压得到 img 固件文件,文件名中带有 ext4 字样的为 ext4 固件,文件名中带有 squashfs 字样的为 squashfs 格式固件,即使固件格式不同,但是它们刷入 SD卡 的方法是一样的,在 Windows 下你可以使用 Win32 Disk Imager或者 Etcher 将 img 固件写入 SD卡,在 Linux 下你可以使用 dd命令写入。

固件下载

  蓝奏云:
  链接:https://www.lanzous.com/b550537

  百度网盘:
  链接:https://pan.baidu.com/s/1kk9MX5n3B936z3Lw-h82TQ
  密码: 7gzf

参考资料

  OpenWrt By Lean · coolsnowwolf/lede - GitHub:
  https://github.com/coolsnowwolf/lede

  不显示S-SR-plus · Issue #881 · coolsnowwolf/lede - GitHub:
  https://github.com/coolsnowwolf/lede/issues/881#issuecomment-444450163

  树莓派 3(Raspberry Pi 3)安装 Openwrt + shadowsocks + ChinaDNS - 简单
  http://www.wzero.net/?p=137

  树莓派 3 做路由并负载 SSR - 瓜地
  https://ljkgpxs.xyz/2018/01/24/raspberry3b-router-run-shadowsocksr/

  Resize the root partition - Banoffee Pi Server:
  http://banoffeepiserver.com/resize-the-root-file-system-partition.html

已有 12 条评论
  1. Icccc

    更新啦

    1. 也许年后有时间会编译一个新版的出来(咕咕咕)?

  2. vgytgb415

    Hi,请问ss+里面google和服务器端口检测均正常,但是无法ping通google是为什么....谢谢

    1. 不太清楚...如果 Google 检测正常的话按理说可以用浏览器正常访问谷歌。 Ping 不通的话不是很清楚...

    2. vgytgb415

      小白也是第一次碰这玩意....是不是除了ShadowSocksR Plus+这个服务,还有其他服务要开的?

    3. 按理说只开 SSR Plus+ 就可以...

  3. 笑箜篌

    这就是软路由吗?(发出了无知的声音)

    1. 原理上来说应该算的~(我也不太懂嘿嘿嘿)

  4. 纨绔子弟

    这个要不要在网络接口中添加wan口?

    1. 看你的需求了...默认情况下树莓派自带的网口是 Lan 口。如果你要是把树莓派用作软路由的话需要把网口改成 Wan 口,如果只是为了使用其中的服务(比如 aria2 离线下载)那么就不用改。具体的还要根据你的使用场景决定。

  5. 纨绔子弟

    ssr plus有没有更新啊,不知道什么时候支持v2订阅,还有能不能出个编译固件的教程?

    1. 固件的新特性和 Lean 大维护的 Github 仓库有关...我只是编译 + 发布,不负责开发工作的,V2 订阅需求比较小众,所以我觉得实现也是有生之年了。现在先手动添加节点凑合吧~至于编译教程早就想写了,可能开学有时间写一个?(但是也有可能咕咕掉),如果我没鸽而是真的写出来了我会在这层回复你的~

添加新评论