肇鑫的日常博客

日常

网件R8000路由刷第三方固件,从入门到放弃

使用这个路由已经4年多了,期间多次尝试过第三方固件。前几次都是因为刷完固件之后,无线网掉速严重,最后又刷回了官方的。

网件R8000这个路由还是很不错的。当年,还在小伙伴们信誓旦旦地说房子装修一定要埋百兆有线,因为无线路由的文件复制速度只有几MB/s的时候。我已经用上了苹果的时光胶囊,我的时光胶囊是802.11n版本的,内网复制文件速度大概20MB/s左右。从时光胶囊换成网件R8000,速度变成了50-60MB/s。

上个月下旬,网件发布了R8000的新固件。令人意外的是,除了常规的错误修正外,网件还移除了R8000原本自带的多项功能。

netgear_r8000_firmware_1.0.4.46

去功能这件事,让我对于网件的好感大减。不过好在我也可以不升级啊。

也许是多事之秋吧。几天之后我就遇到了印象中从来没有过的无法登录路由管理界面的问题,我最终不得不关掉了电源重开机。

这使得我不得不重新面对这个更新。“错误修正:修正了重负载下的稳定性问题。”也许我需要的就是这个。从心的我安装了新的更新。

不过,此时我的内心已经再次对于第三方固件蠢蠢欲动了。

为什么要使用第三方固件?

对于我有两大理由:SS和去广告。虽然我已经在每个设备都安装了SS,但是如果每次创建一个虚拟机,都需要装一次SS也是挺麻烦的事情。至于去广告,因为最新版macOS的Safari已经没法通过浏览器完美去广告了。我现在使用的收费的AdGuard。因此,我对于新的去广告的方式总是保持开放态度。

选择哪个第三方固件?

第三方的固件有很多,最大的是DD-WRT、OpenWRT和Merlin。我的选择的OpenWRT。

安装OpenWRT

上贼船总是比下贼船要容易的。按照这里的提示就能按照OpenWRT了。简述步骤如下:

备份旧版并恢复到出厂

  1. 现在来到这个界面,备份当前固件的设置。
  2. 然后选择恢复到出厂。

netgear_r8000_backup_and_restore_factory

安装OpenWRT固件

重新进入路由后,选择左侧升级路由,上传你下好的OpenWRT固件,等待刷完之后。输入192.168.1.1。

设定一个管理员密码之后,就可以使用新固件了。

如果你看到这里还不知道我在说什么。那么我强烈建议你使用原厂固件。不要折腾了。

失败的尝试

用了两天的时间,我尝试了我曾经想用的SS和去广告功能。结果都不令人满意。在路由上开启SS的最大问题就是不够灵活,每次要修改都需要通过路由的设置界面。而去广告就更别提了,开了去广告之后,我的YouTube的首页几乎处于无法打开的状态。也许是路由的性能不够强吧。

但是以上两点并不是我放弃第三方固件的根本原因。因为,就算这两个功能都不够好用,也顶多没有额外的加分。实际上,第三方的路由还是有好处的。比如我使用原厂固件的时候,如果iOS开小火箭,访问微博的时候,图片和视频加载就会很慢。但是使用第三方固件没有这个问题。

导致我不得不返回原厂的原因是,无线的覆盖出现了问题。使用原厂路由的时候,我家里的任何角落都是有信号的。但是换成了第三方的固件之后,我躺在床上的时候,iPad Pro的网就不稳定了,经常断流。我必须刷回原厂了。

艰难的返回原厂之路

tftp刷机大法

OpenWRT的网站似乎不是很鼓励刷回原厂,它的WiKi上没提如何刷回原厂。论坛中帖子提到刷原厂,也只是提到网件官方的一个使用tftp刷机的办法,针对的是变砖的机器。如果你是Mac用户,还需要同时参考这篇

简述一下这个方法:

  1. 通过有线连接路由,手动指定静态ip。
  2. 移除与路由相连的其它设备的网线,只留刷机的这台机器的。
  3. 关路由,等10秒,重开路由。观察路由上的电源灯,当灯变成黄色时(也称琥珀色,可能是常亮也可能是闪烁,根据型号的不同),开始刷机。

我反复尝试了很多次这个方法,都没成功。路由始终能ping通,但是就是无法传数据上去。

迂回之路,使用DD-WRT

OpenWRT的管理程序,不能够刷机网件原厂的固件,提示格式不对。但是DD-WRT的固件可以。而OpenWRT的固件,可以通过DD-WRT的升级固件,转成DD-WRT。于是我有了一个大胆的想法。

  1. 重置OpenWRT固件。(重置之前先备份,万一你没成功只能回来呢?)
  2. 升级固件,选择下好的DD-WRT升级固件
  3. 多等待一些时间。保守估计5分钟,怕不保险可以等10分钟。清空浏览器的缓存,输入192.168.1.1。

注意:这里必须清空浏览器的缓存。不然无法看到DD-WRT的管理界面。只能看到OpenWRT的管理界面说连不上。

进入管理界面,重置设置。然后刷新网件原厂的固件,再重置,再恢复一开始的备份,就一切恢复原状了。

关于刷机的一些额外说明

每次刷机的步骤是:

  1. 备份旧固件设置。
  2. 重置旧固件到出厂。
  3. 刷新新固件。
  4. 重置新固件到出厂。
  5. 开始使用。

每次都额外的重置固件,原因是怕有残余的设置干扰。

此外,如果你忘记了固件的密码,无法登录路由。可以找一个牙签,捅住路由电源按钮旁边的复位开关,一般15秒就可以了。

R8000的5G热点1的性能问题

如果你单独使用R8000每个热点的话,你会发现5G的热点1,即对应数字40左右的那个,性能会比149左右的性能要差。5G热点1有时最高只能开到40Mhz的带宽,而不能想5G热点2那样开到80Mhz的带宽。

解决的办法很简单,将频段的国家从中国或者其它的设置,改成美国,然后点击应用就可以了。

参考资料

为MWeb添加图片点击新窗口打开大图的功能

最近写文章需要在博客中插入较大的图片,如果用户可以点击看到大图,则可以看到更多的细节。实现步骤如下:

创建JavaScript代码文件

  1. 用文本编辑器(比如macOS自带的TextEdit)创建一个新文件,保存它到下载文件夹,并命名为dealing_images.js
  2. 复制下面的代码到上面提到的js文件,保存并关闭这个文件。
function openInNewWindow(image) {
  window.open(image.src);
}

var images = document.querySelectorAll("img");
var index;

for (index = 0; index < images.length; index++) {
  let image = images[index];

  if (image.src.includes("/media/")) {
    image.addEventListener("click", function() { openInNewWindow(image); }, true)
  }
}

复制文件到对应文件夹

  1. 右键点击你要修改的网站对应的MWeb的分类,点编辑。
  2. 在弹出的窗口中,点击主题最右侧的编辑。这时MWeb会自动打开Finder窗口。
  3. 进入选择你网站正在使用的主题。然后复制dealing_images.js到主题所在的assets/js/文件夹。

添加脚本到生成html文件的模版

  1. 同样是刚刚的主题所在的文件夹,用文本编辑器打开footer.html文件。
  2. 在文件的末尾的</body></html>行之间,插入脚本。
<script src="asset/js/dealing_images.js"></script>

最终效果如下。

</body>
<script src="asset/js/dealing_images.js"></script>
</html>

重新生成网站

  1. 回到MWeb,右键点击网站对应的分类,选择清空并重建网站
  2. 然后再次右键,选择预览网站。就可以看到效果了。

修改完成后,第一次必须清空并重建网站,不然的话,dealing_images.js不会被复制到MWeb搜生成的文件夹里。

记一次尝试了两天的系统恢复

起因:系统出现故障

7月31号晚,iMac上的多个应用出现了故障。现象是需要弹出文件对话框的时候,应用会卡住。经过检查,发现是iCloud Drive的同步出现了问题。通过查看macOS Catalina 10.15 beta 4的发布说明,发现iCloud的同步出现错误,是个已知的问题。苹果给出的临时解决方案为手动点击下载。

但是我即便手动点击也无法下载。我决定采用常规的手段,禁用iCloud Drive,然后再开启。多次尝试都没能成功。系统每次都提示遇到了错误。于是我又想,那我可以注销掉iCloud账户,然后再重新登录。又尝试了多次,同样也没能成功,系统提示遇到了错误。

我只好用iCloud账户无法注销来进行搜索,尝试了两个不同的方案,第一个没起作用,第二个起作用了,重启之后,显示我没有已登录iCloud账户了。然后我尝试重新登录,结果这下无论如何都无法登录成功。

此时,我只能进行系统恢复了。

第一次恢复

我的备份自以为还是很充分的。

我有CCC(Carbon Copy Cloner)的每日备份,设定在每天清晨5点,如果备份失败则给我发邮件。鉴于我近期没有收到邮件,那么最近的备份就都应该是成功的。

此外,我还有时光机的网络备份。因为目前使用的是macOS 10.15的测试版,我还在测试版之初,就重新设定了备份磁盘,也就是说,我不仅有10.15 beta的单独时光机备份,还有之前10.14的时光机备份。

因为CCC的恢复最快,我决定重新启动到CCC备份分区,进行恢复。

进入到CCC的备份分区,我发现了第一个问题。CCC最后一次的备份时间居然不是31日,而是25日。也就是有近一周的时间没有备份。由于是没有备份,而非备份失败,我并没有收到备份失败的邮件,也就没能知道没有备份这件事。

我决定使用这个25号的备份进行恢复。因为大部分文件还是存在的。程序源文件则可以从时光机和git恢复。

恢复大约进行了40分钟。重新进入系统后,我发现了另外一个问题。以往从CCC恢复之后,磁盘的可用空间有140GB以上,这次则只剩下了50多GB。也就是说,恢复了很多多余的文件。这个是不应该的。我猜可能是因为配合macOS 10.15 beta的CCC也是测试版,程序存在bug。

但是我在系统中看不出来是哪些文件多出来了。传统上,CCC会有一个叫SafetyNet的文件夹,这个文件夹是冗余文件,但是我恢复的时候就选择了不使用该文件夹,因此不是这个问题。

小结

到这里,总结一下我犯的错误。

  1. 进行iCloud账户删除操作之前,没有查看CCC的备份是否最新。而是想当然的以为是最新。
  2. 测试版系统+测试版备份软件,出错的几率大大提升。比如CCC定期备份居然没有执行,不清楚是CCC没有计划上,还是测试系统需要额外的权限。
  3. 其实我应该使用APFS的快照功能进行恢复。(但是根据后面提到的,实际上即便我想使用这个功能,也不会成功。)

第二次恢复

没办法,我只能采用时光机恢复。我先尝试使用无线网络直接恢复,发现用时太长,提示接近20小时。于是我选择将外置硬盘从Mac mini上拿下来,直接连接到iMac上进行恢复。

这里我遇到了另一个问题。由于Mac mini上的时光机备份,我采用的是分享文件夹+限制配额的方式,时光机的文件是以映像文件的格式存在的,而非普通的磁盘分区的格式。这个格式,苹果的恢复系统不能直接识别。最终,我只能选择重装系统,然后再融合。(此时我又新犯了一个错误,等下小结时再谈。)

安装系统时,我突然想到我忘记提前格式化磁盘了。于是停止安装,格式化了磁盘。格式化磁盘之后,安装系统无法安装了。我只好重启重新进入恢复界面。

重启之后,原本的10.15 beta的恢复系统,变成了10.14的。于是安装了10.14的系统。重启之后,又安装了10.15 beta的系统,此时已经是半夜3点多了,苹果发布了macOS 10.15 beta 5,因此直接安装的是10.15 beta 5。安装完成后,采用迁移助手融合时光机备份,等待是漫长的,我去睡觉了。

小结

恢复系统虽然不能直接识别映像格式的时光机备份,但是可以使用磁盘工具将映像加载,这样恢复系统就能识别了。不过后面我们会看到,macOS 10.15 beta的恢复系统存在bug,即便采用磁盘工具加载了映像,也还是识别不出。

第三次&第四次恢复

清早起来,发现时光机融合结束,同时系统提示有几个内核扩展需要我允许它们的加载。选择了允许。重启之后,苹果图标下的进度条走完之后就卡在哪里,不能进入登录界面。

我知道这是遇到了内核扩展的问题。但是在删除内核驱动之前,我想到我可以使用APFS的本地快照功能,恢复系统到我允许内核扩展之前,也就是我在睡觉时系统自动创建的快照。

重启进入恢复系统,选择从时光机恢复,按照网上的说法,这时恢复系统会自动列出系统盘,选择之后就可以使用APFS的本地快照。但是macOS 10.15 beta的恢复系统,并没有列出系统盘。因此APFS恢复功能也没法使用。

我只能选择手动删除内核扩展了。上网查,发现需要删除掉有问题的内核扩展。重新启动,长按option,选择从CCC备份的分区启动,清空了扩展文件夹,重启,成功进入系统。

一切看起来都没问题,除了键盘。

我的键盘是雷蛇的黑寡妇RGB竞技版,需要配合雷蛇自己的驱动。我发现当前的系,键盘有问题:系统自带的多媒体按键都失效了。

卸载雷蛇驱动,重新下载并安装。故障依旧。对比雷蛇驱动文件夹和CCC备份分区中的对应文件夹,没发现有什么不同。

不过这种现象也不算罕见。有时macOS升级和全新安装,的确会出现不一致的现象。表现为,如果一款硬件的驱动,是在旧版macOS安装且使用正常的,那么升级到新版macOS,它的行为就还是正常的。但如果是全新安装的最新macOS,然后再安装驱动,有时就会出现问题。

我重装了10.14,但是没有安装雷蛇驱动,然后升级到了10.15 beta,进行系统融合,相当于是雷蛇驱动是全新安装的,出现了问题也正常。

此时我的选择是将就用,或者重新恢复系统。我选择重新恢复系统。

这次我终于想起来我可以使用磁盘工具加载磁盘映像的方式进行恢复,因为我使用迁移助手的时候就是这么干的。可是,我发现,macOS 10.15 beta的恢复系统,不能识别磁盘工具加载的磁盘映像里的时光机备份。

于是我祭出另外一招,我将外置硬盘连回Mac mini,并使用10米长的网线将路由与iMac连起来。这样虽然仍旧是网络恢复,但是不再是无线网络,而是千兆有限网络。

网络恢复时光机是一段漫长的过程。几个小时之后,系统在未完成恢复的情况下自动重启了。重启之后,果然是进不去系统。

我突发奇想,可否用CCC覆盖安装系统盘,看看能否进去,因为10.15将系统分成系统盘和数据盘。尝试失败,系统盘恢复后手动停止CCC恢复。重启仍旧进不去系统。

此时我完全对于10.15的时光机失去信心。为了键盘驱动,我决定从10.14的时光机进行恢复。又是几个小时的等待,这次时光机没有自动重启,而是提示时光机恢复遇到了错误,无法继续。我重启系统,发现还是无法进入。

小结

  1. 一天的时间又过去了,但是系统还是进不去。我开始有些着急了。
  2. 实在没想到居然两个时光机完全无效。不清楚是测试版的时光机备份存在问题,还是测试版的恢复系统有问题,还是因为我的网络经常需要切换VPN导致了网络备份存在问题。

第五次恢复

此时我已经完全没有耐心了。又把主意打到了CCC备份的分区,既然之前恢复的内容过多,我把备份中多余的内容删掉不就可以了吗?

我发现在CCC备份的数据盘有一个叫device的文件夹,这个文件夹是macOS中原本没有的。于是我删掉了这个文件夹里面的内容。然后进行恢复。重启,进不去系统。

小结

孤注一掷的赌博是没有意义的,还是不行。

第六次恢复

没有任何办法。我只能再一次选择重新安装系统,然后采用文件夹恢复的方式,恢复一部分文件,之后就缺啥补啥吧。这个办法效率最低,但是保证能成功。

恢复系统的10.14的安装文件下载缓慢。于是我重启,长按cmd+option+r,从网上直接下载恢复环境,安装10.10,然后在10.10中安装雷蛇驱动,确认没有问题之后,才升级到macOS 10.15 beta 5。

系统终于没有问题了。但是两天时间也过去了。

总结

这次恢复过程历时两天。之所以用了这么久,有些原因是策略错误导致的,有些则是测试版系统导致的。总结如下:

  1. 采用任何风险操作之前,要查看备份是否最新,最好还要再备份一次。
  2. 测试版系统加测试版备份软件,会对备份造成极大的风险。
  3. 网络备份时光机虽然方便,但是恢复过于缓慢。即便是使用了千兆有线网,恢复也还是太慢。究其原因,时光机恢复是逐个文件恢复,而网络传送单个文件的额外开销太大。
  4. APFS的本地快照应该是恢复的最快方式,但是不知道是不是测试版系统的原因,macOS 10.15 beta的恢复系统,不识别APFS的快照。

新备份策略

之前我是一个CCC每日备份+时光机网络备份。新策略改为CCC每日备份+时光机网络备份+时光机本地移动硬盘备份。