我目前使用的是 Netgear R6220,当初不知道路由器还能刷机,所以入手了这款入门级的千兆路由器。因为自己是程序员,后面也了解到 R6220 也是可以刷 OpenWrt、LEDE、Pandorabox这些第三方固件的,但是后面发现真正稳定的只有 Pandorabox,但是 Pandorabox 多半是别人编译好的固件,网上也很少有 Pandorabox 固件编译的教程。发现硬件方面的技术分享真的是比软件少很多,特别是冷门硬件遇到问题还是挺头大的。因为楼主的要求很简单,固件稳定可以上网就行,下面就分享一下自己的编译过程,本人不是学硬件出身,对路由器的固件也不了解,所以一些专业的问题也勿要问我,本人也是小白一个,无法做出解答。
1.准备编译的环境
操作系统:Ubuntu 18.04.2 LTS
Pandorabox ImageBuilder: 18.12
如果有读者需要自己动手进行编译,建议先按照教程给出的环境进行操作,因为环境不同最后的出现的问题也不近相同。操作系统的版本是参考 教程:用imagebuilder对pandorabox固件重新生成 来的,这里谢谢这位作者能分享自己的经验。因为我的谷歌云上面还有赠送的金额,所以我直接在谷歌云上面创建了一台用来编译的实例,如果没有这个条件的可以在虚拟机中安装,这里便不再赘述。
这里讲解的是 Pandorabox 18.12 固件的编译,其它版本编译的过程出现的问题不一定在本版本的会出现,所以一定要对号入座。在编译该版本之前,我参照了一篇文章编译过 K2P 的 Pandorabox 固件,教程编译的版本是 Pandorabox 18.10,里面对出现问题的解决办法比较专业,我不是很懂,但按照教程来编译可以成。后来按照这篇文章的步骤来编译 Pandorabox 18.12 的固件,发现行不通,所以最好能理解步骤的原理,否则生搬硬套并不能解决问题。
2. 给 Ubuntu 安装编译需要的依赖
如果对 Ubuntu 了解的话还是很容易操作,安装依赖的时候请使用 root 用户操作,如果不知道如何切换可以自行百度。
- sudo apt-get update
- sudo apt-get install golang npm build-essential libncurses5-dev zlib1g-dev gawk git libssl-dev wget unzip python ocaml-nox help2man texinfo yui-compressor
复制代码
原教程中这两条命令是合在一起的,这里我将它们分开了,主要是方便排查问题,否则一条命令执行如果出错了也是很懵逼。在上面的依赖的安装过程中我是遇到了报错的提示,当时是 npm 没有安装成功,后面我又用 ‘sudo apt-get install npm’ 安装了一遍,不知道是不是因为其中某些组件有依赖关系,好在最后解决了问题。这些依赖如果没安装完全后面编译固件时会先检查依赖,没有通过是不会进行编译的。因为我们的固件是使用 make 命令编译的,所有也需要安装 make 相关的依赖,Ubuntu 会给出对应的提示,我之前没有记录,这里就不贴出来了。
3.下载 Pandorabox ImageBuilder 并解压
这里给出 PandoraBox-ImageBuilder-ralink-mt7621.Linux-x86_64-2018-12-14-git-ba60306f2.tar.xz 的下载地址:https://downloads.pangubox.com/p … it-ba60306f2.tar.xz
这里需要说明的是我当前编译固件的用户是非 root 用户,因为之前编译 OpenWrt 固件的时候有提示不要使用 root 用户,这里为了放心也是用的是非 root 用户,感兴趣的可以使用 root 用户编译试试看。
Ubuntu 上面使用 wget 下载 Pandorabox ImageBuilder 的命令如下:
- wget –no-cookie –no-check-certificate https://downloads.pangubox.com/pandorabox/18.12/targets/ralink/mt7621/PandoraBox-ImageBuilder-ralink-mt7621.Linux-x86_64-2018-12-14-git-ba60306f2.tar.xz
复制代码
注:直接使用 wget 无法下载 https 的资源,需要添加两个参数才可以,所以请勿偷懒。
解压 Pandorabox ImageBuilder ,我下载的目录实在当前用户自己的 home 目录,所以解压之后的文件也是在此目录下,按理说其它目录也是可以的,如果你的目录有中文或者特殊字符结果就不好说了。
- tar -Jxvf PandoraBox-ImageBuilder-ralink-mt7621.Linux-x86_64-2018-12-14-git-ba60306f2.tar.xz
复制代码
4.使用命令编译 Pandorabox 固件
编译的命令格式如下:make image PROFILE=”netgear-r6220″ PACKAGES=”wget” FILES=”files”
这里说明一下后面几个参数的含义:
PROFILE: 这个参数的含义是路由器的型号,至于路由型号的写法去哪里找,目前资料都没有说,大家可以去看 Pandorabox 官方固件中路由器型号的名称,例如从 ‘PandoraBox-ralink-mt7621-netgear-r6220-2018-12-14-git-ba60306f2-squashfs-sysupgrade.bin’ 中可以看到 PROFILE 是 netgear-r6220”。
PACKAGES: 这个参数的含义是支出你想编译的固件需要打包(如果有些插件你没有给出但是默认有的话也是会进行打包的,如果你想实现某些功能就去添加某些插件)或者不打包(使用 ‘-插件名’ 来表示)哪些插件,对于每种路由器的固件官方会给出一个默认的插件列表,可以在 ‘PandoraBox-ImageBuilder-ralink-mt7621.Linux-x86_64-2018-12-14-git-ba60306f2′ 目录下使用 ‘make info’ 查看每款路由器对应的 PACKAGES。
FILES: 查看其它的资料说会将该目录下的文件打包到固件当中,所以该参数配置的目录可以看做是固件的根目录,打包时会按照路径打包到固件对应的目录中,我目前没有这类需求,所以没有进行尝试。
在解压缩文件夹中执行命令:
- make image PROFILE=”netgear-r6220″
复制代码
如果你是按照上面的命令去编译固件的话是会抛出错误信息的:
- Collected errors:
- * opkg_install_cmd: Cannot install package dosfsck.
- * opkg_install_cmd: Cannot install package luci-i18n-phddns2-zh-cn.
- * opkg_install_cmd: Cannot install package mkdosfs.
- Makefile:140: recipe for target ‘package_install’ failed
- make[2]: *** [package_install] Error 255
- make[2]: Leaving directory ‘/home/itgrocery/PandoraBox-ImageBuilder-ralink-mt7621.Linux-x86_64-2018-12-14-git-ba60306f2’
- Makefile:110: recipe for target ‘_call_image’ failed
- make[1]: *** [_call_image] Error 2
- make[1]: Leaving directory ‘/home/itgrocery/PandoraBox-ImageBuilder-ralink-mt7621.Linux-x86_64-2018-12-14-git-ba60306f2’
- Makefile:196: recipe for target ‘image’ failed
- make: *** [image] Error 2
复制代码
从之前参考的资料上面来看说的是跟仓库的源有关(或者插件已经不叫这个名字了,这种是可以纠正的,之前提到的参考文章中有人写出了部分插件的修正的办法,如果有需要大家可以去翻阅),有的解决办法是修改源,有的是修改配置文件(.profiles.mk,该文件是隐藏文件,使用 ‘ls -al’ 可以查看到,该文件需要执行 make 命令后才生成的,一开始解压的时候并没有,该文件有所有路由器默认的 PACKAGES 配置,可以将那些找不到的插件名称在这里删除掉)。而我的办法是使用之前提到过的 ‘-插件名’的方式来解决,这样就可以不用修改官方的配置文件了(去修改官方的配置文件也是一件头痛的时间,因为配置信息太多了,看的眼花)。
下面贴出我成功的命令:
- make image PROFILE=”netgear-r6220″ PACKAGES=” -dosfsck -luci-i18n-phddns2-zh-cn -mkdosfs -luci-theme-darkmatter -luci-app-bandwidth -luci-i18n-bandwidth-zh-cn -luci-app-update -luci-i18n-update-zh-cn -luci-app-ddns -luci-i18n-ddns-zh-cn -luci-app-upnp -luci-i18n-upnp-zh-cn -luci-app-optimizer -luci-i18n-optimizer-zh-cn -luci-app-hwacc -luci-i18n-hwacc-zh-cn -luci-app-sfe -luci-i18n-sfe-zh-cn”
复制代码
注:大家一定要在理解的基础上去操作,我上面的帖子中有些命令中的关键字会被替换,希望大家能对命令自行纠正。如果帖子有任何错误或者不合理的地方大家可以提出宝贵的意见,我会不断完善。
编译之后的感受:好久没有这么折腾了,以前刷机还是在 Android 时代,但说实话刷机挺浪费时间的,遇到好的固件更是可遇不可求,所以经济条件允许之后直接投入到 Apple 的怀抱了,毕竟稳定也不用瞎折腾,现在参加工作了更加没有时间折腾了。如果后续再要入手路由器的话肯定会入手华硕的路由器,拥抱主流肯定是没错的,使用群体多的路由器肯定更受开发者的重视,固件的质量更有保障,但是硬件领域的生态更加封闭(大部分都在论坛上传播),外行人不容易上手,至少 Pandorabox 我目前只知道有一个论坛,不知道 Pandorabox 的编译有没有官方文档。一方面固件开发者的精力有限,另一方面使用者反应的问题也比较多,看到这些问题后面喷的最多的就是本来就免费给你用了,你还这么多要求,爱用不用,不用滚蛋,当然开发者没有这样说过,其实在软件领域也有这种问题,但是开源软件的受众毕竟更加专业,大伙有能力来贡献,而且软件发布的流程更加规范,论坛的受众就不那么专业了,可能大部分人跟我一样都是吃瓜群众,这款路由器的固件是否好用完全取决于作者一个人。