前言

拿到 Chromebook, 我直接到手就… 才怪! 我体验了原版 ChromeOS 一两个月, 作为网课机还是很香的. 不过为了自由跟折腾, 我还是决定来刷一个 Debian. 下面是我的刷机记录.

开启 ChromeOS 的开发者模式

根据 Google 搜索的第一个结果, 按如下步骤即可开启开发者模式:

开启开发者模式会清除 ChromeOS 所有的数据, 请提前做好备份

  • 启动 Chromebook
  • 同时按住 Esc, 刷新键跟电源键, 直到屏幕变化
  • 当屏幕上出现 “Chrome OS is missing or damaged. Please insert USB stick” 提示时, 按 Ctrl+D
  • 如果有其他提示的话, 按 Enter
  • 设备会自动重启并启动 Chromebook 初始设置
  • 当开机遇到白屏提示 “OS verification is off” 时, 按 Ctrl+D 跳过即可

参考: https://www.xda-developers.com/how-to-turn-on-chrome-os-developer-mode/

解除 Hardware Write Protect

如果你像我一样并不知道这个是什么的话, 顺着网上的教程, 你可能会直接快进到第三步, 然后得到一个报错:

Hardware write-protect enabled, cannot flash Full ROM firmware.

图来自视频

提示图

根据 MrChromebox Wiki 上的说法, 根据产出时间的不同, 解除 Hardware WP 的方法大体上有三种:

  • 通过一个跳线/开关解除: 这适用于 2013 Chromebook Pixel 之前的设备 (2012 - 2013)
  • 通过扭开一个螺丝解除: Pre-CR50 设备 (2014 - 2017), 包括所有的 Haswell, Broadwell, Baytrail, Skylake, Braswell 架构的设备
  • 通过拔掉电池启动或是 CCD 命令行工具解除: CR50 设备 (2017 - now), 包括所有的 Kabylake, Apollolake 架构的设备

HP Chromebook 13 g1 (13g1) 不够新也不够旧, 要采用第二种方法解除. 具体的拆机流程可以参照参考里视频, 这里给出文字描述版.

首先长按电源键 关闭电源 (安全第一!), 然后把 Chromebook 翻到背面, 撕掉两条防滑条. 要注意防滑条是两层的, 一层橡胶垫一层黑色的有点脆的纸, 撕开一端时注意看看那层纸有没有被一起弄起来. 撕开之后能看到五个隐藏的螺丝(貌似是上三下二, 一个五个). 然后扭开外面的六个螺丝, 把背板撬开, 就能看到 Chromebook 的里面了.

螺丝位置

随后在标注位置找到所谓的 “Hardware write-protect screw”, 扭开之后, 随便找个地方放好扭出来的螺丝即可.

螺丝位置

然后再把底盖盖回去就完事了. 运气好的话防滑垫还能粘回去, 不过一般会发生因为撕防滑垫导致防滑垫发生塑性形变, 变长一点点, 从而塞不下原来的框框里, 导致防滑垫两边凸出来的惨剧 :(

参考:

刷入第三方 UEFI 固件

请出大名鼎鼎的 MrChromebox.

按 Ctrl+Alt+T, 打开 crosh. 输入 shell 进入 shell, 随后以 非 root 用户 (不过一般都不是 root 啦) 执行如下命令:

cd; curl -LO mrchromebox.tech/firmware-util.sh && sudo bash firmware-util.sh

如果产生了一个 ’noexec’ 错误, 那么就执行下面的三行版本 (把脚本移到了 /usr/local/bin 并且设了 755 权限):

cd; curl -LO mrchromebox.tech/firmware-util.sh
sudo install -Dt /usr/local/bin -m 755 firmware-util.sh
sudo firmware-util.sh

如果报了一些证书错误之类的 (certificate related errors), 那么在 curl 里加入 -k 参数来略过 SSL 证书检查.

cd; curl -LOk mrchromebox.tech/firmware-util.sh && sudo bash firmware-util.sh

脚本下载成功并执行之后, 如同上面的提示图在选单里选 2 刷入新的 UEFI 固件即可.

刷入之后将不能再启动 ChromeOS, 请提前做好备份

当然你在刷完之后的系统里再运行这个脚本, 然后刷回原版 BIOS, 然后再刷回 ChromeOS, 就能回到咕噜咕噜的怀抱了.

安装想要装的系统

直接按正常的装系统的方式装系统就可以了, 跟其他电脑一模一样.

系统推荐:

  • ChromeOS, 原装正版
  • GalliumOS, 一个为 Chromebook 设备设计的轻量级 Linux 发行版. 基于 Xubuntu 制作, 采用xfce桌面环境, 与 ChromeOS 在界面上相仿
  • FydeOS, 国产 ChromeOS, 据说做了不少本地化工作
  • Debian, 好!

系统 推荐: Windows

我直接盲选 Debian + Xfce4 桌面.

声卡驱动

在努力翻了一个横跨五年, 整整 500 楼的 issue 之后, 我找到了修好声卡驱动的方法.

具体步骤跟此 issue 中的 此层 以及其 引用层 大体相同:

首先下载两个 zip, 分别是驱动跟配置文件: dfw_sst.bin.zip, sklnau8825adi.zip

然后解压出来 dfw_sst.bin 跟一个文件夹 sklnau8825adi, 执行下面的命令:

sudo cp dfw_sst.bin /lib/firmware/intel
sudo ln -s dsp_fw_release_v969.bin dsp_fw_release.bin
sudo cp -r sklnau8825adi /usr/share/alsa/ucm2

然后编辑 /etc/default/grub, 在 GRUB_CMDLINE_LINUX_DEFAULT 配置项中增加 intel_iommu=off, 然后执行:

sudo update-grub

基本上就是有人去 ChromeOS 里把驱动抓了出来(dfw_sst.bin), 然后又写好了给 pulseaudio 的配置文件(sklnau8825adi). 经过测试之后又发现这个驱动跟牙膏厂的 iommu 冲突了, 然后就加个内核启动参数. 一番折腾就差不多了.

重启之后, 在面板里点音量的小喇叭图标打开混音器配置, 配置里修改对应的 “侧写”(为啥叫这名啊 ?_? ) 应该就能把声音导到扬声器/耳机里了.

“侧写”

比如像上图那样就是扬声器出声.

如果执行了上面的步骤还是不行的话, 可以试试这个 Repo: https://github.com/windirt/chromebook_sound, 不过这个 repo 看起来很玄学就是了.

总结

Debian 香! 折腾了这一套下来终于刷到 Dabian 了. 续航跟 ChromeOS 差不多(甚至还久点), 只要不装到 SD Card 上就可以正常休眠 (SD Card 休眠的时候有几率被硬件 umount), 虽然 32 G 有点小, 不过基本也够用了, 远程开发还是爽的.

那么现在来做被我推后好几天的作业吧 XD