KindleFire被我变砖了

记录下我今天做了什么。

我想给Kindle编译一个自定义的内核。嗯,这件事情无论怎么想都是个高难度的事情。

首先,安装vmware 8.0,然后在vmware里面装ubuntu 11.10 64 bits

按照http://source.android.com/source/initializing.html 所写的构造编译环境。

首先,安装32位jdk
http://download.oracle.com/otn-pub/java/jdk/6u29-b11/jdk-6u29-linux-i586.bin
root@ubuntu:~# mkdir /usr/java/
root@ubuntu:~# mv jdk1.6.0_29 /usr/java/
root@ubuntu:~# ln -s /usr/java/jdk1.6.0_29 /usr/java/default
root@ubuntu:~# export PATH=$PATH:/usr/java/default/bin
root@ubuntu:~# export JAVA_HOME=/usr/java/default

Fedora/Red Hat企业版下,全局的PATH变量依然是在/etc/profile下设置的。我不知道ubuntu是怎么回事,没看懂。反正/etc/profile和/etc/profile.d中都没有找到设置PATH的代码。

然后安装必备的包:

apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline-gplv2-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils

有点搞笑,很多包的包名必须加上gplv2才行。至于吗?何苦呢。

然后安装Android SDK和NDK。

然后从这里下载Kindle Fire 6.2的更新包
https://s3.amazonaws.com/kindle-fire-updates/update-kindle-6.2_D01E_3003020.bin,解压缩得到boot.img。

下载拆分工具
wget 'http://zen-droid.googlecode.com/files/split_bootimg.pl'
chmod +x split_bootimg.pl

拆分boot.img
root@ubuntu:~# ./split_bootimg.pl boot.img
Page size: 4096 (0x00001000)
Kernel size: 3119048 (0x002f97c8)
Ramdisk size: 184843 (0x0002d20b)
Second size: 0 (0x00000000)
Board name:
Command line: console=ttyO2,115200n8 mem=463M@0x80000000 init=/init vram=5M omapfb.vram=0:5M
Writing boot.img-kernel ... complete.
Writing boot.img-ramdisk.gz ... complete.

尝试从kernel中提取.config文件

# ./extract-ikconfig ~/boot.img-kernel
extract-ikconfig: Cannot find kernel config.

失败了。/proc和kernel镜像里面都没有.config文件,所以只有自己造一个了。

然后我就想先试下用fastboot连Kindle Fire。

首先用ADB进去,设置Bootmode为0x4002。

# idme bootmode 0x4002

然后重启。

然后它就永远停留在开机画面上了。我试图用fastboot连,但是fastboot devices的输出永远是空。可能是因为我的操作系统是win7 64bit,也可能是因为fastboot.exe需要自己编译,把kindle fire的id(0x1949)加进去。总之,我相信明天我一定能查出来为什么。我可不想让我的Kindle真的拿去垫床角。

等明天连上之后,我准备先用fastboot删除掉boot和recovery这两个分区。

fastboot erase bootfastboot erase recovery

然后手动启动。

fastboot boot boot.img-kernel boot.img-ramdisk.gz

如果成功,下一步就是把上面一行的boot.img-kernel,换成我自己从源代码编译的。

此博客中的热门博文

在windows下使用llvm+clang

少写代码,多读别人写的代码

tensorflow distributed runtime初窥