分类: 随笔

  • 轻松备份,安心生活:个人电脑全盘备份指南

    有没有想过,如果电脑因为一些意外原因突然罢工,所有的宝贵记忆和重要文件就这么不翼而飞?这可不是危言耸听,但好消息是,有了全盘备份,这种噩梦就可以避免了。

    为什么要备份?

    想象一下,你的笔记本电脑突然不工作了,所有的工作文档、个人照片以及定制的系统设置都无法访问。这种情况下,如果你有一个最新的系统全盘备份,那么你可以快速地在新电脑上恢复工作环境。这就像是给数据做了一个时间胶囊,无论发生什么,都能回到过去,将你的数字生活恢复到最后一次备份的状态。

    全盘备份是什么?

    系统全盘备份与仅备份用户数据不同,它是对电脑上所有内容的完整克隆,包括操作系统、应用程序、设置和所有文件。这意味着在恢复过程中,你无需担心哪些隐藏的配置文件没被备份或者某些应用程序无法正常工作,因为一切都会被还原到备份时的状态。

    怎么选备份软件?

    作为一个对价格敏感的用户,我的选择标准很实在:便宜、好用、快速、还得能省空间。我找到了两款不错的备份软件,一款适合 Windows,一款适合 Linux:

    要求Dism++ (Windows)restic(Linux)
    成本免费软件,备份会被压缩,硬盘占用较小开源软件,备份会被压缩,硬盘占用较小
    备份格式WIM,标准的 Windows 部署文件格式开源的专有备份格式
    备份速度不比直接复制文件慢多少 🚗速度超快 🚀
    增量备份不支持增量备份 😥支持增量备份 😃
    其他优势WePE 内置工具支持加密备份文件;支持查看备份系统中的文件内容

    我选择 Dism++ 和 restic 的原因是它们都能够提供简洁且高效的备份解决方案。Dism++ 的备份文件格式是 WIM,这是 Windows 的标准部署格式,意味着即使未来 Dism++ 不再更新,我也能找到方法来恢复我的数据。Restic 虽然使用的是开源的专有备份格式,但它的速度和增量备份功能使得它成为 Linux 环境下的理想选择。这两款工具都解决了我对备份速度和便捷性的需求。

    备份计划

    我的备份策略是定期且频繁的备份。对于 Windows 系统,我每季度备份一次 C 盘;而 Linux 系统则更频繁,每周都要备份一次,因为这是我的主力办公电脑,这样的策略确保了在任何紧急情况下我都能迅速恢复工作环境。

    数据恢复测试与体验

    案例 1:备份并恢复 Windows 系统

    • 准备:使用带有 WePE 的 U 盘进行离线备份,将备份文件存储在一块旧的 1TB 移动硬盘上。
    • 结果:整个系统原本有 250GB ,被压缩成大概 80GB WIM 镜像,恢复后一切正常,就连原系统 Surface Book 的特殊驱动都在。所以还需要手动清理一些不必要的驱动程序。手动清理 Windows 驱动有风险,如果旧驱动没有清理干净可能导致新驱动不生效,可以参考这篇文章尝试修复。

    案例 2:备份并恢复 Linux 系统

    • 准备:使用 systemrescue Live CD 的 U 盘恢复备份,备份文件存储在运行 restic server 的 NAS 上。
    • 结果:原系统大概 300 GB,备份文件总体积约为 40GB ,恢复速度快。尽管需要手动修复 bootloader,但对于有经验的用户来说,这不是难题。

    安全与隐私

    备份时,我确保不通过公网传输数据。而且,为了防止家里 NAS 遭遇不测,我还会把加密后的备份放到云盘,实现异地存储。不过得提醒一下,Dism++ 不支持加密,所以要先用别的工具加密再上传,确保隐私安全。

    结论

    全盘备份就像是给电脑的生命买了份保险,无论遇到什么灾难,都能让你的数字生活重回正轨。备份或许听起来有点技术性,但实际操作起来并不复杂,而且它给你带来的安心,是任何金钱都买不到的。

  • 修复小新 Pad Pro 2021 运行 GSI 时的亮度问题

    This entry is part 3 of 3 in the series 小新 Pad Pro 2021

    上回书说道,我给小新 Pad Pro 2021(aka. Lenovo J716F)装上了 GSI 系统。当时用的联想 Y700 的模块勉强修复了自动亮度失效的问题。最近我心血来潮,经历了快 10 小时的摸索,终于为 J716F 制作出了专属的 Magisk 模块 —— lenovo-j716f-gsi-fix 年轻人的第一个 Magisk 模块

    这个模块与上一篇文章中的修复模块冲突,请先卸载之前的模块,再启用这个模块。重启平板之后,你应该会发现:

    • 亮度调节的最低档不再是「伸手不见五指」之黑了
    • 在系统设置中的 Phh Treble Settings / Lenovo features 中可以启用 DT2W

    不过可惜的是,磁吸锁屏开关功能还是无效。可能是缺少驱动程序导致的

    解决问题的历程

    自动亮度、自动旋转、亮度等级

    参考 Y700 模块的内容,自动亮度、亮度等级这类设置可以通过 vendor_hardware_overlay 控制。最简单的做法就是从原厂镜像中提取这些配置文件,然后通过 Magisk 模块安装到设备上。

    对于小新 Pad 而言,提取原厂文件的方法很简单,直接「只读」挂载原厂镜像的 system.img 文件就好了:

    sudo mount -t ext4 -o loop,ro ./system.img ./payload-fs/sys
    

    接着参考这篇帖子的内容 操作,就可以得到原厂的 hardware overlay。这篇帖子用到了 phhusson/vendor_hardware_overlay 项目,该项目并不能支持所有的厂商 hardware overlay 配置,需要手动删除不支持的配置。这是一个非常繁琐的体力操作,我制作了一个小工具来简化这一个过程:

    1. 把全部的 vender hardware overlay 文件拷贝到 phhusson/vendor_hardware_overlay 项目
    2. 执行下面的代码,导出所有不兼容的配置到一个临时文件中
    # 在 phhusson/vendor_hardware_overlay 根目录下执行
    ./tests/tests.sh | grep J716F | tee test-out
    
    1. 手动编译这个工具 https://github.com/ZeekoZhu/projects/tree/gsi-overlay-tool/apps/gsi-overlay-tool ,使用 fix 命令批量删除所有不兼容的配置
    ./dist/apps/gsi-overlay-tool/net7.0/GsiOverlayTool fix /path/to/test-out /path/to/phhusson/vendor_hardware_overlay/overlay/
    

    得到设备的 overlay 文件后,打包生成一个 apk 文件,放到一个 Magisk 模块中即可(参考操作)。

  • 网上冲浪指南 – 002

    This entry is part 2 of 3 in the series 网上冲浪指南

    Kitty https://sw.kovidgoyal.net/kitty/

    Kitty 是我现在的主力终端模拟器,它使用 GPU 渲染,性能强劲,并且功能强大:

    • 支持 CLI 命令操作 Kitty 界面(窗口、Tab),可以方便地用脚本打造自己的终端工作环境
    • 支持图像协议,cat 一个图片、视频会直接在终端展示,而不是被二进制输出糊一脸

    分享一下我使用 Kitty 快速启动工作环境的 fish shell 脚本:

    function work-start
      cd ~/path/to/project
      # 分屏打开一个新的 kitty 窗口
      set win1 (kitty @ launch --location split --copy-env --cwd current)
      # 分屏打开一个新的 kitty 窗口
      set win2 (kitty @ launch --location split --copy-env --cwd current)
      # 在窗口 1 中登录远程开发服务器
      kitty @ send-text --match id:$win1 'ssh foo@remote-server -t "screen -r dev"\n'
      # 在窗口 2 中启动代码同步服务
      kitty @ send-text --match id:$win2 'lsyncd ./frontend.lsyncd\n'
      # 光标聚焦回当前窗口
      kitty @ focus-window --match id:$KITTY_WINDOW_ID
    end
    
    在终端查看图片

    Chezmoi https://www.chezmoi.io

    Chezmoi 是一个基于 Git 管理 dotfiles 的命令行工具,我的个人目录下有各种各样的配置文件,为了能够在台式机跟笔记本上有相同的体验,我会使用 Chezmoi 定期在两台电脑上同步配置。Chezmoi 的这些功能我认为非常重要,能够极大地简化在多设备上维护配置文件的操作:

    • 文件模板,允许我们在应用配置之前使用变量替换模板文件中的占位符,这样类似主机名、用户名这样的每台机器上可能不尽相同的信息就可以从配置文件提取出来,方便复用配置模板
    • 密码管理器,像 ssh key 这样的信息并不适合明文存储在 Git 中,好在 Chezmoi 的模版语法中允许我们调用常用的密码管理器,从中读取信息

    搞机工具箱 https://www.coolapk.com/apk/com.byyoung.setting

    这是一款功能丰富过头的 Android 手机工具箱,其功能包括但远不限于:

    • Magisk 模块管理
      • 模块安装、卸载、编辑、更新、备份
      • 音量键救转
    • Xposed 模块管理
      • 模块安装、卸载、编辑、更新、备份
    • 应用管理
      • 系统、用户应用安装、卸载、冻结、编辑权限、多开、提取 apk、设置程序语言、备份、还原、IFW 设置
      • 替换国产系统恶心人的应用安装器
    • 系统工具
      • SWAP 设置
      • 查看 Wifi 密码
      • 修改 Host

    这些功能只是我最常用的,它们只是搞机工具箱全部功能的冰山一角,而且由于功能过多且晦涩,导致用户体验很差,上手难度比较高。
    不过总的来说,瑕不掩瑜,是一款不可多得的搞机必备应用。

  • 网上冲浪指南 – 001

    网上冲浪指南 – 001

    This entry is part 1 of 3 in the series 网上冲浪指南

    AstroNvim https://astronvim.com

    一个全功能的 NVim 发行版,开箱即可获得非常完整的 IDE 体验,预设的快捷键很符合我这个前 SpaceVim 用户的使用直觉。它跟 SpaceVim 有很多不同的地方:

    • AstroNvim 使用 lua 作为配置语言,官方提供了一个用户配置模板帮助用户自定义 AstroNvim。
    • 正如它的名称所示,AstroNvim 只支持 neovim 。

    这是我的 AstroNvim 配置 https://github.com/ZeekoZhu/AstroNvim

    Burning Vocabulary https://burningvocabulary.com

    这是一款简单好用的背单词浏览器插件,网上冲浪遇到不认识的单词,只需要用鼠标选中它,插件就会自动查询翻译并展示翻译结果,并且在之后的浏览中,会自动在网页上标注查过的生词。我个人认为,类似的浏览器插件有很多,但上手难度比它低、使用的顺滑度比它高不多:

    我现在会把 Burning Vocabulary 翻译的目标语言设置成英文(就是用英文解释英文),跟沙拉词典搭配使用,因为沙拉词典支持的词典源更加丰富,让我暂时还不能放弃。

    System Rescue https://www.system-rescue.org

    这是一个 Linux 系统急救工具箱,基于 Arch Linux 开发,一共 700M 的镜像大小,可以使用 Ventoy 制作成 Live CD 使用。

    最近我在扩容工作用笔记本 /root 分区时发现了它,自带图形界面跟 GParted,比单纯的 Arch Install ISO 要方便很多。

  • 摩托新手的天鹰 TS150 2023 特仕版磨合期体验

    之前没接触过摩托车,通勤用的都是小电驴,今年拿了摩托车驾照后就加钱买了第一辆摩托车。

    刚入手的第一感觉就是体积大、车身重,骑了一段时间后发现这是俩优点:

    • 体积大,坐垫空间也大,后座体验更好,不会觉得挤
    • 车身重,跑到 60 km/h 以上很稳定,不会像小电驴有种轻飘飘的感觉

    很多人在买车前都比较关心下面的几个问题,我用自己的体验来回答一下:

    关于震动:
    我没有骑过其他的摩托车,跟我之前的小电驴比起来肯定更抖,但在可接受的范围内。连续骑行超过 1 小时,稍微会感觉手麻。然后就是车头在低速震动的时候有“哒哒”的响声,没找出来是什么零件发出的声音,最后就只能装作自己听不见了。

    关于减震:
    不能说跟小电驴的减震没有区别,只能说减震的差距不明显,过减速带、坑洼路面还是尽量慢行吧。

    关于油耗:
    11 升的油箱,加满油 70 多块(2023 年 5 月),夏天极限续航保守估计 350 公里左右。我都是在市区、郊区骑行,感觉这点儿油耗不值得花时间记录,油耗记录 App 装上没多久就卸载了。

    因为没有骑过其他的摩托车,我说不出这车相较于其他车的优点,但是使用过程中印象深刻的槽点还是有一些的:

    • 自动起停:骑行过程中停止超过 3 秒,车辆就会自动熄火,非常适合等灯过路口的场景。如果发动机温度足够,可以直接拧油门重新点火。但是如果长时间熄火等待,发动机降温,就没法用油门启动了,什么时候会无法通过油门启动是无法预测的,所以还是得习惯通过点火开关启动。
    • 车机互联:因为有手机投屏功能,所以我没有安装手机支架,而是把手机放在车头包里面,但是 Moto Fun 的互联功能实在太脆弱了,经常会断开连接。往往想要看看导航路线的时候,车机上显示的就只有一个互联用的二维码。综合我这么长时间的使用体验,开启车机互联并用手机投屏导航,大概有 50% 的时间投屏可以正常工作,40% 的时间断开投屏显示自带的地图,10% 的时间连接完全断开。

    最后分享一下新手的改装,提车没多久就是 618 了,于是就上网整了一些改装配件,主要是为了增强舒适性,毕竟踏板主打的就是骑行舒适度:

    • 加高的风挡,顺便前移后视镜,原装后视镜空出来后可以装个 10 mm 正牙装饰螺丝
    • 护杠,除了防撞还可以提供更大的脚踏空间,另外还可以把背包通过护杠绑在油箱上,非常实用
    • 带靠背的尾箱,需要改装尾箱架,拆装尾箱架需要 13 mm 扳手
    • 带腰靠的坐垫,腰靠功能几乎感受不到,但是可以很好的分隔前后坐的座位空间
    • 180 度后视镜,补盲效果差强人意,正常的小汽车进入左右后视镜盲区之后就会出现在这块镜子的视野中。但是,如果旁边车道的是个五菱 mini 这类的小车,就会被我的肩膀挡住,反而不容易发现,接下来准备试试粘在左右后视镜上的补盲镜

    年轻人的第一次摩托车抛锚

    没想到不到半年时间,我就遇到了第一次摩托车抛锚 —— 无法点火。经过排查后发现是我下车熄火后忘了断电就着急忙慌地离开了,等三小时后回到车子面前的时候,车辆电池电量所剩无几,只能勉强维持屏幕亮起,无法点火。还好停车位置附近就有修理店,花了 40 人民币搭电才重新启动发动机。

    由于电池缺电,重新启动发动机后需要保持发动机持续工作,给电池充电。稳妥起见,我关掉自动起停功能,连着跑了 10 公里,确认熄火后能够正常启动才回了家。

    总结下来,要避免类似情况发生得养成肌肉记忆,熄火后记得断电。

  • 如何使用 Zerotier 连接你家中的设备

    我在家里的旧笔记本上使用 Open My Vault 建立了 NAS,不过我只能在家里连上 WiFi 才能访问它。在过年回老家、出门旅游或者外出办公的时候就没法使用了。虽然在这些场景经常用不上 NAS,不过,“我可以不用,但不能没有”。

    经过一番调研后,我发现我需要的是一个 VPN 软件,通过 VPN 安全地访问运行在家里的网络服务。基于部署难度上的考量,我选择了 zerotier,这是一款非常简单易用的 VPN 软件,免费版可以连接 25 个节点,对于我来说,完全够用了。但是,在国内的网络环境下,节点间的连接往往不太稳定,我在国内没有自己的公网 IP 服务器,所以借助一台香港服务器,来提高 zerotier 网络的稳定性。

    首先,在 my.zerotier.com 创建一个虚拟网络,我选择的私有网段是 10.2.2.0/24,因为这个网段不容易跟常见的家庭路由器内网撞车。

    家里的网络有全局透明代理,可以直接在运行 NAS 的服务器上使用官方的 zerotier 客户端加入 zerotier 网络。

    我没有在路由器上安装 zerotier:

    • 我的 OpenWRT 虚拟机系统版本太奇葩了,没法从官方源安装 zerotier
    • 我希望路由器的功能尽量少一些,毕竟 OpenWRT 跟日常使用的 Linux 系统有很大区别,对我而言有额外的维护负担

    我的 VPS 在香港,也需要加入 zerotier network,直接使用官方的 Linux 客户端就行,我并没有在 VPS 上建立 zerotier moon 服务,这跟我手机上的连接 zerotier 的方式有关。

    手机有时会出门,而且没法设置多个代理,所以就用 v2ray 客户端(SagerNet)将所有访问 10.2.2.0/24 的请求转发到 VPS 服务器。因为 VPS 已经加入了 zerotier 网络,所以手机上就不用安装 zerotier 客户端。笔记本电脑也是同理,这样做还可以避免 zerotier VPN 跟工作 VPN 冲突。

    不过这样的设置也带来了新的问题,对于手机而言,部署在家里的服务在不同网络环境下有不同的 IP 地址,虽然 zerotier 有 DNS 功能,但是我的手机本质上并没有加入 zerotier VPN,所以实际上也没办法使用 zerodns。还好我有自己的域名,在公网上,我把指向家里服务的域名都解析到 zerotier 的私有地址(10.2.2.0/24)。在家里的路由器上,将这些域名强制设置为局域网址(192.168.1.0/24)。

    至此,出门在外的时候,我终于可以随时访问部署在家里的 NAS 了,使用联通 5G 网络运行 iperf3 测试,能够跑到 60Mbps(对比通过 VPS 代理测速的 speedtest.net 结果 120Mbps),应急使用完全足够了。

  • 不花钱提升工作笔记本的电池续航

    我的工作电脑是一台安装 Arch Linux 的轻薄笔记本,虽说 Linux 比 Windows 更加节省资源,但是我的工作笔记本续航比较尿崩,出门必须带充电器,进店必找有插座的位置。看到同事的 mbp 的超长续航不可能不羡慕,但我也不奢望过多,只期望出门后,笔记本能够支撑一下午的正常办公就足够了。

    amd_pstate

    刚好最近注意到 Linux 6.1 内核中集成了 amd_pstate 模块,这是用来实现动态调节 Ryzen CPU 频率的驱动模块,相较于原先的 acpi_cpufreq 驱动, amd_pstate 支持 CPPC(Collaborative Processor Performance Control) 功能,简单来说,CPPC 可以根据系统对性能、功耗的需求,调节 CPU 的工作频率。

    支持 CPPC 的 CPU driver 需要跟合适的 CPU scaling governor 配合使用。后者是 Linux 系统中用来调节 CPU 频率的软件,不同的 gorvernor 实现了不同的 CPU 频率调整算法,跟 CPPC 最搭配的是下面两个 gorvernor:

    • ondemand:基于当前工作负载动态调节 CPU 频率
    • schedutil:基于调度器的反馈动态调节 CPU 频率

    这两种 gorvernor 都能根据操作系统的需要动态降低或提升 CPU 的工作频率,从而实现比较理想节能效果。

    对于运行 6.1 版本或者更新内核的 Linux ,可以参考这个链接启用 amd_pstate 驱动。

    检测 amd_pstate 生效的方式也比较简单,推荐安装 cpupower

    analyzing CPU 14:
      driver: amd-pstate
      CPUs which run at the same hardware frequency: 14
      CPUs which need to have their frequency coordinated by software: 14
      maximum transition latency: 20.0 us
      hardware limits: 400 MHz - 1.90 GHz
      available cpufreq governors: conservative ondemand userspace powersave performance schedutil
      current policy: frequency should be within 400 MHz and 1.90 GHz.
                      The governor "ondemand" may decide which speed to use
                      within this range.
      current CPU frequency: Unable to call hardware
      current CPU frequency: 1.11 GHz (asserted by call to kernel)
      boost state support:
        Supported: yes
        Active: no
        AMD PSTATE Highest Performance: 166. Maximum Frequency: 4.51 GHz.
        AMD PSTATE Nominal Performance: 70. Nominal Frequency: 1.90 GHz.
        AMD PSTATE Lowest Non-linear Performance: 41. Lowest Non-linear Frequency: 1.11 GHz.
        AMD PSTATE Lowest Performance: 15. Lowest Frequency: 400 MHz.
    

    对于笔记本来说,更常见的需求是根据电源状态自动设置性能偏好,这里推荐使用 TLP,为了方便使用,我还安装了 tlpui。TLP 允许我们配置电脑在不同电源状态的 CPU 调节参数:

    • gorvernor
    • 最低频率、最高频率
    • 自动超频开关

    不过 TLP 的自动超频开关有些死板,即使是出门在外使用电池的场景,我也希望偶尔开启 Boost 提高一下 IDE 分析代码的速度。解决这个问题很简单,有两个方法:

    1. 手动按需执行开关 CPU Boost 的命令
    2. 安装 auto-cpureq,这个软件会在后台监听当前的工作负载,会在必要的时候开关 Boost

    经过一段时间的观察与调试,为了尽量减少风扇噪音、提高电池续航,我的笔记本(HP EliteBook 845 G8 / Ryzen 5800U)配置如下:

    • 外部电源:schedutil gorvernor,启用自动超频,限定最低频率在标称频率的 68%(大概 1.1GHz)
    • 内置电池:ondemand gorvernor, 配合 auto-cpufreq 动态调整超频开关

    实际续航测试

    目前的电池状况,标称容量 45wh,电池健康度 76%,屏幕亮度 30% ~ 35%。工作时会使用的软件包括:

    • Webpack Dev Server
    • WebStorm(180kloc TypeScript 项目)
    • Vivaldi 浏览器(通常控制在 30 个标签以内)
    • Firefox 浏览器(通常控制在 3 个标签以内)
    • 飞书 Linux 客户端
    • Telegram

    acpi_cpufreq

    在 acpi_cprfreq 驱动下,我的笔记本电脑的最低运行频率是 1.9 GHz,最高可以达到 4.1 GHz,下面是我记录的两次续航时长。

    roundstart timeend timetime to 10%
    12023-02-06 13:322023-02-06 16:413:10
    22023-02-13 14:112023-02-13 17:353:24

    amd_pstate

    在 amd_pstate 驱动下,最低运行频率可以到 400 MHz,通常会在 900 MHz 徘徊,最高可以达到 4.1 GHz。

    roundstart timeend timetime to 10%
    12023-02-19 10:1514:474:32
    22023-02-20 9:3714:304:53
    32023-03-06 13:3117:314:00

    在 IDE 的使用体验上没有明显区别,小项目依然很流畅,巨型项目该卡的操作还是卡,但是续航的提升非常明显,至少出门重度办公一下午没有续航焦虑了。

    如何进一步改善续航?

    关于这点,我建议你看看 极客湾的观点

    • 尽量减少 Boost 时长
    • 减少 CPU 以外硬件的功耗

    普通消费者几乎没法做硬件上的改进(最多禁用独显以提高续航),只能从减少 Boost 时长上入手,毕竟是否开启 Boost、需要多长时间的 Boost,这些参数是可以通过软件调节的,上面提到的 auto-cpufreq 就是干这件事的,这个软件是用 python 编写,除了可以通过配置文件来设置之外,自己也可以根据实际体验和偏好来调节相关算法。

  • 给小新 Pad Pro 2021 刷入 GSI 镜像

    This entry is part 2 of 3 in the series 小新 Pad Pro 2021

    上回书说道,我成功解锁了小新 Pad Pro 2021,但解锁不是最终目的,让 Pad 用上不那么拉胯的原生安卓才算成功。

    准备工作

    • android-platform-tools
    • 一台已经解锁了 bootloader 的小新 Pad
      • 需要已经升级到 ZUI 14,否则自动旋转会有故障
    • 一个心仪的 GSI 镜像,你可以在这里挑选,我选择的是带有完整 GApps 的 LineageOS 19 GSI 镜像。
    • 原厂固件中解压得到的 vbmeta.img 跟 boot.img
    • 用来启用自动亮度调节的 Magisk 模块

    开搞

    下面的内容主要参考这篇帖子

    首先进入平板系统,启用开发者模式,允许 adb 调试,然后通过 USB 连接到电脑。接着在电脑上执行下面的命令:

    $ adb reboot bootloader
    $ fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img
    $ fastboot reboot fastboot
    $ fastboot flash system your-gsi-system.img

    继续通过平板上的音量键,进入 Recovery 模式,然后选择清除数据(工厂模式重置),最后重启设备。

    第一次启动可能会比较慢,如果发现卡在联想 Logo 页面超过了 3 分钟了,可以长按电源键重启设备,一次不行,就多试几次,这种情况通常只会出现在第一次启动系统。

    提高使用体验

    在 LineageOS 19 中,以往小新 Pad Pro GSI 系统中会遇到的自动旋转失效问题已经不存在了。但是原生安卓缺少国产 ROM 的“平行视界”功能,运行不适配横屏模式的应用的体验跟 iPad OS 一样,会强制竖屏。所以还是得安装一个旋转管理器,强制部分应用横屏展示得忍受一下 UI 错位 ,我用的是这个 Xposed 模块 —— 自由屏幕旋转

    另一个提高不适配横屏应用使用体验的方法就是安装 米窗 ,可以用来替代 ZUI 自带的小窗功能,据说把它设置为系统应用体验会更好,但是因为 GSI 已经不会随便杀后台了,所以我也没有对它做特别地处理。

    自动亮度调节功能需要刷入启用自动亮度调节的 Magisk 模块,默认的自动亮度会偏暗,但是 Android 12 有自适应亮度调节功能,会根据用户手动调节亮度条的习惯调整自动亮度的明暗,经过几天体验下来,自动亮度调节功能基本正常。

    原生系统的后台管理机制比较宽松,为了能让垃圾应用退出后老实一些,我选择用 scene4 的“应用偏见”自动冻结垃圾国产应用(例如,淘宝、京东)。

    至于快充,由于我的手机充电速度是 Pad 的 6 倍,实在很难感受到是否存在快充变慢的情况。至少系统界面会在使用原装充电器的时候显示 “Charging Rapidly”的文字。

    关于续航,Lineage OS 系统设置中有一个默认启用的 Screen Saver 选项,这是一个类似“常亮显示”的功能,会在屏幕熄灭后在屏幕上显示一个时钟。小新 Pad Pro 虽然使用的是 A 屏,但是硬件设计上可能压根不支持“常量显示”,导致屏幕耗电量剧增。实测关掉 Screen Saver 后,待机续航可以提升一倍(从一天不到提升到两天),而且充电速度也会有明显的提升。

  • 不靠官方,自己动手解锁小新 Pad Pro

    This entry is part 1 of 3 in the series 小新 Pad Pro 2021

    联想小新 Pad 的 官方解锁页面下线了,客服也不回邮件,为了摆脱疯狂杀后台的 ZUI,我决定尝试自己动手为小新 Pad Pro 2021 解锁,刷入第三方 ROM。

    本文内容主要参考这篇帖子编写,并在原帖基础上补充了一些避免实操踩坑的细节。这个文章的方法对于小新 Pad 2022 可能同样有效?

    准备工作

    • 基础的计算机命令行操作能力
    • 认识 16 进制
    • Windows 电脑
    • 你的小新 Pad 的序列号,关机后按住音量 – 和电源键开机,进入 bootloader 模式后就可以看见序列号
    • 高通刷机工具 QPST
    • 小新 Pad Pro 2021(Lenovo P11 TB-J716F)原厂固件
    • android-platform-tool 这个都不知道在哪里下载还是建议不要刷机了
    • 一个二进制文件编辑器
    • 一个用来解锁 Bootloader 的 sn.img 文件,这个文件对应的设备序列号是 HAHAHAHA

    开搞

    1. 下载并安装 QPST 工具,也请一并安装附带的驱动程序。安装完成后从开始菜单找到 QFIL 工具并启动
    2. 解压原厂固件到文件夹,请确保文件夹的路径没有空格、中文等特殊字符
    3. 在 QFIL 选择 flat build 选项,选中刚刚解压出来的 prog_firehose_ddr.elf 作为 Programmer 文件
    4. 将 Pad 关机,等到完全息屏后按住音量 + ,再将 Pad 通过 USB 连接到电脑上,这时 Pad 会进入 EDL 模式。EDL 模式跟 fastboot 有一个很大的不同,如果一段时间内没有操作,EDL 模式会超时,这时 QFIL 工具虽然还能检测到连接上的设备,但是对设备的操作都会失败。
    5. 打开 QFIL 工具的 Tools 菜单,选择 Partition Manager,等待几秒,会弹出一个新的窗口
    6. 新窗口中选择 fpinfo 分区,右键点击,选择 Manage Partition
    7. 点击 Read Data,QFIL 从设备上下载数据并存放到  AppData\Roaming\Qualcomm\QFIL\COMPORT_xxx
    8. 备份刚刚下载的文件,文件名包含数据分区的地址 0x2208,这个文件里面存储了你设备的序列号,请务必小心保管
    9. 使用二进制编辑器编辑上述文件的一个副本,把文件开头的序列号替换为 HAHAHAHA
    10. 回到 QFIL,点击 Load Image 把刚刚编辑后的文件上传到设备上
    11. 接着用同样的办法下载 frp 分区文件,文件名包含数据分区的地址 0x2188,也请妥善备份这个文件
    12. 使用二进制编辑器编辑上述文件的一个副本,把文件末尾的最后一个字节从 00 改为 01,如果你的文件末尾已经是 01 了,可以直接跳转到第 14 步
    13. 回到 QFIL,点击 Load Image 把刚刚替换的文件上传到设备上
    14. 点击 Close,等待 EDL 模式重置完成后,拔出线缆
    15. 按住电源键跟音量 -,开机后进入 bootloader 模式,切记,此时千万不要进入 Android 系统,否则刚刚进行的修改会被还原。
    16. 进入 bootloader 后,屏幕上显示的序列号应该为 HAHAHAHA。如果发现修改没有生效,请重新执行上面 4 ~ 14 步的操作,注意自己的操作是否有遗漏。
    17. 执行命令: fastboot flash unlock sn.img
    18. 执行命令: fastboot oem unlock-go
    19. 恭喜你,你的设备已经成功解锁 bootloader
    20. 最后收尾,参考之前的步骤,使用 QFIL 工具还原 0x2208 以及 0x2188 分区。
  • 一款人体工学键盘,但是免费

    对于数字时代的打工人来说,人体工程学键盘更像是劳保用品,可以在一定程度上缓解长期使用键盘带来的手部不适。这篇文章中,我将向你介绍如何把手边的键盘变得更加“符合人体工学”。

    不标准的指法

    标准指法其实很不科学,按照标准指法摆放双手会让手腕呈现出一种非常怪异的姿势,我个人建议不要使用标准指法,除非你在使用类似 XBows 等专门为标准指法优化的人体工程学键盘。

    标准指法示例
    配合标准指法的手掌摆放示意

    下面的图片可能是很多人目前正在使用的指法,使用这种指法已经比标准指法要“人体工程学”很多了,至少在按键的时候不用扭曲左手手腕:

    每根手指负责按一种颜色的按键,食指分别放在 F 跟 J 上

    总之,我建议你不要迷信标准指法,可以根据自身条件在标准指法上改造,避免以扭曲的姿势使用键盘。

    用大拇指分担小拇指的功能

    如果你仔细观察,你会发现键盘的并非是按照字母区的中心对称排布的,这意味着我们的右手小拇指需要承担更多的功能,对于程序员来说更是如此,在代码中经常会用到的各种符号也更加集中在右手小拇指区:

    常见的 87 键键盘,很多笔记本电脑采用类似的布局

    同样的,如果我们经常要用到位于数字区的符号,也得让小拇指配合按住 Shift 键帮助输入。这样看来,力气最小的小拇指除了需要托住手机之外,还得频繁地用来打字,是时候给小拇指减负了。

    根据我的个人经验,大拇指力气很大,但用处很少(只用来痛快地敲击空格键),很适合用来为小拇指分担工作。如果你并非天赋异禀,那么你的大拇指能够轻松按到的按键应该是 alt 键跟空格键。空格键的主要用途是输入单个空格,或者把输入法的候选词提交到输入框中。alt 键通常用作修饰键,只在按组合键的时候才会用到,不过据我观察,大多数人只会用到一个 alt 键,另一个 alt 键往往常年吃灰。

    使用 Kmonad 打造免费人体工程学键盘

    把这两个按键利用起来,作为符号输入的组合键,就可以有效地把小拇指的工作分给有力的大拇指。想要完美地实现这个功能,通常需要依赖具有可编程功能的键盘。Kmonad 就是一款用来给“任意键盘”编程的开源软件,它支持 Windows、Linux、macOS 这些主流的操作系统,允许用户使用类似 Lisp 的配置语法给自己的键盘编程。你可以查看 Kmonad 的项目说明来学习如何使用这款软件,在这里我会分享我的“人体工程学”键盘配置思路。

    Kmonad 中最常用的功能是“层”,每一层下的键盘按键功能都可以自定义,每层中可以设置一些按键用来切换键盘当前所在层,只要你的键盘按键足够多,你可以为创建无限的按键层。要实现上面描述的字母区输入符号的功能,就需要单独创建一个符号层,然后通过空格键或者 alt 键切换。

    对于我个人而言,我几乎用不到长按空格键,所以我就把“按住空格超过 200 毫秒”作为临时切换到符号层的按键操作。

    按住空格键激活的符号输入层

    我的符号层除了安排了符号之外,还安排了一些功能键(回车键、退格键以及方向键)跟按键宏(在 F 键位上的 =>),主要是为了减少右手小拇指的移动距离,避免扭曲手腕。可以看到就算把方向键也挪到了字母区,还是留了不少空位,之后可以根据自己的习惯再把空位填满。

    其实除了空格键很少会被长按之外,数字区的按键也很少被长按,本着物尽其用的原则,我把长按数字区超过 300 ms 设置成了的对应的符号,这样既可以避免使用小拇指按住 Shift 键,又可以保留输入符号的按键位置习惯。

    添加快捷键层

    为了提高一些软件的使用效率,我们或多或少都会用到一些快捷键,但是一些快捷键的键位设计可能跟我们的生理结构相违背(你可以试试用一只手按 ctrl+shift+t)。这些快捷键在提高效率的同时,也在折磨我们的手指关节,因此,一些具有人体工程学结构的键盘,会把修饰键放在离大拇指比较近位置,以减少修饰键到字母区的平均距离,避免移动手掌造成手指关节的扭曲。

    上面提到,在普通的键盘上,空格键跟 alt 键都是大拇指容易触及的常用按键,我已经把长按空格键分配给了符号层,所以就用右侧的 alt 键作为新的“快捷键层”的切换入口。

    按住右侧 alt 键激活的快捷键层

    其他的小技巧

    我还搜集了一些其他的“键盘小妙招”,同样可以帮助你减少按键带来的手掌移动,保护你的手腕,这些功能经过我的验证都可以通过 Kmonad 实现。

    • 交换 Ctrl 跟 CapsLock
    • Auto Shift,长按字母键输入对应的大写字符,就跟手机上的虚拟键盘一样
    • Shift 粘滞键,单击 Shift 后按下其他按键就可以实现按住 Shift 的组合键输入
    • Tap Dance,给同一个按键设置“单击”、“双击”以及对应击键次数后长按的功能,例如,单击输入 Esc 双击输入 CapsLock、单击长按切换按键层。

    最后,其实我也不太确定按照这篇文章改造的键盘是否真的能够降低手部劳损的速度,至少在我个人的体验上,经过这样的一番改造的确减少了很多需要扭曲手腕的按键场景,对手部的疲劳有一定的缓解作用。如果你正被类似“键盘手” 、“鼠标手”的症状困扰,还是建议先去正规医院检查治疗,这篇文章介绍的方法最多只能作为一个低成本的辅助手段。


    我的 Kmonad 键盘配置

Index