Home 树莓派安装 OpenWrt
Post
Cancel

树莓派安装 OpenWrt

最近家里网络不给力,加上树莓派吃了很久的灰,就给它刷了个 OpenWrt 当旁路网关用。

OpenWrt (from open wireless router) is an open-source project for embedded operating systems based on Linux, primarily used on embedded devices to route network traffic.

OpenWrt 是基于 Linux 的开源的嵌入式操作系统,主要用在嵌入式设备上用于路由网络流量。

文档

如何给树莓派安装 OpenWrt,网上已经有大佬做好了(向大佬致敬),教程和文档都清晰明了,以下是链接:

  1. coolsnowwolf/lede,Lean 大的 OpenWrt 源码,喜欢折腾的朋友可以按照 README 编译自己的固件,没实力也不想折腾的话可以直接第二步找 SuLingGG。
  2. SuLingGG/OpenWrt-Rpi,成品 OpenWrt 固件,树莓派 1B-4B 全部有对应固件,按下边 3 篇贴子操作即可:

个人安装记录

  1. 从 SuLingGG 提供的固件列表中选择 Lean 的版本下载,并使用 ecther 烧录到 SD 卡(使用 Raspberry Pi Imager 会报错)。

  2. 上电启动树莓派,等待 2-3 分钟系统安装完成后,通过无线方式连接到热点 OpenWrt,在浏览器中输入:192.168.1.1,用户名:root,密码:password。(如果访问有问题,可以检查下 wifi 的配置,调成 dhcp 应该就可以访问了)

  3. 登录成功后,更改 LAN (网络 -> 接口 -> LAN)的 IPv4地址为主路由同一网段地址。譬如,主路由地址为 192.168.0.1,则 LAN 的地址应为 192.168.0.x,又或者主路由的地址为 192.168.31.1,则 LAN 的地址应为 192.168.31.x。配置好后点击“保存&应用”,这时主机跟 OpenWrt 的连接会断开,需要在浏览器中重新访问更改后的 ip(即 192.168.0.x)。

  4. 重新连接好之后,需要再进行其它配置,网关:主路由的 ip;广播:主路由同网段,最后一段改为 255;DNS:主路由的 ip;页面底部:忽略此接口/不在此接口提供 DHCP 服务。配置好后点击“保存&应用”。

  5. 如果不需要括容,就可以直接进行下一步了。对不同的 img,括容方式不同。ext4 需要 Linux 的 Gparted 工具。我安装的是 Squashfs,要做的操作如下:

    • 在“系统 - 磁盘管理”中找到 SD 卡设备(/dev/mmcblk0),点击“修改”

    • 在分区信息中可以看出 SD 卡中有 xxG 的空闲空间,点击右侧“新建”按钮新建分区

    • 分区新建完成,点击“格式化”

    • 选择 ext4 分区作为新分区的文件系统

    • 分区已成功格式化为 ext4 格式

    • 进入 OpenWrt 的 TTYD 或 SSH,进行迁移文件操作

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      
      # 将刚刚新建的 /dev/mmcblk0p3 分区挂载至 /mnt
      root@OpenWrt:/# mount /dev/mmcblk0p3 /mnt
           
      # 查看分区挂载情况
      root@OpenWrt:/# lsblk
      NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
      loop0         7:0    0 760.8M  0 loop /overlay
      mmcblk0     179:0    0  14.9G  0 disk 
      ├─mmcblk0p1 179:1    0    64M  0 part /boot
      ├─mmcblk0p2 179:2    0   960M  0 part /rom
      └─mmcblk0p3 179:3    0  13.8G  0 part /mnt
           
      # 将 /overlay 分区下的所有文件拷贝至刚刚建立好的分区内
      root@OpenWrt:/# cp -f -a /overlay/. /mnt
           
      # 查看是否拷贝成功
      root@OpenWrt:/# ls -a /mnt
      .           ..          .fs_state   lost+found  upper       work
      root@OpenWrt:/# ls -a /overlay
      .          ..         .fs_state  upper      work
           
      # 同步文件
      root@OpenWrt:/# sync
           
      # 卸载 /dev/mmcblk0p3 分区
      root@OpenWrt:/# umount /mnt
      
    • 前往“系统 - 挂载点”,点击“生成配置”

    • 在“挂载点”中我们可以看到刚刚创建好的 ext4 分区 /dev/mmcblk0p3,点击右方“修改”

    • 在接下来的界面中,“启用此挂载点”并选择“作为外部 overlay 使用”,点击“保存&应用”

    • 在“系统 - 挂载点”页面下,确认挂载点已启用 (打钩),并确认挂载点为 /overlay,点击下方“保存&应用”,之后重启 OpenWrt

    • 验证分区扩容成功

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      
      root@OpenWrt:/# lsblk
      NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
      loop0         7:0    0 760.8M  0 loop /mnt/loop0
      mmcblk0     179:0    0  14.9G  0 disk 
      ├─mmcblk0p1 179:1    0    64M  0 part /boot
      ├─mmcblk0p2 179:2    0   960M  0 part /rom
      └─mmcblk0p3 179:3    0  13.8G  0 part /overlay
           
      root@OpenWrt:/# mount | grep overlay
      /dev/mmcblk0p3 on /overlay type ext4 (rw,relatime)
      overlayfs:/overlay on / type overlay (rw,noatime,lowerdir=/,upperdir=/overlay/upper,workdir=/overlay/work)
      overlayfs:/overlay on /opt/docker type overlay (rw,noatime,lowerdir=/,upperdir=/overlay/upper,workdir=/overlay/work)
           
      root@OpenWrt:/# df -h | grep overlay
      /dev/mmcblk0p3           13.5G     42.2M     12.8G   0% /overlay
      overlayfs:/overlay       13.5G     42.2M     12.8G   0% /
      overlayfs:/overlay       13.5G     42.2M     12.8G   0% /opt/docker
      
  6. 树莓派关闭 wifi 后通过网线接入主路由的 LAN。

  7. 客户端的配置:IP 获取方式改为 “静态(或手动)”,DNS:填写为树莓派 Lan 口 IP,网关/路由器:填写为树莓派 Lan 口 IP。

以上就是树莓派安装 OpenWrt 的过程,致此旁路网关已经可以工作了。

如果不想直接在树莓派中装 OpenWrt,SuLingGG 还提供了在 Docker 中运行 OpenWrt 的方式:在Docker 中运行 OpenWrt 旁路网关

下边我的安装中还有额外的两步用来配置网络共享:

  1. SD 卡比较大又括容了的话,其实可以利用括容后的空间提供 Samba 服务。首先,在“网络存储 -> 网络共享 -> 编辑模版”中用 # 号注释掉 invalid users = root 使 root 用户可以用于 Samba 服务访问。其次,在命令行中输入 smbpasswd -a root 设定密码并把 root 用户添加到 Samba 中,之后就可以在不同设备上访问 Samba 服务了。Openwrt 下 Samba 服务涉及如下配置文件:

    • /etc/samba/smb.conf.template:存放公共配置(模版)
    • /etc/config/samba:UCI 配置
    • /etc/samba/smb.conf:Samba 服务运行时加载的文件,由前两个文件组合而成
  2. 阿里云盘 WebDAV 服务,主要使用场景为配合支持 WebDAV 协议的客户端 App 如 InfusenPlayer 等实现在电视上直接观看云盘视频内容, 支持上传文件,但受限于 WebDAV 协议不支持文件秒传。使用方式推荐 docker:

    1
    2
    3
    4
    5
    6
    
    docker run -d --name=aliyundrive-webdav --restart=unless-stopped -p 8080:8080 \
      -v /etc/aliyundrive-webdav/:/etc/aliyundrive-webdav/ \
      -e REFRESH_TOKEN='your refresh token' \
      -e WEBDAV_AUTH_USER=admin \
      -e WEBDAV_AUTH_PASSWORD=admin \
      messense/aliyundrive-webdav
    

    refresh token 在登录阿里云盘后,打开开发者工具:storage -> local storage -> token 中找出 refresh_token。

This post is licensed under CC BY 4.0 by the author.