背景
树莓派 4b 闲置了,想要利用起来,搭建个软路由不错,不过还想充分压榨下硬件,搭建个
jellyfin之类的,就需要保证视频硬件加速(8g 内存也不能浪费),所以开始了折腾Docker: springhack/openwrt-docker
- 只能用 32bit 系统(64bit 的硬件加速都不太正常)
- 利用起来内置无线网卡(不想花钱)
- 能搭建 docker 环境(跑
jellyfin方便)
步骤
经过自己层层挑战之后提炼出来的,如果你有兴趣过程,可以看后半部分
此方法利用 ethernet 作为 wan 接入(我插在我的入户路由器,走 DHCP),wireless 作为 ap
注意:受限于 rpi4b 很沙雕的 country code 行为,这个 docker 里的 ap 只有 20m 带宽,你可以自行研究研究如何修改,如果后面我改好了也会更新
- 系统:
raspios_lite_armhf bullseye,截止此文的最新版本 - 启动后
raspi-config自行设置一下locale/keyboard之类,老生常谈,不提了 - 安装 docker:
curl -fsSL https://get.docker.io | sudo bash -E -,再把自己加入到docker group里 - 拉我最后配好的镜像:
docker pull springhack/openwrt-docker:eth0_wlan0_ap
最重要两步之一,关闭一部分系统服务,为的是让 openwrt 完全接管网络:
DHCP:
sudo systemctl stop dhcpcd && sudo systemctl disable dhcpcdWPA:
sudo systemctl stop wpa_supplicant && sudo systemctl disable wpa_supplicant修改配置文件:
/etc/dhcpcd.conf里后面加上一行nohook wpa_supplicant重启系统,其实不是必要,就是觉得需要这么做,其实到此为止需要联网的操作也都做完了
最重要两步之二:启动我们的
dockerRUN:
docker run --detach --privileged --name openwrt --network host --restat always springhack/openwrt-docker:eth0_wlan0_ap /sbin/initCONFIG:如果你像我一样使用
lite系统没有安装desktop环境,你会发现终端会输出openwrt的log,基本无法操作,这是受限于openwrt的/sbin/init直接操作io导致的,我的建议是切换到tty2等其他的tty再操作;而且,重启之后也是一样的问题,所以习惯tty2成为了肌肉记忆
- 到此为止,你得
openwrt已经搭建好了,ifconfig看下ip就能操作了,这里建议是关掉oprnwrt的dropbear转而使用raspios_lite的内置ssh服务 - 啊,对了,
openwrt的账号密码是root:sksks,wifi热点是Alxw:11060067,lcui web默认开启80端口,你可以自由操作,不过建议慎重操作radio0因为基本一动就挂
技术配置
- TODO(springhack): 留个坑,太坑了,不一定填