小米路由器 BE7000 Docker、固件实践心得

背景

有一台兄弟 2260d打印机,想通过小米路由器实现局域网共享打印机。
小米BE7000路由器有docker功能,尝试折腾docker。

USB接口拓展的可行性

  • 小米BE7000只有一个USB接口,但是想要同时接入硬盘和打印机,至少需要两个接口,楼主尝试了两种方式:
  1. 直接把笔记本的拓展坞转为USB A口,接上路由器。路由器无法识别拓展坞上的任何设备。
  2. 购买绿联的USB 3.0 HUB。成功识别接入路由器的多个硬盘等设备。

结论:可行。

固件

三方固件

  • 没有找到合适的三方固件实践成功案例。仅能找到一些SSH折腾案例。
  • 给大家分享汇总一下吧:
    [1] https://post.smzdm.com/p/awz2l76g/?sort_tab=hot/#comments
    [2] https://www.right.com.cn/forum/thread-8283638-1-1.html
    [3] https://www.gaicas.com/xiaomi-be7000.html
    [4] https://www.right.com.cn/forum/thread-8294334-1-1.html

小米低版本固件

  • 一开始路由器没折腾,固件版本比较高,应该是24年8月最新的。docker中如果尝试挂载 /mnt/usb-xxxx 会提示权限不够。
  • 需要替换为低版本固件 1.0.122
    • 若版本高于 1.0.122,需要使用 小米路由器修复工具 降级。
    • 下载地址: https://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/rc06/miwifi_rc06_firmware_7821f_1.0.122.bin

Docker

终端的开启

其实默认运行的的 simple-docker 可以认为是整个docker控制的管理者,很多命令直接在这里执行即可。

参考:
[1] https://post.smzdm.com/p/awz2l76g/?sort_tab=hot/#comments
[2] https://post.smzdm.com/p/akk9nvv8/

USB设备驱动问题

  • 小米路由器自带的 simpledocker 系统支持的驱动比较少。
    • 进入终端后使用 lsusb 命令可以看到打印机已经接入。
      • 默认的linux系统不显示打印机名称,但是可以根据windows上运行usbipd list 命令后显示的vid:pid来判断是否识别到。
    • 但是在/dev中并没有 usb相关设备,如:lp, usb等描述
      • 查询了一下相关资料以及GPT,初步怀疑原因是缺少内核模块usblp (是LP不是IP)。
      • 由于缺少 yum、apt、dpkg、deb等包管理工具,折腾内核模块有点过于麻烦,没有继续折腾了。如果有朋友知道如何解决,欢迎留言。
        • 楼主是第一次折腾路由器,对嵌入式设备并不是很了解。根据 https://post.smzdm.com/p/akk9nvv8/ 这个帖子,一些软件的安装貌似是通过 apk 命令来运行的。软件库名称应该是 Alpine。它的仓库源地址估计是 https://dl-cdn.alpinelinux.org/alpine/v3.16/ 这些。

Docker镜像的拉取

这个真的是一把辛酸泪。路由器自带的docker拉取非常不稳定,楼主尝试了几种方式:

  1. 在web管理页面直接输入 docker hub 中的名称拉取 (不带docker pull 命令) ,这种方式在新版本的小米固件中,多次尝试(10次左右),有概率成功。在回退后的 1.0.122 无法成功。
  2. web管理页面有离线导入的选项,楼主通过自己挂代理pull到自己电脑后,通过docker save命令导出到本地,再上传的方式安装。结果同样令人遗憾。不知道什么原因,同样的docker镜像,在线获取成功的一半都正常运行,离线安装的可能会遇到 2 种情况。a). 上传后直接告知异常。 b). 上传后可以运行,但是运行一段时间后自动关闭(大约10秒钟),终端无法连接上。
  3. sinple docker 的终端中,参考 https://post.smzdm.com/p/akk9nvv8/ 替换源,通过修改 /etc/apk/repositories 这个文件后 运行 apk update ,通过 apk add docker-cli 顺利安装上了docker服务。但是 docker pull xxx 依旧失败。报错信息为:

/data # docker pull ydkn/cups
Using default tag: latest
Error response from daemon: Get “https://registry-1.docker.io/v2/”: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

  • 楼主 a).尝试修改/etc/docker/daemon.json 文件替换在其它帖子中看到的24年的源,并且重启容器,依旧无法解决问题。也b). 尝试添加了 /etc/hosts 文件中 registry-1.docker.io 通过dig获取的IP地址。还c). 尝试修改 /etc/resolv.conf 中nameserver为8.8.8.8114.114.114.114。依旧无法解决。
### 使用Docker安装OpenWRT设置旁路由教程 #### 安装前准备 为了确保顺利安装并配置OpenWRT作为旁路由,在开始之前需确认主机已正确安装Docker环境,并具备基本的Linux命令行操作能力。 #### 配置Macvlan网络 创建专用的Macvlan网络用于连接物理网络接口,这一步骤对于实现旁路功能至关重要。通过指定父接口参数来建立新的子网段,从而让OpenWRT容器能够独立获取IP地址并与外部通信[^3]。 ```bash docker network create -d macvlan \ --subnet=192.168.1.0/24 \ --gateway=192.168.1.1 \ -o parent=eth0 my_macvlan_net ``` 上述命令中的`parent=eth0`应替换为主机实际使用的外网接口名称;而`--subnet`和`--gateway`则依据个人局域网的具体情况进行调整。 #### 获取官方镜像 从可信源下载适用于ARM架构(aarch64)的OpenWRT Docker镜像文件,以保证系统的稳定性和安全性[^1]。 ```bash sudo docker pull unifreq/openwrt-aarch64 ``` #### 运行OpenWRT容器 启动带有特权模式的OpenWRT实例,并将其加入到先前定义好的Macvlan网络中去。同时赋予其重启策略以及持久化运行状态,以便于长期服务支持[^2]。 ```bash sudo docker run --network=my_macvlan_net --privileged unifreq/openwrt-aarch64 /sbin/init ``` 这里需要注意的是,如果遇到特定硬件平台或其他版本需求,则可能需要更改所使用的镜像标签或路径。 #### 初始化与配置 进入新创建的OpenWRT容器内部执行必要的初始化工作,比如开启防火墙、设定静态IP等基础设置。这部分通常可以通过SSH远程登录完成,也可以直接附加终端会话来进行交互式配置: ```bash sudo docker exec -it openwrt ash uci set network.lan.ipaddr='192.168.1.2' uci commit network /etc/init.d/network restart ``` 以上指令仅作示范用途,请根据实际情况灵活修改相应数值。 #### 测试连通性 最后验证整个链路上各节点之间的可达性,确保数据包可以正常转发至目标位置。可利用ping工具简单测试内外网访问状况。 ---
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值