怎么样才能把 Debian 部署到 MB860 上呢?三太爷参考的是这个帖子:http://bbs.gfan.com/android-5693169-1-1.html。
这个帖子和其他的帖子一样,在先决条件里提到了一样“要可以 CWM Recovery”。要知道,经过前边的折腾,咱偏偏就是没搞定自定义 Recovery。不过这困顿之际,另一个问题浮现出来,到底要干些什么事情呢,以至于非要用自定义 Recovery 来完成,难道已经在手的 root 身份还不够吗?从安装步骤上看,似乎硬件上只需要一台 root 过的手机即可,而软件的准备也只是一个 Debian 镜像文件和一个名为 easy-signed 的 ZIP 压缩包。很显然,压缩包里的货色是重点,到底有些什么呢?下载下来解开看看。
压缩包的顶级路径下,有五个目录和一个脚本文件 webtopmod.sh。既然原帖中说是要让 Recovery “安装”这个压缩包,很显然,这些包里的文件会被进行某种处理,融入到系统中去。那个名为 webtopmod.sh 的脚本文件当然很可疑,但这个名字显然不是一个通用性的名字,也就是说,如果不是在别的什么地方指定了要执行这个文件,那 Recovery 绝不应该会自行将之认作应该运行的程序(要是名字是 update.sh 到说不定有此可能)。那五个目录分别是 etc、home、opt、usr、META-INF。查看这个压缩包的奥秘时,高人其实也在,他一眼就看出这个 META-INF 的目录怕事有蹊跷,待 META-INF、com、google、android 这么一层层双击进去,眼前顿时了然,有一个名为 update-binary 的文件,一个名为 updater-script 的文件。毋庸置疑,前者是个脚本解释器,而后者则是要执行的脚本,这个脚本文件就是我们要寻找的东西。
打开脚本文件仔细查看,发现其使用某种特定语法的脚本书写而成,但相当易懂。其中调用的操作颇为有限,几乎都是在 root 下可以轻易做到的事情,有文件复制、文件移动、文件删除、目录创建、文件/目录的权限/属主设置、程序执行、分区加载/卸载、从压缩包中提取文件到指定目标路径等,另外还有一些和界面交互有关的则一概未予考虑。两相比照,三太爷这 Linux 菜鸟战战兢兢地把它翻译成了 shell 脚本,与此同时,下载帖子里提到的 Debian 镜像文件也已完成(原贴里的百度云盘链接已经失效,但其引用的英文原帖中的下载链接依然健在:http://droid.makrit.net/WebTopMOD/WebTopMOD-20110707.7z)。找来一张 16GB 的 TF 卡,把映像文件小心翼翼地解压到卡上的 WebTopMOD 目录下,原来的 updater-script 是要从压缩包里提取文件的,现在 shell 脚本解压缩就不那么方便,所以将必要的文件也都从 easy-signed.zip 中事先解压了出来,在卡上的 WebTopMOD 目录下新建了一个 install 目录,把这些文件(其实就是上文提到的 etc、home、opt、usr 四个目录和那个 webtopmod.sh 脚本文件了)仍然保持原来的目录结构不变复制过来。webtopmod.sh 脚本在 Recovery 安装的方式下会被 updater-script 所调用,而今我老人家正好借尸还魂,把根据 updater-script 改写的脚本与 webtopmod.sh 中的脚本一并整理为新的 webtopmod.sh。其完整内容见下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
#!/sbin/busybox sh echo echo This script SHOULD be run under root. echo Based on SyR89 WTMod version 0.2.5.7 echo By dandycheung, 2014-01-19 echo echo Backuping files... mkdir /osh/opt/WebTopMOD mkdir /osh/opt/WebTopMOD/backup/ mkdir /osh/opt/WebTopMOD/root/ mkdir /osh/opt/WebTopMOD/icons/ mkdir /data/home/adas/.gconf/apps/avant-window-navigator/window_manager cp "/data/home/adas/.gconf/apps/avant-window-navigator/window_manager/%gconf.xml" "/osh/opt/WebTopMOD/backup/%gconf.xml" cp /osh/etc/sudoers /osh/opt/WebTopMOD/backup/sudoers mv /osh/sbin/tomoyo-init /osh/opt/WebTopMOD/backup/tomoyo-init mv /osh/sbin/tomoyo-start /osh/opt/WebTopMOD/backup/tomoyo-start echo Copying files... cp usr/sbin/linux /osh/usr/sbin/linux cp usr/bin/lxterminal /osh/usr/bin/lxterminal cp usr/bin/xmessage /osh/usr/bin/xmessage cp "home/adas/.gconf/apps/avant-window-navigator/window_manager/%gconf.xml" "/data/home/adas/.gconf/apps/avant-window-navigator/window_manager/%gconf.xml" cp etc/sudoers /osh/etc/sudoers cp usr/share/applications/linux.desktop /osh/usr/share/applications/linux.desktop cp usr/share/applications/leafpad.desktop /osh/usr/share/applications/leafpad.desktop cp opt/WebTopMOD/icons/linux.png /osh/opt/WebTopMOD/icons/linux.png echo Setting proper permissions... chown 5000.5000 /osh/usr/sbin/linux chmod 755 /osh/usr/sbin/linux chown 5000.5000 /osh/usr/bin/lxterminal chmod 755 /osh/usr/bin/lxterminal chown 5000.5000 /osh/usr/bin/xmessage chmod 755 /osh/usr/bin/xmessage chown 0.0 /osh/etc/sudoers chmod 440 /osh/etc/sudoers chown 0.0 /osh/usr/share/applications/linux.desktop chmod 644 /osh/usr/share/applications/linux.desktop chown 0.0 /osh/usr/share/applications/leafpad.desktop chmod 644 /osh/usr/share/applications/leafpad.desktop chown 5000.5000 /osh/opt/WebTopMOD/ chmod 777 /osh/opt/WebTopMOD/ chown 5000.5000 "/data/home/adas/.gconf/apps/avant-window-navigator/window_manager/" chmod 700 "/data/home/adas/.gconf/apps/avant-window-navigator/window_manager/" chown 5000.5000 "/data/home/adas/.gconf/apps/avant-window-navigator/window_manager/%gconf.xml" chmod 700 "/data/home/adas/.gconf/apps/avant-window-navigator/window_manager/%gconf.xml" echo echo Done! |
至此,TF 卡准备完工,将之插入 MB860,重启 MB860,然后将之 USB 连接到电脑。运行 adb shell,su 为 root 身份,将路径 cd /sdcard-ext/install,按道理讲,直接运行 ./webtopmod.sh 即可。不过说来不怕大家见笑,三太爷这脚本写完之后,着实生怕直接运行会有差池,事实上是将其中所有代码逐行复制到 adb shell 里运行的(echo 行除外),所幸百分之百成功。这里,如果有哪位读者君是跟着实际操作的,请补上三太爷当时漏了的一个步骤:重启手机。
把 MB860 插入笔记本底座(或者多媒体底座、或者已经破解之后可以正常进入 WebTop 模式的 HDMI 设备),则任务栏的右侧,leafpad、lxterminal 以及 Linux 这三个图标应该已经好端端地显示出来了。点击 Linux 的那个企鹅图标,则以下步骤与原帖完全一致,照做即可。
不过目前三太爷的 MB860 状态是,xfce4 安装完成,但 sudo xfce4-session 会导致手机重启。cat /etc/debian 显示 Debian 版本为 7.8 是不是太新了点?有待和高人抽空一起探讨。