N1 降级 Webpad 刷小钢炮系统+Docker 安装 OpenWrt 旁路由
折腾了N1,刷了小钢炮,接着折腾旁路由做科学上网,最后刷了文章中底部的精简版才算成功。
发文记录一番吧!
N1 降级/线刷 Webpad 改版系统
拿到手开机系统版本是 V2.28,据说系统版本在 V2.19 以上的都必须先降级才能刷机。那就老老实实先降级吧,反正之前就折腾过,用上 webpad 大神的《斐讯 T1、N1 官方系统降级工具》,很简单。
连续点击版本号4次打开 adb
打开工具降级
降级工具下载:斐讯T1、N1官方系统降级工具
N1 最好 Wi-Fi 连上网络,这样在屏幕上直接就能看到 N1 IP 地址。
打开工具 N1 选择 2,输入 N1 IP 地址,按照提示一步步来就行了,降级成功会重启机子,注意机子系统版本虽然没有改变,但实则已经降级。
线刷 Webpad 改版系统
线刷工具下载:N1-线刷-USB_Burning_Tool
webpad 大神官改 V2.2 固件:N1_mod_by_webpad_v2.2_20180920
降级完成后,安装 USB_Burning_Tool 烧录软件,注意会提示安装驱动,一定要安装这个驱动。
然后打开《斐讯 T1、N1 官方系统降级工具》,选择 3 进入线刷模式,这时候机子会重启,马上插上 USB 双公头线,一头连接电脑,一头接 N1 靠 HDMI 接口处的那个 USB 口。一般来说这时候电脑会提示发现新设备,让你安装驱动,如果安装驱动失败,就需要手动添加驱动(我折腾是自动安装上了)。手动安装方法也很简单,打开设备管理器,随便点击一个硬件设备,点击添加过时硬件,选择【libusb-win32 Usb Devices】,然后再下一步,选择【WorldCup Device】就行。
温馨提示:USB 双公头线最好用 USB2.0,亲测 3.0 死活进不去线刷模式,直接进去了 Recovery ……另外 USB 线连到电脑主板原生 USB 接口。
成功进入线刷模式就可以进行烧录,在 USB_Burning_Tool 软件中,导入烧录包,无论是用来做电视盒子还是 Linux 等系统,都建议先刷入 webpad 大神的官改 V2.2 固件,可以去除很多限制。
注意取消右边的【擦除 flash】和【擦除 bootloader】选项,否则刷机很可能失败。烧录完成后,先点击停止,然后关闭软件,拔出 USB 线,拔出 N1 电源线,重新通电重启,刷机成功。
此处教程转自博友山小炮。
刷入荒野无灯小钢炮(NDM)系统
荒野无灯小钢炮(NDM)系统官网:http://nanodm.net
下载地址:http://rom.nanodm.net/N1/
类似的有:Armbian,同样可以 docker,然后运行 OpenWrt 做旁路……
小钢炮与 Armbian 哪个好?或者说哪个更适合?我也不知道,没有研究。据说小钢炮还不错,就选择了干它……
N1 小钢炮固件安装说明:https://rom.nanodm.net/N1/n1-fw-install-guide.md
制作小钢炮启动U盘
刷机所用资源下载地址:https://rom.nanodm.net/N1/
小钢炮系统:n1-s905-linux-hacklog-20190411-2042.img.7z(备用下载,解压密码1024)
启动U盘制作工具:USB Image Tool
U 盘不要太大,usb 2.0 最佳,金士顿 USB 3.0 32G 失败,闪迪 Cruzer Edge 8G USB 2.0 一次过成功。
把小钢炮镜像解压出来,n1-s905-linux-hacklog-20190411-2042.img,最好校验一下。然后通过 USB Image Tool 工具把镜像写入到 U 盘中,写入完成如果提示格式化,取消即可。
U盘写好后,先别插入! U盘写好后,先别插入! U盘写好后,先别插入!
adb 设置 N1 从U盘启动
准备好 adb 环境,没有的话可以这里下载(解压密码1024),解压放到 C 盘,比如:C:\adb。不知道 N1 IP 地址的话,可以去路由器后台查看,N1 的网卡地址是 FC 开头。
这里假设 N1 IP为: 192.168.2.222,在电脑端执行命令:
adb connect 192.168.2.222 (这里为盒子的IP)
连接成功后你会看到提示: connected to 192.168.2.222:5555
接着输入:
adb shell
成功进入 android shell 标记是:命令提示符会变成: p230:/ $,然后手里准备好U盘,再执行:
reboot update
执行完命令立即马上迅速把U盘插到离HDMI口最近的那个 USB 口。只插一个U盘,不要插其它多余 USB 设备。
如果一切顺利,三分钟左右,小钢炮就启动起来了。主路由器如果开启 DHCP,IP 可能会有变化,进去主路由器后台看看 IP 地址,然后通过 IP 地址就可以访问 N1 小钢炮系统了。
假设 N1 小钢炮 IP为: 192.168.2.222
N1 小钢炮后台登录地址为:http://192.168.2.222
默认用户名:root;密码:root
ssh 默认 端口 22,用户名root,密码root
ftp 默认 端口 21,用户名root,密码root
否则检查U盘,换U盘,重新制作U盘启动盘……多尝试几次。
小钢炮写入 EMMC
方法很简单,打开 N1 小钢炮 ip:8086(比如 192.168.2.222:8086),通过端口访问会进入【FIRMWARE AUTO INSTALL TOOL】,然后点击【Start Install】,会自动写入到 N1 的 EMMC 里。
如果有看到 socket ignored 错误,不用管,其它操作成功就行。最后显示:Complete copy OS to eMMC parted SYSTEM 即表示安装过程已经完成。
断掉 N1 电源,拔掉U盘,再上电开机即可。等待两三分钟启动完成。打开登录页面后,务必清空一次 Chrome 浏览器缓存。
Ctrl + shift + i,然后右击浏览器顶部地址栏的刷新按钮,选择第三项:“清空缓存并硬性重新加载”,即可。此操作在更新完系统或更新完 dashboard 后务必执行一次。
至此小钢炮安装完成。
Docker 安装 OpenWrt 旁路由设置
据说 flippy 固件不错,于是 pull Docker openwrt r20.03.19,无奈小飞机一直运行不起来,手动启动提示 sxr-rules[7584]: Can’t redirect, please check the iptables. 看样子跟防火墙有关启动不了。
作罢,换 kanshudj 版,小飞机顺利起飞。
小钢炮启动 Docker
登录小钢炮后台 192.168.2.254,System – Startup,将 /etc/init.d/S60dockerd 项目 Enable 栏点成「绿色 YES」,然后重启 N1 小钢炮。
然后进入 Apps – Other – Docker Settings 检查 Docker 运行状态,Docker UI 可选安装,建议安装上,安装好 UI 可以直接 192.168.2.254:9000 登录 Docker 可视化管理页面。
拉取 kanshudj OpenWrt 镜像
docker pull kanshudj/n1-openwrtgateway:r20
r20 是 tag,可到这里查询:https://hub.docker.com/r/kanshudj/n1-openwrtgateway/tags
配置 docker 使用阿里云镜像加速
小钢炮 N1 网络没有科学工具加持,pull OpenWrt 镜像速度可能会很慢,改阿里云 docker 镜像可以加速。
修改 /etc/docker/daemon.json 文件(vi /etc/docker/daemon.json),把原本的源替换掉,比如改成这样:
{
"storage-driver": "overlay2",
"registry-mirrors": ["https://ooxxooxx.mirror.aliyuncs.com"]
}
阿里云镜像加速器地址获取:https://cr.console.aliyun.com/cn-beijing/instances/mirrors,用你的实际加速地址,替换上面的 https://ooxxooxx.mirror.aliyuncs.com
开启网卡混杂模式
ip link set eth0 promisc on
据说重启 N1 就会失效。
网卡永久设置混杂模式
修改 /etc/rc.local 加入如下代码:
ip link set eth0 promisc on
或者
ifconfig eth0 promisc
改完重启系统检查网卡是否混杂模式(完全启动完才生效,两三分钟)。
也可以在小钢炮后台 System – Startup – Local Startup 处添加网卡混杂模式代码:
ifconfig
开启网卡混杂模式方法二
(此方法老头没有测试,有需要可试试)
修改 /etc/network/interfaces 文件:(谨慎操作,可能导致 Armbian 永远无网络)
auto eth0 iface eth0 inet manual up ip link set eth0 promisc on auto macvlan iface macvlan inet static address 192.168.12.104→修改成你需要的 netmask 255.255.255.0 gateway 192.168.12.1→需改成你的主路由ip或192.168.12.5(旁路由的ip) dns-nameservers 192.168.12.1→需改成你的主路由ip或12.5或再加1个公共dns比如114 pre-up ip link add macvlan link eth0 type macvlan mode bridge post-down ip link del macvlan link eth0 type macvlan mode bridge
改完后重启网络 /etc/init.d/network restart
或者重启系统检查网卡是否混杂模式。
创建 Docker 虚拟网络
docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.1 -o parent=eth0 macnet
注意:macnet 为名称,macvlan 为模式,另外请将 192.168.2 修改为你自己主路由网段。
docker network ls ## 可查看已创建网络
开启 OpenWrt 容器
docker run --restart always -d --name=OpenWrt --network macnet --privileged kanshudj/n1-openwrtgateway:r20 /sbin/init
注意:OpenWrt 包名与前述导入/pull下来的保持一致,后面 /sbin/init 可以省略。macnet 虚拟网络名字与前面创建的一致。
配置 OpenWrt 容器网络
可以进入 Docker 图形管理界面(192.168.2.222:9000)执行命令修改
也可以 N1 小钢炮 SSH 连接 Docker OpenWrt SSH 进行修改:
docker exec -it OpenWrt bash
OpenWrt 是前面 –name 指定的容器名字,没有指定的话以通过运行 docker container ls
显示出的 NAMES 字段获得。
vi /etc/config/network
将 option ipaddr 192.168.X.1 替换旁路由 OpenWrt IP 地址(如 192.168.2.254),注意需与主路由同网段。如果确定只做旁路有还可以顺带把 DHCP 和桥接关掉,然后 ESC,:wq 保存退出。
参考配置:
config interface 'lan' option ifname 'eth0' option proto 'static' option netmask '255.255.255.0' option gateway '192.168.2.1' option ip6assign '60' option dns '119.29.29.29 8.8.8.8 1.1.1.1' option ipaddr '192.168.2.254' option broadcast '192.168.2.255'
reboot
或者
/etc/init.d/network restart
重启 OpenWrt/网络,就可以 192.168.2.254 登录 Docker 里的 OpenWrt 软路由了。
主路由与旁路由设置
Docker OpenWrt 旁路由:关闭 DHCP,网关填主路由 IP(如 192.168.2.1),DNS 可以为主路由 IP 或 119.29.29.29,8.8.8.8 等公共 DNS,「物理设置」中「桥接接口」取消掉。
参考图示:修改 LAN 接口、设置固定 IP,关闭 DHCP
另外,如果旁路由数据不稳定,可在防火墙添加自定义规则试试:
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
参考图示:自定义防火墙,不过好像不加也行(请根据实际网络环境测试修改)。
然后在需要访问外网的设备手动指定网关和 DNS 为旁路由 IP(如 192.168.2.254)即可。「后记:若主路由(华硕 AC68U 原版梅林固件)设置 DHCP 网关和 DNS 填旁路由 IP,使用S酸S酸加速节点,网络访问外网可能会异常,设备手动指定则能正常使用」
如果主路由使用 padavan 及开启硬加速,而用 N1 做旁路由可能出现不兼容,导致网络卡顿,关闭主路由硬加速可以解决(将主路由 padavan 外部网络WAN -> 外网设置选项卡 -> IPv4 硬件加速,由 OFFLOAD TCP/UDP for LAN/WLAN,修改为OFFLOAD TCP/UDP for LAN 即可)
Hello World
Hello World 默认并没有启动,貌似 OpenWrt 启动项那里开启了也启动不了,不知道是不是还有别的机关。
我是直接 SSH 连接 OpenWrt,执行命令:
/etc/init.d/helloworld enable ## helloworld 注意替换成实际程序名。
reboot
然后添加订阅或者 Hello World 节点就可以愉快的访问外网了。
参考资料
N1刷Armbian系统并在Docker中安装OpenWrt旁路由的详细教程
N1 小钢炮 Docker OpenWrt 旁路由 Hello World 精简固件
追求精简,可以试试 breakersun/openwrt:pigroup,还有这个:自编译docker用openwrt分享,推荐搭配小钢炮使用(备用下载,解压密码1024)。两个亲测可用,比较简洁。
愿意折腾?还可以自己编译 OpenWrt 固件……或者:斐讯 N1 4K电视盒子 ROM / OpenWRT 路由器固件下载及遥控器收集