在hammerhead(Nexus 5)上安装LineageOS

写在前面的一些经验教训

基本要求

解锁bootloader

本步骤每台设备只需要运行一次

警告!:解锁bootloader将删除设备上所有数据。处理前请确保已经备份设备上数据。

  • 通过USB连接设备和PC

  • 在主机上执行如下命令:

adb reboot bootloader

也可以通过按键组合启动进入fastboot模式:首先关闭手机,然后同时按住Volume Down + Volume Up(即同时按住音量增大和减小键),然后按下电源键,直到启动菜单出现。

注意:首次操作需要手机上授权

  • 当手机进入fastboot模式后,在主机端通过以下命令验证:

fastboot devices
  • 输入以下命令解锁bootloader

fastboot oem unlock

只有oem unlock之后才能够安装自定义编译的非官方操作系统

  • 如果设备没有自动重启,则手工重启。重启以后手机就已经是unlock了。

  • 当手机重启完毕后,你需要重新激活USB debug

使用fastboot安装定制recovery

  • 下载一个定制recovery,例如可以下载TWRP,例如twrp-x.x.x-x-hammerhead.img

虽然构建hammerhead(Nexus 5)的LineageOS ROM中构建了recover.img,并且也能够在这个recover.img支持下完成LineageOS的刷机。但是发现对GApps支持不佳,最后还是重新刷了标准的TWRP Recovery

  • 通过USB连接手机和主机

  • 在主机的终端输入以下命令:

adb reboot bootloader
  • 将recovery刷入手机设备

fastboot flash recovery recovery.img
  • 现在再次重启进入recovery来验证这个安装:

首先关闭手机,然后同时按住Volume Down + Volume Up(即同时按住音量增大和减小键),然后按下电源键,直到启动菜单出现。使用音量键导航,并通过电源键选择"RECOVERY Mode"

从recovery安装LineageOS

Google Apps 可以选择安装Nano或者Pico - 出于最小化安装并且很多Google服务在墙内无法使用,所以我选择安装Pico包。

  • 将LineageOS .zip包和需要安装的第三方包推送到根目录下的/sdcard目录

adb push filename.zip /sdcard/

实践:

adb push lineage-14.1-20171201_032348-UNOFFICIAL-hammerhead.zip /sdcard/

推荐使用以上方法 - 如果不需要保留设备数据,可以通过TWRP将设备存储和缓存中所有数据清理掉。然后在recovery模式下,使用上述命令推送image之后,再推送Open GApps。两者都通过TWRP的install完成安装就可以获得一个完全干净的系统。

这里可能出现一个报错(原因未知,重新刷了TWRP,没有再遇到过,似乎和自己编译的recovery.img有关)

adb: error: connect failed: device unauthorized.
This adb server's $ADB_VENDOR_KEYS is not set
Try 'adb kill-server' if that seems wrong.
Otherwise check for a confirmation dialog on your device.

解决方法是将~/.android/adbkey.pub存放到手机设备的/data/misc/adb/adb_keys(或者相反),方法可以通过USB,e-mail,或者临时文件上传服务。

参考How to Fix ADB Unauthorized Error

首先将手机中设备密钥下载

adb pull /data/misc/adb/adb_keys

然后将adbkey.pub内容复制到adb_keys再上传回手机

cat ~/.android/adbkey.pub >> ~/adb_keys
adb push ~/adb_keys /data/misc/adb/adb_keys

使用sideload方式刷入ROM(成功)

使用sideload方式并不推荐,曾将尝试过在Android 6.0.1的手机上使用,切换到recovery时候,采用sideload提示:

connecting...
falling back to older sideload method...
error: no devices/emulators found

此时采用adb push lineage-14.1-20171201_032348-UNOFFICIAL-hammerhead.zip /sdcard/则可以恢复

  • 启动手机到Recovery模式

  • 使用菜单擦除cache,system,然后又选择了factory reset - 实际上把整个系统完全擦除干净了(也导致无法从/sdcard/目录安装)

根据提示,有一个sideload方式

  • 进入update系统菜单

Apply update > Apply from ADB

提示可以adb sideload,所以在终端执行

adb sideload lineage-14.1-20171201_032348-UNOFFICIAL-hammerhead.zip

相当于完全重新刷新系统

安装Open GApps

参考opengapps FAQ - 官方仅支持TWRP Recovery,其他Recovery方式都不是officially supported的。看来,我前面采用自己编译的recovery.img确实存在冲突,所以还是回滚到最初步骤,重新安装一次TWRP Recovery和重新刷一次LineageOS。

使用sideload方法安装open_gapps(失败)

由于使用apply update方法安装Google Apps失败,所以尝试sideload方法

adb sideload open_gapps-arm-7.1-pico-20171201.zip

但是提示错误信息:

Finding update package...
Opening update package...
Verifying update package...
Update package verification took 16.1 s (result 0).
Installing update...
E:Failed to find META-INF/com/android/metadata in update package.
...
Open GApps pico 7.1 - 20171201

- Mounting
- Gathering devices & ROM information
- Performing system space calculations

Insufficient storage space available in System partition. Your may want to use a smaller Open GApps package or consider removing some apps using gapps-config.
See:'/sideload/open_gapps_log.txt'
for complete details and information.

- Copying Log to /sideload
- NO changes were made to your device

Installer will now exit...

Error Code: 70
- Unmounting

E:Installation error in /sideload/package.zip
(Status 70)

Restarting adbd...
Installation aborted.

使用adb推送google gapps

在Lineage OS的 About Phone > Build number 上连续点击7次,开启了developer模式。

然后在Developer options中设置以下项目:

  • Android debugging - 即开启ADB接口

  • Debugging notify - 可选

然后在手机端确认信任主机连接。

之后,使用adb devices就可以看到设备:

$ adb devices
List of devices attached
02211e9ec9623837        device

此时推送gapps就可以完成

adb push open_gapps-arm-7.1-pico-20171201.zip /sdcard/

但是,通过recovery模式安装这个zip包,依然不能成功。

参考

Last updated