关于Openwrt-squashfs固件扩容以及安装docker

一、openwrt介绍及选择

OpenWrt是一个针对嵌入式设备的路由器系统( Linux 操作系统), 例如:windows操作系统
常见固件:官方openwrt、immortalwrt、Lean固件、istore、等等

immortalwrt和Lean是国内大部分用户的固件选择,也为大家更方便的使用openwrt做出了卓越贡献!
感谢天灵、Lean等大佬们的付出。

官方openwrt:应用商店在国外,没有科学插件,可以看作官方正版windows11,更新及时,但是软件商店需要科学,以及安装科学插件比较麻烦、OpenWrt 22.03版本开始使用基于 nftables 的 firewall4 防火墙

immortalwrt:从官方基础上做了针对中国用户的优化比如添加翻墙插件以及驱动方面的优化,商店无需科学即可使用,跟随官方更新,改动较少。可以看作windows中国特供版,不足是新版本舍弃了旧版防火墙可能对老插件兼容不是很好, 23.05版本开始 firewall4 防火墙,之前有几个版本为了兼容性混用两种防火墙

Lean的固件:在官方较早的一个分支版本上开发,没有跟随官方版本更新,但对大部分插件兼容性很好,应用商店不够完善,适合编译,可以看作windows7修改版,不足之处暂时不兼容新的插件比如homeproxy和MihomoTproxy。iptables 的 firewall3 防火墙

istore:据说是从lean的基础上更改的,不确定,也就有了lean固件的特性,弥补了应用商店部分,对新手较友好,iptables 的 firewall3 防火墙

其他固件:基本都是从上述分支更改的,就相当于windows的各种修改版。

我个人建议:如果你没有特别多的插件以及老的插件使用需求,尽量选择官方openwrt或者immortalwrt,
如果你喜欢折腾需要很多插件,但是不太使用较新的插件比如homeproxy、可以自行编译Lean,或者直接使用Lean自动构建的固件。

官方版本:https://firmware-selector.openwrt.org/
immortalwrt:https://firmware-selector.immortalwrt.org/
Lean官方构建:https://github.com/coolsnowwolf/lede/actions

不建议使用网上下载的第三方固件,无论他多么有名都是从上述源码基础上编译而来的
你无法确定它是否夹杂私货是否安全稳定。

另外不要太在意固件名字 以及皮肤样式,固件名字是可以编译时或者系统设置里随意定义的,皮肤也是随时可以更换的。
openwrt项目本身是命令行运行、没有任何皮肤界面的,官方默认的黑色主题虽然简陋但是非常稳定,不要用名字是否好听,皮肤是否好看来辨别一个固件的好坏。

固件格式选择:如果是X86架构软路由尽量选择EXT4, 唯一缺点不能重置,如果有经常重置需求选择SQUASHFS格式

二、固件扩容

  • 安装前直接扩容镜像(仅对squashfs固件有效)

    扩容镜像时需要linux系统:可以是openwrt、debian、ubuntu等

    以下演示在openwrt中扩容,其他linux系统可参考

    在openwrt中执行扩容操作时确认是否具备以下依赖

    1
    2
    3
    4
    5
    which gzip

    which dd

    which parted
    1. 把镜像上传到openwrt根目录(上传位置可自行决定)

    2. 按顺序执行以下命令(命令中镜像的名字根据自己的实际情况填写

      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
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      # 切换到根目录

      cd /



      # 解压缩镜像文件

      gzip -kd immortalwrt.img.gz



      # 解压成功后删除压缩包,方便后面选择文件



      # 扩展镜像文件的大小 (count=500 表示增加 500MB 的空间)

      dd if=/dev/zero bs=1M count=500 >> immortalwrt.img



      # 使用分区工具操作镜像

      parted immortalwrt.img



      # 查看分区情况

      print



      # 调整分区大小 (将第 2 个分区扩展至镜像文件的 100%)

      resizepart 2 100%



      # 查看是否扩展成功

      print



      # 退出分区工具

      quit

    EFI固件在执行扩容过程中会弹出额外选项

    选择ok

    选择Fix

  • 安装后扩容

    • EXT4格式(扩容系统根目录)

      1. 配置openwrt网络

      2. 更新软件商店

      3. 安装 diskman 工具

        image-20241119135152224

      4. 在挂载电设置中禁用自动挂载选项

        image-20241119135225946

      5. 创建一个2GB大小的新分区(扩容大小按需调整),并格式化为ext4文件系统

        image-20241119135423615

image-20241119135447504

image-20241119135605535

  1. 将新分区挂着为系统根目录

    image-20241119135805336

    image-20241119135924148

  2. 复制提示的命令到记事本中。

    1
    2
    3
    4
    5
    6
    7
    mkdir -p /tmp/introot
    mkdir -p /tmp/extroot
    mount --bind / /tmp/introot
    mount /dev/sda1 /tmp/extroot #这里的/dev/sda1 改成实际的分区名称
    tar -C /tmp/introot -cvf - . | tar -C /tmp/extroot -xf -
    umount /tmp/introot
    umount /tmp/extroot
  3. 在 SSH 中执行替换后的命令,回车运行直到完成。

  4. 重启openwrt

    • SQUASHFS格式:(扩容overlay分区)

      前五步与ext4格式相同,请跳转到ext4格式中观看具体操作方法

      1. 配置openwrt网络

      2. 更新软件商店

      3. 安装 diskman 工具

      4. 在挂载点设置中,禁用“自动挂载”选项

      5. 创建一个 2GB 大小的新分区(根据需求调整大小),并将其格式化为 ext4 文件系统

      6. 将新分区挂载为/mnt/sda3 (目的是拷贝overlay文件用,sda3根据自己情况随意命名)

        image-20241119140500652

      7. SSH连接openwrt后执行命令:cp -r /overlay/* /mnt/sda3 (将原overlay下的配置拷贝至新分区)

      8. 查看新分区目录是否拷贝成功

        image-20241119140838777

        SSH工具为 MobaXterm 下载密码:h2oy

      9. 删除刚刚的/mnt/sda3 挂载

        image-20241119141121275

      10. 将新分区重新挂载为overlay

      11. 重启openwrt

以上,openwrt固件的扩容工作就完成了,接下来安装docker

三、安装docker

  1. 来到磁盘管理,新建分区,并格式化为btrfs格式(因为新版的adgroundhome不在支持ext4格式)

  2. 来到挂载点,挂载新分区到 /opt/docker

  3. 来到软件包,更新列表

  4. 搜索docker

  5. 安装 luci-i18n-dockerman-zh-cn

    安装过程中报错无需理会,建议在报错出现时再等待5分钟以上,以免后台程序未完成安装

  6. 重启openwrt

以上docker的安装已完成