ubuntu-device-flash 在 Nexus 7 2013(Android 5.0.2)上失败 - 无法将图像复制到 /cache/recovery/

ubuntu-device-flash 在 Nexus 7 2013(Android 5.0.2)上失败 - 无法将图像复制到 /cache/recovery/

我一直尝试按照此处的说明,从运行 ubuntu 14.04 LTS 的笔记本电脑在新的 Nexus 7 2013(Android 5.0.2)上安装 ubuntu-touch:

https://developer.ubuntu.com/en/start/ubuntu-for-devices/installing-ubuntu-for-devices/

刷新设备失败,并显示消息“映像未复制到 /cache/recovery/,因为它“是一个目录” - 请参阅下面的输出。然后设备启动到恢复模式,但不再继续 - 即未安装 ubuntu 作为操作系统。

有人可以建议一个解决方案来成功安装触摸吗?

frank@UDroid:~$ ubuntu-device-flash touch --channel=ubuntu-touch/stable/ubuntu --bootstrap
2015/09/14 20:40:09 Expecting the device to be in the bootloader... waiting
2015/09/14 20:40:10 Device is |flo|
2015/09/14 20:40:10 Flashing version 1 from ubuntu-touch/stable/ubuntu channel and server https://system-image.ubuntu.com to device flo
2015/09/14 20:40:36 Start pushing /home/frank/.cache/ubuntuimages/ubuntu-touch/stable/ubuntu/flo/version-1.tar.xz to device
2015/09/14 20:40:36 Start pushing /home/frank/.cache/ubuntuimages/gpg/image-master.tar.xz to device
2015/09/14 20:40:36 Start pushing /home/frank/.cache/ubuntuimages/gpg/image-signing.tar.xz to device
2015/09/14 20:40:36 Start pushing /home/frank/.cache/ubuntuimages/pool/custom-16a192b4f7331b257e9a60c659b0ae5f4729d642965ea28415c1ea0e7ca8d7ed.tar.xz to device
2015/09/14 20:40:36 Start pushing /home/frank/.cache/ubuntuimages/pool/device-9569c7c1edb3a4944e1db5d2a966e58a2820a3e2f2d38eb145f27111b2dea978.tar.xz to device
2015/09/14 20:40:36 Start pushing /home/frank/.cache/ubuntuimages/pool/ubuntu-59b0c7aa8af63dda3a06005a6087c1faa4ed8993321293b276e7f7021d0cb0a3.tar.xz to device
2015/09/14 20:40:36 error pushing: failed to copy '/home/frank/.cache/ubuntuimages/gpg/image-master.tar.xz' to '/cache/recovery/': Is a directory

答案1

所以几天前我也想玩 Ubuntu Touch,但遇到了这个确切的问题。

问题:截至 2015 年 9 月 17 日,Ubuntu Touch 无法按照官方指南在我的 Nexus 7 上正确安装。

Nexus 7 是一款“参考”设备,因此它肯定应该能够正常工作,并且已知它能够正常工作。我的设备出了什么问题?

在互联网上搜索(xda、#ubuntu-touch、#ubuntu-kernel)后,我发现 2014 年末或之后制造的较新的 Nexus 7“flo”型号搭载了 Android L,其 eMMC 控制器/硬件/某些东西的修订版本有所不同。华硕发布了内核更改:

mmc: add 5.0 emmc support

bug: 17968808 Kernel change for new eMMC v5.0 parts for FLO/DEB

Change-Id: Ia18152457fe3ff70401b199c267fa37374b9d544
Signed-off-by: hsuan-chih_chen <[email protected]>
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
index dc4b125..ea1eca7 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -293,7 +293,7 @@
    }

    card->ext_csd.rev = ext_csd[EXT_CSD_REV];
-   if (card->ext_csd.rev > 6) {
+   if (card->ext_csd.rev > 7) {
        pr_err("%s: unrecognised EXT_CSD revision %d\n",
            mmc_hostname(card->host), card->ext_csd.rev);
        err = -EINVAL;

所以我有预感就是这个。使用官方工具获取的内核没有应用补丁。我们需要构建一个修补过的内核,并在启动和恢复映像中替换它。Ubuntu 内核的 flo 分支尚未应用修复(还没有?)。

我使用 flo 分支上的 ubuntu-wily 源代码构建了一个修补的内核,并创建了似乎可以正常工作的启动和恢复映像。我们没有接触引导加载程序,所以这应该是安全的,但如果以下步骤导致您的设备损坏,我不承担任何责任。

再次强调,仅当您拥有搭载 Android L 的 Nexus 7 (2013)“flo”时才需遵循以下步骤。

从这里下载 boot.img 和 recovery.img: https://github.com/ddagunts/UTCWM_N7_patch/blob/master/boot.img?raw=true https://github.com/ddagunts/UTCWM_N7_patch/blob/master/recovery.img?raw=true

1)将您的设备退回库存:

a. 获取 Google Factory 镜像“razor-lmy48m-factory-7c77e178.tgz”

b. 解压存档并在引导加载程序中使用设备运行“flash-all.sh”

c. 让平板电脑启动,然后关闭。

2)启动引导加载程序。

3)运行“fastboot flash boot boot.img”

4)运行“fastboot flash recovery recovery.img”

5)启动设备进入恢复模式

6)运行“ubuntu-device-flash touch --channel=ubuntu-touch/stable/ubuntu”# 这应该运行并显示:“重新启动进入恢复到闪存” - 等到程序退出。

7) 设备应自动重启并开始旋转 Ubuntu 徽标。等待 - 需要 5 到 10 分钟。我相信这是 Ubuntu 自行安装。

8) 设备将重新启动并卡在 Google 徽标上。关闭设备电源。

9) 将设备启动到引导加载程序。重复步骤 3 和 4 以重新刷新启动和恢复映像。

10) 关闭电源并启动设备。Ubuntu 应该开始启动。

相关内容