OK,就让我炒回冷饭。
本文是对《Installing GerdaOS on a Nokia 8110 4G in 2024》的翻译及内容添加。译者无缝地在某些地方给出了自己的解决方案。原文由 Matt Marshall 在 PPL 许可下发布。
本翻译作品同样遵循 PPL 许可。农场文爬虫/毒瘤网站爬了这文章就等着被草吃官司吧。出来混要有实力,有背景。
这是一篇论坛形式的教程,包含讨论与探索。请多读几楼以获取全部有价值的信息。刷机须谨慎。你最好知道自己在做什么/这些命令是什么意思。一个有趣的思考:sudo rm -rf /*
这篇文章包含:GerdaOS 在 Nokia 8110 4G 上的安装说明。我写下这些内容是为了给我自己看,也为了大家(如果能对你们有帮助的花)。尽管 gerda.tech 的官方说明相当清楚,而且我已经习惯了刷 Android ROMS1,但一开始我还是有点不知道该怎么搞,尝试了几次才搞定。
GerdaOS
Nokia 8110 4G 是经典 Nokia 8110“香蕉手机”的重构,不久前我买了一部。我想用它戒掉智能手机。我会在其他博文里谈谈我的历程。我选择 8110 4G 是因为它可以开热点,这样当我需要使用智能手机的时候就可以应急了。不幸的是,我还需要安装一个 KaiOS 的替代品来摆脱手机上预装的流氓软件。
我发现 Martin Kaptein 的一系列相关博客文章也很有帮助,但一些读者可能更喜欢我的写作风格,而且 Martin 声称有些方法失效了,但我发现,一旦我明白了大致的操作,我就能相对顺利地完成一个非常相似的过程。
在这儿放一些 Martin Kaptein 的链接:
https://www.martinkaptein.com/blog/gerda-os-flash-tutorial/
https://www.martinkaptein.com/blog/kaios-remove-default-apps/
我在刷机过程中还遇到了些问题,我也会给我我的解决方案,以免你也掉入相同的“陷阱”。
目录
- 大致步骤
- 所需物品
- 安装苍月浏览器
- 配置 USB 调试
- 连接adb
- 手机备份
- 安装 Wallace 获取 root shell
- 使用 root shell 安装 Gerda Recovery
- 重启到 Gerda Recovery 以安装 GerdaOS
- 恢复出厂设置
- 总结
大致步骤
对于搞机这种折腾,我发现心里要是提前有个大致的印象就太好了。这可以时刻提醒我自己到底在干什么。
将 GerdaOS 安装到 8110 4G 上的过程与安卓搞机很类似,只是稍微复杂一丢丢,但经过一些最初的麻烦之后,你就会感到轻车熟路了。
OK,大体来说,我们的最终目标就是把系统换成Gerda。首先,我们需要刷入recovery,然后再从recovery刷入GerdaOS。
细节一点,第一步,为了刷入recovery,我们需要获得 root shell 权限。获取权限这一步就占了大约一半的工作量。在设备上获得 root 权限的最佳方法是侧载应用程序,这涉及安装旧版本的苍月浏览器以使用其 Web IDE 功能。
好的,最后梳理一下:
- 在电脑上安装苍月浏览器
- 打开USB调试
- 侧载安装Wallace来获取临时root权限
- 从adb root shell刷入recovery
- 从recovery刷入GerdaOS
所需物品
- 老版本苍月浏览器(我用的是28.6.1的Linux版本)
- adb(我用的是GNU Devuan仓库版本)
- 香蕉♂鸡和数据线
- Gerda Recovery和System Installer(从Gerda.tech下载*)
- Wallace,也从Gerda.tech下载*
*:注 现在Gerda.tech已经爆炸,无法访问。可从归档网站https://archive.luxferre.top/gerdaos继续访问。
你需要在终端里使用adb命令才能进行后续的操作。在教程里我用的是 GNU/Linux 的配置。但不要紧,如果你熟悉你当前使用的平台,操作也大差不差。
安装苍月浏览器
要注意,并不是任何版本的苍月浏览器都可以,因为我们要用 Web IDE 来侧载,而新版本的 Pale Moon 阉割了 Web IDE。
我觉得,最好选择版本 28.6.1。这是苍月浏览器的归档:
https://archive.palemoon.org/palemoon/28.x/
按照你的平台下载浏览器,我用Linux所以我下了x86_64.tar.bz2。我把它解压在了$HOME/opt/palemoon目录里。然后我直接运行palemoon,报错:
XPCOMGlueLoad error for file /home/matt/opt/palemoon/libxul.so:
libdbus-glib-1.so.2: cannot open shared object file: No such file or directory
Couldn't load XPCOM.
OK,要安装依赖libdbus-glib。起初我有点担心,因为名称中的 libd 颇有股 systemd 的味道。我不用systemd。幸运的是最后发现这只是个乌龙。
配置 USB 调试
豪,现在打开你的香蕉♂鸡,我们要打开调试模式,然后才能使用adb和苍月,然后才能侧载应用,然后才能搞到root权限,然后才能......
键盘输入神秘代码*#*#33284#*#*
打开调试模式。这里有个好玩的细节:33284对应手机键盘的DEBUG按键。
输入代码,然后拨打♂代码,你会在状态栏上看到一个bug icon。这就成功了。
别忘了把USB文件访问权限打开,我这算帮你们踩雷了。从设置目录里打开。
连接adb
到这一步,你该用usb线连上你的手机,然后使用命令adb devices检查设备。
如果成功就继续。现在,你就可以使用adb了,就像和安卓搞机那样,你可以用你熟悉的姿势和它互动♂。例如,使用 adb push 将文件推送到 SD 卡,或是使用 adb pull 将文件拉出等等。你还可以通过运行 adb shell 获取 shell,但它还不是 root shell,所以它还不能派上什么用场。
手机备份
如果你有些学习资料要保存,那就备份。如果没有那种资料,直接跳到下一步吧。
我个人没有什么重要资料要备份的,所以我就不备份了。我看到Martin的博客里讲到了备份,讲得挺全的。
使用 root shell 安装 Gerda Recovery
根据不同固件版本,你的KaiOS有不同的漏洞,所以获得临时 root 访问权限的方法也各不相同。但是只要有接地气的Wallace,我们就可以在任意 KaiOS 设备上获得 root 访问权限。
译注:咳咳,这里很想玩梗了,算了,还是不玩了。
傻子都能看出来,Wallace不可能上架KaiOS商店,所以有请苍月浏览器的Web IDE。
在成功连接上设备的情况下,运行命令:
adb forward tcp:6000 localfilesystem:/data/local/debugger-socket
这显然可以避免 Web IDE 连接时出现的错误。
启动苍月浏览器,从菜单导航到点开Tools -> Web Developer -> WebIDE。点击Remote Runtime按钮,然后看对话框有没有显示localhost:6000,然后连接。
接下来,我们要用到wallace程序。它是一个 zip 文件。解压它。
再次进入 Pale Moon,单击“Open Packaged Web App”并转到刚刚解压好的目录,就是包含 manifest.webapp 文件的目录。
Web IDE 的界面将发生变化,为您提供该应用的一些详细信息。应用名称旁边可能有一个绿色圆圈,如果不是绿的也不要慌,我的圈圈是橙色的,也没啥毛病。点击运行按钮(三角形按钮),Web IDE 会将应用部署到设备并开始运行它。
当 Wallace 加载时,屏幕上会显示草我“root ~me”。等什么呢,快root。屏幕会变黑片刻,然后一个尖锐的黑客脸(致敬《银翼杀手》)会逐渐出现。一旦消失,您就被root 了!
嘿咻,我们已经完成一半了。
从adb root shell刷入recovery
现在我们已经 root 了手机,我们可以使用 adb 中的 root shell 刷入 Gerda Recovery。还要用线,别拔线。
终端运行:
$ adb shell
如果不出意外,你就进入root了。看这令人敬畏的井号标志(代表root):
root@Nokia 8110 4G:/ #
在终端中输入exit即可退出。现在我们先要复制recovery-8110.img到sd卡里:adb push recovery-8110.img /sdcard。
然后进入root shell: adb shell
首先,我们对recovery刷零。在刷之前你也可以选择备份recovery,我就不了,莽夫直接刷。
dd if=/dev/zero of=/dev/block/bootdevice/by-name/recovery
现在我们要使用 root 权限刷入 Gerda Recovery。在 root shell 中运行以下命令:
dd if=/sdcard/recovery-8110.img of=/dev/block/bootdevice/by-name/recovery bs=2048
然后等下dd...
dd好了后,
dd 完成后,关闭手机,然后按住 上↑ 键,将手机重启至recovery。在recovery中,使用↑↓←→进行导航,并使用电源键确定选项。
从recovery刷入GerdaOS
gerda.tech 网站给出了多种系统安装方法。你也可以从源代码编译,但不用那么麻烦。我的建议是你使用 gerda.tech 预编译的映像。
有两种方法刷入系统映像:第一个是通过 SD 卡安装,第二个是通过 adb 侧载。Martin Kaptein 选择了 SD 卡方法,但这个方法对我失败了。不管我怎么尝试,用 adb 将 gerda-os 系统安装程序 zip 文件加载到 SD 卡上,Gerda Recovery 都无法挂载 SD 卡。
起初我以为我玩完了,我尝试了adb侧载,也失败了。侧载的工作方式是,你在要在 Gerda Recovery 上选择侧载模式。然后运行adb sideload <文件名>。
如上所述,刷GerdaOS失败了,
直到我将手机重新启动到 KaiOS,然后重新进入 Gerda Recovery。很玄学,很玄学。我不确定为什么,但之后运行 adb sideload 就像魔法一样有效。但无论我怎么尝试,我都无法在恢复模式下安装内部 SD 卡。Martin Kaptein 提到你需要一张空白的 SD 卡,所以也许这是我缺少的。如果是这样的话,我会觉得很奇怪,因为我可以 adb push $file /sdcard/ ,而且我的理解是这些系统也能进 /sdcard/ 目录。总之,无论 SD 卡有什么问题,我确实通过侧载成功安装了 GerdaOS。这让我觉得自己像个黑客小丑。
不过,现在还不能重启手机!还有最后一步:在recovery中双清(也就是清除数据,还原设置这两个清除。)
最后一步是双清。gerda.tech 和 Martin Kaptein 的博客都将此列为必需操作。我不确定如果省略这一步会发生什么。也许它会擦除 GerdaOS 并重新安装 KaiOS。
在recovery中选择“Data/Factory Resest”选项并执行。
完成后,就可以重新启动进入 GerdaOS 并享受这台注重隐私且精简的功能手机。
总结
在这篇文章中,我们用 GerdaOS 替换了 Nokia 8110 4G 上流氓的、臃肿的 KaiOS。我们通过在设备上获取临时 root shell 来实现此目的,这使我们能够安装自定义的recovery,然后使用它来安装 GerdaOS。