2022年6月

今年618买了两台红米AX6S路由器,组mesh网把家里面的wifi全线升级一下。然而,次卧里面的信号还是不太好,老爸还是有意见。为了不破坏mesh组网的漫游功能,只能再搞一台小米路由器加入mesh网。

因为已经花了不少钱了,于是准备尽可能少花钱把这事给办了。研究了一通之后,发现最便宜的能组mesh的小米路由器是与网络运营商合作的机器。运营商合作款系统上都是绑定网络,就需要刷机成官方系统后才能与其它小米路由器组mesh。

再研究之后,其中cr660x系列是便宜,也是最简单可以刷机的机器。咋一看所有的说法都是,直接用官方恢复工具,刷入AX1800的系统,就可以当官方AX1800来用了。因为没有再提到别的什么注意事项,于是在某拼上以最便宜的价格随便入手了一款。

到手时一看是联通订制的cr6606,上手就开始刷机。然而刷机之后却发现,并没有刷机成功的蓝灯。而是闪烁着一种奇怪的紫灯。系统也没有成为AX1800,还是cr6606。几次折腾后去网上一搜,发现居然也有不少人说有同样的问题。cr6606无法刷机!
当时我就慌了,图省钱买个便宜货来刷机。难道反而要亏掉这一台路由器的钱……
幸好后面看到有人提到,他解锁ssh后,刷了cr6608(移动订制款)的bootloader后,可以刷ax1800固件。
顿时我就觉得我又行了!

因为解锁ssh需要另外一台支持wifi的openwrt路由器,家里面没有。只好找玮哥借了一台传说中的K3让我折腾,恩人啊……

借到K3后,就正式开始了折腾之旅……
首先,解锁ssh就基本上把能踩的坑都踩了一遍。具体过程省略1000字……
ssh联上后,立马又出了一个问题,没有root密码…… 搜索了一番后,有人说到密码是通过SN计算出来的,并提供了计算的工具网站。但是我怎么算也还是登不上去,一度十分绝望…… 最后,终于发现有人提到。联通定制版的密码计算方式与官方版本不一样,那个网站只能计算官方版本的密码。于是我又必须先刷官方的cr6606固件……

一番折腾刷成官方cr6606固件后,终于成功的登录了ssh。这时又发现通过scp无法复制文件到到路由器上,报了一个找不到sftp的错误。差点准备在本地搭一个ftp服务端,然后从路由器上拉文件过去了。再研究了一下发现原来是不支持sftp协议,强制指定scp协议后就可以拷文件了。

因为看到有人提到他们的cr6606是可以直接刷ax1800固件的,加上总觉得刷6608的bl会不会有风险。所以决定先刷一个他们提供的6606的bl看看能不能解决问题。
这次刷6606的BL,再刷AX1800的尝试喜闻乐见的失败了……
最终再次解锁ssh后(每次重启路由器都要重新解锁),刷入cr6608的bootloader,成功通过官方恢复工具刷入了AX1800的固件。
重启后成功被识别为AX1800路由器,并与之前的AX6S路由器成功组成mesh网络。这几乎一天的艰难折腾,总算没有白费……

最后总结一下整个最简刷机流程。

联通cr6606 -> 刷官方cr6606固件 -> 解锁ssh(最烦步骤) -> 刷移动cr6608 Bootloader -> 刷官方AX1800固件

感受就是实在是麻烦得半死…… 有类似打算的哥们千万直接购买移动cr6608版本,可以直接刷AX1800固件。省去非常多的麻烦……

截止2022年6月14日,在Ubuntu 20.04.4 LTS中使用apt包管理通过自带默认源来安装golang的话,还是老旧的1.13版本。
而目前一些工程都已经要求使用1.18版以上的编译器来编译。

直接通过官方发布的包来更新终究是麻烦,还想用apt来更新就得添加第三方的源了。

sudo add-apt-repository ppa:longsleep/golang-backports

如果还未安装,就直接安装。

sudo apt install golang-go

如果已经安装了默认源的旧版本,可以先更新到新版本,再删除掉旧版本。

sudo apt upgrade golang-go
sudo apt autoremove

这个源目前已经更新到最新的稳定版本1.18.3

chrome是目前地球上最成功的浏览器,而它的开源项目chromium也是最重要的开源项目之一。
研究chromium的源码,就成为很多人(比如我)重要的工作与学习手段。但是在国内想要check一份可构建的chromium源码其实并不太容易。除了众所周知的原因外,也因为chromium经过长期高速的开发和迭代之后,积累下来了庞大的源码。

如果按官方文档中的方法check源码,默认会check出当前最新的开发版代码。
或者拉回完整的git仓库,再check到指定的稳定版tag。这样很可能会拉回很多我们根本不需要的分支和tag。

实际上,是可以从零开始,直接check出指定的tag代码的。

那么让我们开始之前,假设已经满足了以下条件。

  1. 克服了众所周知的问题。这个只能自己想办法……
  2. 安装了所有需要的开发环境,比如depot_tools等。这个可以参考官方文档。

此方法适用于所有平台。以目前最新官方正式版本102.0.5005.63为例。

首先创建存放代码的目录:

mkdir chromium
cd chromium
mkdir src

创建纯文本文件.gclient并写入以下内容:

solutions = [
  {
    "name": "src",
    "url": "https://chromium.googlesource.com/chromium/src.git",
    "managed": False,
    "custom_deps": {},
    "custom_vars": {"checkout_pgo_profiles": True,},
  },
]

如果是要构建android平台的浏览器,就在这个文件最后添加一行内容:

target_os = ["android"]

接下来创建一个空的git仓库,来同步指定的tag。

cd src
git init
git remote add origin https://chromium.googlesource.com/chromium/src.git
git fetch origin tag 102.0.5005.63

最后一步就是在从官方的git中同步指定的tag。这个步骤是整个过程中最耗时的一步。具体的时间取决于网络情况与tag的新旧程度。越新的tag,需要同步的数据也就越大。
耐心等待tag同步完成。完成后src目录下还是空空如也,并没有代码文件。这时候就需要创建一个本地分支,从tag中check出代码。

git checkout -b local_102.0.5005.63 102.0.5005.63

这个步骤很快,完成后目录下就有chromium的代码了。但是目录中的代码还是不能构建出chromium浏览器,还缺少依赖的一些第三方工程,和构建需要的工具链。
接下来继续同步这些内容:

cd ..
gclient sync -D --with_branch_heads --with_tags

这个步骤也会花费一些时间,并且网络不佳的情况下还有可能会失败。不断重试直到最后全部成功就好。

当这个步骤完成后,完整的一份可构建的chromium源码就完成了。你可以构建出自己的chromium浏览器了,具体方法还是参考官方文档。

在这份代码上,还可以继续同步别的tag代码。只要把上面步骤中出现的版本号换成需要的tag版本号就可以了。这样可以节省不少的时间。