首先亚马逊已经退出中国大陆市场了,简单的说就是书城不再有中国大陆的正版书,并且kindle.cn的国区账号不再提供服务,这不代表他废了,你可以使用kindle.com的国际服账号来享受原来的个人文档邮箱推送服务

2019年收了一个二手的Voyage,然后21年出掉了,如今又收了一个558用于折腾(

本文针对Kindle8,也就是入门款的售价558元的不带前光,后盖平整,配置为512M+4G的版本,定制的咪咕版同理(就是在退出中国大陆市场前那次打卡xx天全返的活动的机器),CPU均为iMX6

至于为什么不是其他机器,因为亚马逊在新的kindle上增加了Bootloader锁(BL锁)难以越狱折腾(KO2,PW4,2019年有前光的入门款K10,时间线可以参考 维基百科

咪咕版则可以通过绕过启动验证的方式启动第三方系统,但是有锁,uboot还是只能启动原版的,
本文也会讲述Kindle刷安卓的相关问题。

系统

  1. 亚马逊原装Linux系统,遵循GPL协议,代码是开源的
  2. Kdroid,一个需要花费160元买激活码的闭源第三方Android,并没有遵循协议开源,Android4.4
  3. Crackdroid,上方的破解版,无需激活码,免费提供,但由于被大量奸商以“刷安卓不收费,xx收费”的形式进行付费刷机,目前已大范围撤包(咩咩有,如果你能证明你不是奸商并且自用的情况下我可以发给你以用于学习,并请在24小时内删除)
  4. Kosp,由Ygjsz主重新开发的Android 5.1.1 AOSP,只适用于亚马逊板558和咪咕板558,是开源的
  5. 咪咕板系统,是严重阉割深度定制的Android 5.1.1,可以在亚马逊板558和咪咕板558上运行

越狱

既获取系统的root权限,这是刷机和备份的前提
书伴的文章
或者 拆机短接越狱
或者 拆机越狱

备份

相当于后悔药,假如你刷了Android想刷回来,这可以让你完整的还原到原来的状态,但是需要花费比较多的时间,适用于所有Kindle

提供一种新的方案,直接挂载usb模式:
在kindle上运行

dd if=/dev/mmcblk0boot0 of=/mnt/us/mmcblk0boot0.img

插上数据线,把这个mmcblk0boot0.img复制出来,拔掉usb
在kindle上运行这些命令,usb插上就会出现整个emmc的u盘,将他dd或者win32diskimage备份出来

rmmod g_mass_storage
modprobe g_mass_storage file=/dev/mmcblk0

可以手动备份u盘分区的数据(3G)那只要备份前面700m就行,还原回去后插电脑格式化一下拷贝回去就行

dd if=/dev/disk4 of=mmcblk0-700m.img bs=100M count=7

使用局域网netcat的办法:


需要一台安装了netcat命令的Linux或者Mac机器用于存储备份镜像,下面称其为服务端,需要开放防火墙,Windows太麻烦了而且可能出错,你要是没有手机上装个termux也不是不行

# 服务端
nc -l 12345 -vv | dd of=保存文件名
# Kindle上
dd if=分区路径 bs=10M count=1  | nc 服务端ip 12345 -vv

也可以反过来,让服务端连Kindle,但是如果你的nc不支持-q 0传输完成不会自动退出

# 服务端
nc -q 0 Kindle的ip 12345 > 保存文件名
# Kindle上
dd if=分区路径 bs=10M | nc -l -vv -p 12345

好了,你已经学会如何使用netcat了,分区有

/dev/mmcblk0boot0
/dev/mmcblk0boot1
/dev/mmcblk0
/dev/mmcblk0p1
/dev/mmcblk0p2
/dev/mmcblk0p3

咪咕那种Android系统的请拆机解除启动验证,并且启动twrp后,在twrp里 adb pull 分区路径 进行备份,分区在 /dev/block/ 中,一样是备份下面3个就行,路径自己改一下
请举一反三,我就只举第一种例子,单数行是服务器运行的,双数行是Kindle上运行的,手动一行行运行

nc -l 12345 -vv | dd of=boot0.img
dd if=/dev/mmcblk0boot0 bs=10M | nc 服务端ip 12345 -vv
nc -l 12345 -vv | dd of=boot1.img
dd if=/dev/mmcblk0boot1 bs=10M | nc 服务端ip 12345 -vv
nc -l 12345 -vv | dd of=32m.img
dd if=/dev/mmcblk0 bs=32M count=1 | nc 服务端ip 12345 -vv
nc -l 12345 -vv | dd of=full.img
dd if=/dev/mmcblk0 bs=10M | nc 服务端ip 12345 -vv

最后那行会非常慢,请慢慢等,最好插上充电器,这样锁屏不会断开WiFi,完成了会自动退出,可以看输出文件大小和网卡速度来确认是否有在传输,full的大小和设备rom大小差不多(比如4G、16G),出现failed则为错误了,请自己Google查查报错信息,一般都是局域网无法互相通信或是防火墙没关/端口没开放

刷机

先看 Kindle刷机指南Ver2.2 220305.pdf 写的很详细了,请逐字看完
其中刷入Android的uboot,你可以把main-htmlviewer.tar.gz解压,进到最里面的文件夹有个uboot,把它dd到mmcblk0boot0,然后重启的时候长按电源键使其闪烁两次橙色灯后在绿灯闪烁时放手,进入fastboot,可以避免概率变砖。

mft短接救砖

就跟短接越狱一样,但是u-boot.bin需要换成 这个 里面的heisneberg,
点start,拔掉电池,短接,插线,长按3s开机,这时候进度条再走了,可以把电池插上,
然后再fastboot flash bootloader uboot把上面的Android的uboot刷进去

在刷了Android后还原亚马逊Linux

首先需要dd和Python3和adb工具,都配到path里,在备份存放位置打开终端或cmd
刷入uboot

adb push boot0.img /tmp/x
adb shell dd if=/tmp/x of=/dev/block/mmcblk0boot0
adb shell rm /tmp/x

分块刷入emmc,先python3或者python启动python3然后贴进去回车,跑完了Ctrl+D退出
Windows请自己去装个dd for windows

import os
ddif='full.img'
ddof='/dev/block/mmcblk0'
ddbs=str(100*1024*1024)
i=0
while True:
  print("part "+str(i))
  os.system("dd if="+ddif+" of=x bs="+ddbs+" count=1 skip="+str(i))
  if not os.path.getsize('x'):
    break
  os.system("adb push x /tmp/x")
  os.system("adb shell dd if=/tmp/x of="+ddof+" bs="+ddbs+" seek="+str(i))
  os.system("adb shell rm /tmp/x")
  i+=1

还原完成,重启

adb shell sync
adb shell sync
adb shell reboot

Android内存参数优化

adb shell 运行

setprop dalvik.vm.heapstartsize 4m
setprop dalvik.vm.heapgrowthlimit 128m
setprop dalvik.vm.heapsize 256m
setprop dalvik.vm.heaptargetutilization 0.9

可以先看一下默认值

getprop dalvik.vm.heapstartsize
getprop dalvik.vm.heapgrowthlimit
getprop dalvik.vm.heapsize
getprop dalvik.vm.heaptargetutilization

我这里是 5m 48m 128m 0.75